{"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> |\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 "../version.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a01492_source.html\">../sdc/types.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00734_source.html\">../sdc/options.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a01495_source.html\">../vtr/types.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00695_source.html\">../vtr/level.h</a>"</code><br />\n-<code>#include <vector></code><br />\n+<code>#include <cstddef></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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01193.html\">CudaVertexBuffer</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00909\" id=\"r_a00909\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 "../sdc/types.h"</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"preprocessor\">#include "../sdc/options.h"</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../vtr/types.h"</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"preprocessor\">#include "../vtr/level.h"</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 <vector></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> & parent, Level & child, Sdc::Options <span class=\"keyword\">const</span>& 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>& 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>& 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& 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 "../version.h"</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 <cstddef></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> & 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\">// "sparse": 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\">// "minimal topology": 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 "full topology" 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'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 "transitional" 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 "transitional" 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 > 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> & 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> & 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> & 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 & 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 & 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 & 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> & 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> & 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> & 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 & 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 & 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 & 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>& 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 "Array" 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<ChildTag> _childFaceTag;</div>\n-<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\"> 394</span> std::vector<ChildTag> _childEdgeTag;</div>\n-<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\"> 395</span> std::vector<ChildTag> _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<SparseTag> _parentFaceTag;</div>\n-<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\"> 401</span> std::vector<SparseTag> _parentEdgeTag;</div>\n-<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\"> 402</span> std::vector<SparseTag> _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<FVarRefinement*> _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>(&_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>(&_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>(&_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>(&_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>(&_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>(&_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< Index > 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< Index > 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< Index > 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> |\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 "../version.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a01495_source.html\">../vtr/types.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00674_source.html\">../vtr/refinement.h</a>"</code><br />\n+<code>#include "../osd/nonCopyable.h"</code><br />\n+<code>#include "<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>"</code><br />\n <code>#include <vector></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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01189.html\">CudaPatchTable</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00909\" id=\"r_a00909\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 "../vtr/types.h"</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"preprocessor\">#include "../vtr/refinement.h"</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 <vector></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 "selection" 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 "selection" 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 "../version.h"</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 "../osd/nonCopyable.h"</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../osd/types.h"</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 <vector></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<CudaPatchTable> {</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& refine) : _refine(&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& refine) { _refine = &refine; }</div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"> 64</span> Refinement& 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->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->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->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->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->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->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<void *> <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<void *> <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<void *> <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< void * > _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< void * > _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< void * > _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> |\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 "../version.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a01492_source.html\">../sdc/types.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00731_source.html\">../sdc/crease.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a01495_source.html\">../vtr/types.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00674_source.html\">../vtr/refinement.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00689_source.html\">../vtr/fvarLevel.h</a>"</code><br />\n-<code>#include <vector></code><br />\n-<code>#include <cassert></code><br />\n-<code>#include <cstring></code><br />\n+<code>#include <cstddef></code><br />\n+<code>#include "<a class=\"el\" href=\"a00722_source.html\">../osd/opengl.h</a>"</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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01169.html\">CpuGLVertexBuffer</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00909\" id=\"r_a00909\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 "../sdc/types.h"</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"preprocessor\">#include "../sdc/crease.h"</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../vtr/types.h"</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"preprocessor\">#include "../vtr/refinement.h"</span></div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span><span class=\"preprocessor\">#include "../vtr/fvarLevel.h"</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 <vector></span></div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span><span class=\"preprocessor\">#include <cassert></span></div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span><span class=\"preprocessor\">#include <cstring></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 "channel". 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>& refinement, FVarLevel& parent, FVarLevel& 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 "../version.h"</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 <cstddef></span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../osd/opengl.h"</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> & _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> & _parentLevel;</div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"> 97</span> FVarLevel <span class=\"keyword\">const</span> & _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> & _childLevel;</div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"> 100</span> FVarLevel & _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 "source" rather than "sibling":</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<LocalIndex> _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> |\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 "../version.h"</code><br />\n-<code>#include <cassert></code><br />\n+<code>#include "<a class=\"el\" href=\"a00722_source.html\">../osd/opengl.h</a>"</code><br />\n+<code>#include <cstddef></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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01353.html\">ConstArray< TYPE ></a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01357.html\">Array< TYPE ></a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01245.html\">GLVertexBuffer</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00909\" id=\"r_a00909\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 <cassert></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 "../version.h"</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 "../osd/opengl.h"</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include <cstddef></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'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<>, 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> <<span class=\"keyword\">typename</span> TYPE></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>& <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& <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>>=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\">"FindIndexIn4Tuple() did not find expected value!"</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<<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> <<span class=\"keyword\">typename</span> TYPE></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><TYPE> {</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>& <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& <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><TYPE>() { }</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><TYPE>(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<TYPE>::_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<</span><a class=\"code hl_typedef\" href=\"a01357.html#a9025ff89fc9afe7d9054abb58123bbda\">reference</a><span class=\"keyword\">></span>(<a class=\"code hl_class\" href=\"a01353.html\">ConstArray<TYPE>::_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<</span><a class=\"code hl_typedef\" href=\"a01357.html#adfa2f8bb0c1215f3b0ef976f122faf0d\">iterator</a><span class=\"keyword\">></span>(<a class=\"code hl_class\" href=\"a01353.html\">ConstArray<TYPE>::_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<</span><a class=\"code hl_typedef\" href=\"a01357.html#adfa2f8bb0c1215f3b0ef976f122faf0d\">iterator</a><span class=\"keyword\">></span>(<a class=\"code hl_class\" href=\"a01353.html\">ConstArray<TYPE>::_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<TYPE>::_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 & 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 & 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 & 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 & 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> |\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 "../version.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a01492_source.html\">../sdc/types.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00731_source.html\">../sdc/crease.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00734_source.html\">../sdc/options.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a01495_source.html\">../vtr/types.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00695_source.html\">../vtr/level.h</a>"</code><br />\n-<code>#include <vector></code><br />\n-<code>#include <cassert></code><br />\n-<code>#include <cstring></code><br />\n+<code>#include "<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00764_source.html\">../osd/bufferDescriptor.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00698_source.html\">../osd/mtlCommon.h</a>"</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  </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\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00909\" id=\"r_a00909\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 "../sdc/types.h"</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"preprocessor\">#include "../sdc/crease.h"</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../sdc/options.h"</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"preprocessor\">#include "../vtr/types.h"</span></div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span><span class=\"preprocessor\">#include "../vtr/level.h"</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 <vector></span></div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span><span class=\"preprocessor\">#include <cassert></span></div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span><span class=\"preprocessor\">#include <cstring></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 "../version.h"</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 "../osd/types.h"</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../osd/bufferDescriptor.h"</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"preprocessor\">#include "../osd/mtlCommon.h"</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 "face-varying channel" 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 "values" and "face-values". The</span></div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"> 53</span><span class=\"comment\">// "values" 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'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'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><<span class=\"keyword\">typename</span> STENCIL_TABLE, <span class=\"keyword\">typename</span> DEVICE_CONTEXT></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<MTLBuffer> <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<MTLBuffer> <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<MTLBuffer> <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<MTLBuffer> <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<MTLBuffer> <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<MTLBuffer> <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<MTLBuffer> <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<MTLBuffer> <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<MTLBuffer> <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<MTLBuffer> _sizesBuffer;</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"> 79</span> id<MTLBuffer> _offsetsBuffer;</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"> 80</span> id<MTLBuffer> _indicesBuffer;</div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"> 81</span> id<MTLBuffer> _weightsBuffer;</div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"> 82</span> id<MTLBuffer> _duWeightsBuffer;</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"> 83</span> id<MTLBuffer> _dvWeightsBuffer;</div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"> 84</span> id<MTLBuffer> _duuWeightsBuffer;</div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"> 85</span> id<MTLBuffer> _duvWeightsBuffer;</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"> 86</span> id<MTLBuffer> _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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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 && !_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>, &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(&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<ValueTag> ConstValueTagArray;</div>\n-<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\"> 151</span> <span class=\"keyword\">typedef</span> Vtr::Array<ValueTag> 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 "end faces" 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<CreaseEndPair> ConstCreaseEndPairArray;</div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\"> 164</span> <span class=\"keyword\">typedef</span> Vtr::Array<CreaseEndPair> 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>& 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>& 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>& 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<Sibling>& 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> & _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<Index> _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<ETag> _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<Sibling> _vertSiblingCounts;</div>\n-<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\"> 285</span> std::vector<int> _vertSiblingOffsets;</div>\n-<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\"> 286</span> std::vector<Sibling> _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<Index> _vertValueIndices;</div>\n-<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\"> 290</span> std::vector<ValueTag> _vertValueTags;</div>\n-<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\"> 291</span> std::vector<CreaseEndPair> _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>(&_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>(&_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(&_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(&_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>(&_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>(&_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(&_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(&_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(&_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(&_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() > 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->_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->_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->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->isCrease() || this->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->_infIrregular && !this->_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->_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->_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->_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< LocalIndex > 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< LocalIndex > 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< Index > 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< Index > 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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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-><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-><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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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> &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> &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-><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-><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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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> &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> &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> &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> &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> &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-><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-><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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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->BindMTLBuffer(context), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\"> 383</span> dstBuffer->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->GetSizesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\"> 387</span> stencilTable->GetOffsetsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\"> 388</span> stencilTable->GetIndicesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00389\" name=\"l00389\"></a><span class=\"lineno\"> 389</span> stencilTable->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->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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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> &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> &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->BindMTLBuffer(context), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00439\" name=\"l00439\"></a><span class=\"lineno\"> 439</span> dstBuffer->BindMTLBuffer(context), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00440\" name=\"l00440\"></a><span class=\"lineno\"> 440</span> duBuffer->BindMTLBuffer(context), duDesc,</div>\n+<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\"> 441</span> dvBuffer->BindMTLBuffer(context), dvDesc,</div>\n+<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\"> 442</span> stencilTable->GetSizesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00443\" name=\"l00443\"></a><span class=\"lineno\"> 443</span> stencilTable->GetOffsetsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\"> 444</span> stencilTable->GetIndicesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00445\" name=\"l00445\"></a><span class=\"lineno\"> 445</span> stencilTable->GetWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\"> 446</span> stencilTable->GetDuWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00447\" name=\"l00447\"></a><span class=\"lineno\"> 447</span> stencilTable->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->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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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> &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> &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> &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> &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> &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->BindMTLBuffer(context), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\"> 516</span> dstBuffer->BindMTLBuffer(context), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\"> 517</span> duBuffer->BindMTLBuffer(context), duDesc,</div>\n+<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\"> 518</span> dvBuffer->BindMTLBuffer(context), dvDesc,</div>\n+<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\"> 519</span> duuBuffer->BindMTLBuffer(context), duuDesc,</div>\n+<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\"> 520</span> duvBuffer->BindMTLBuffer(context), duvDesc,</div>\n+<div class=\"line\"><a id=\"l00521\" name=\"l00521\"></a><span class=\"lineno\"> 521</span> dvvBuffer->BindMTLBuffer(context), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00522\" name=\"l00522\"></a><span class=\"lineno\"> 522</span> stencilTable->GetSizesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00523\" name=\"l00523\"></a><span class=\"lineno\"> 523</span> stencilTable->GetOffsetsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00524\" name=\"l00524\"></a><span class=\"lineno\"> 524</span> stencilTable->GetIndicesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00525\" name=\"l00525\"></a><span class=\"lineno\"> 525</span> stencilTable->GetWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00526\" name=\"l00526\"></a><span class=\"lineno\"> 526</span> stencilTable->GetDuWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00527\" name=\"l00527\"></a><span class=\"lineno\"> 527</span> stencilTable->GetDvWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00528\" name=\"l00528\"></a><span class=\"lineno\"> 528</span> stencilTable->GetDuuWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00529\" name=\"l00529\"></a><span class=\"lineno\"> 529</span> stencilTable->GetDuvWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00530\" name=\"l00530\"></a><span class=\"lineno\"> 530</span> stencilTable->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->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<MTLBuffer> srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &srcDesc,</div>\n+<div class=\"line\"><a id=\"l00575\" name=\"l00575\"></a><span class=\"lineno\"> 575</span> id<MTLBuffer> dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &dstDesc,</div>\n+<div class=\"line\"><a id=\"l00576\" name=\"l00576\"></a><span class=\"lineno\"> 576</span> id<MTLBuffer> duBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &duDesc,</div>\n+<div class=\"line\"><a id=\"l00577\" name=\"l00577\"></a><span class=\"lineno\"> 577</span> id<MTLBuffer> dvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &dvDesc,</div>\n+<div class=\"line\"><a id=\"l00578\" name=\"l00578\"></a><span class=\"lineno\"> 578</span> id<MTLBuffer> sizesBuffer,</div>\n+<div class=\"line\"><a id=\"l00579\" name=\"l00579\"></a><span class=\"lineno\"> 579</span> id<MTLBuffer> offsetsBuffer,</div>\n+<div class=\"line\"><a id=\"l00580\" name=\"l00580\"></a><span class=\"lineno\"> 580</span> id<MTLBuffer> indicesBuffer,</div>\n+<div class=\"line\"><a id=\"l00581\" name=\"l00581\"></a><span class=\"lineno\"> 581</span> id<MTLBuffer> weightsBuffer,</div>\n+<div class=\"line\"><a id=\"l00582\" name=\"l00582\"></a><span class=\"lineno\"> 582</span> id<MTLBuffer> duWeightsBuffer,</div>\n+<div class=\"line\"><a id=\"l00583\" name=\"l00583\"></a><span class=\"lineno\"> 583</span> id<MTLBuffer> 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<MTLBuffer> srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &srcDesc,</div>\n+<div class=\"line\"><a id=\"l00645\" name=\"l00645\"></a><span class=\"lineno\"> 645</span> id<MTLBuffer> dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &dstDesc,</div>\n+<div class=\"line\"><a id=\"l00646\" name=\"l00646\"></a><span class=\"lineno\"> 646</span> id<MTLBuffer> duBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &duDesc,</div>\n+<div class=\"line\"><a id=\"l00647\" name=\"l00647\"></a><span class=\"lineno\"> 647</span> id<MTLBuffer> dvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &dvDesc,</div>\n+<div class=\"line\"><a id=\"l00648\" name=\"l00648\"></a><span class=\"lineno\"> 648</span> id<MTLBuffer> duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &duuDesc,</div>\n+<div class=\"line\"><a id=\"l00649\" name=\"l00649\"></a><span class=\"lineno\"> 649</span> id<MTLBuffer> duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &duvDesc,</div>\n+<div class=\"line\"><a id=\"l00650\" name=\"l00650\"></a><span class=\"lineno\"> 650</span> id<MTLBuffer> dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00651\" name=\"l00651\"></a><span class=\"lineno\"> 651</span> id<MTLBuffer> sizesBuffer,</div>\n+<div class=\"line\"><a id=\"l00652\" name=\"l00652\"></a><span class=\"lineno\"> 652</span> id<MTLBuffer> offsetsBuffer,</div>\n+<div class=\"line\"><a id=\"l00653\" name=\"l00653\"></a><span class=\"lineno\"> 653</span> id<MTLBuffer> indicesBuffer,</div>\n+<div class=\"line\"><a id=\"l00654\" name=\"l00654\"></a><span class=\"lineno\"> 654</span> id<MTLBuffer> weightsBuffer,</div>\n+<div class=\"line\"><a id=\"l00655\" name=\"l00655\"></a><span class=\"lineno\"> 655</span> id<MTLBuffer> duWeightsBuffer,</div>\n+<div class=\"line\"><a id=\"l00656\" name=\"l00656\"></a><span class=\"lineno\"> 656</span> id<MTLBuffer> dvWeightsBuffer,</div>\n+<div class=\"line\"><a id=\"l00657\" name=\"l00657\"></a><span class=\"lineno\"> 657</span> id<MTLBuffer> duuWeightsBuffer,</div>\n+<div class=\"line\"><a id=\"l00658\" name=\"l00658\"></a><span class=\"lineno\"> 658</span> id<MTLBuffer> duvWeightsBuffer,</div>\n+<div class=\"line\"><a id=\"l00659\" name=\"l00659\"></a><span class=\"lineno\"> 659</span> id<MTLBuffer> 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> <<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></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> &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> &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-><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-><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> <<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></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> &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> &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> &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> &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-><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-><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> <<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></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> &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> &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> &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> &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> &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> &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> &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-><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-><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> <<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></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> &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> &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->BindMTLBuffer(context), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00975\" name=\"l00975\"></a><span class=\"lineno\"> 975</span> dstBuffer->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->BindMTLBuffer(context),</div>\n+<div class=\"line\"><a id=\"l00980\" name=\"l00980\"></a><span class=\"lineno\"> 980</span> patchTable->GetPatchArrays(),</div>\n+<div class=\"line\"><a id=\"l00981\" name=\"l00981\"></a><span class=\"lineno\"> 981</span> patchTable->GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00982\" name=\"l00982\"></a><span class=\"lineno\"> 982</span> patchTable->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> <<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></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> &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> &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> &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> &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->BindMTLBuffer(context), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01036\" name=\"l01036\"></a><span class=\"lineno\"> 1036</span> dstBuffer->BindMTLBuffer(context), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01037\" name=\"l01037\"></a><span class=\"lineno\"> 1037</span> duBuffer->BindMTLBuffer(context), duDesc,</div>\n+<div class=\"line\"><a id=\"l01038\" name=\"l01038\"></a><span class=\"lineno\"> 1038</span> dvBuffer->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->BindMTLBuffer(context),</div>\n+<div class=\"line\"><a id=\"l01041\" name=\"l01041\"></a><span class=\"lineno\"> 1041</span> patchTable->GetPatchArrays(),</div>\n+<div class=\"line\"><a id=\"l01042\" name=\"l01042\"></a><span class=\"lineno\"> 1042</span> patchTable->GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l01043\" name=\"l01043\"></a><span class=\"lineno\"> 1043</span> patchTable->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> <<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></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> &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> &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> &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> &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> &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> &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> &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->BindMTLBuffer(context), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01118\" name=\"l01118\"></a><span class=\"lineno\"> 1118</span> dstBuffer->BindMTLBuffer(context), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01119\" name=\"l01119\"></a><span class=\"lineno\"> 1119</span> duBuffer->BindMTLBuffer(context), duDesc,</div>\n+<div class=\"line\"><a id=\"l01120\" name=\"l01120\"></a><span class=\"lineno\"> 1120</span> dvBuffer->BindMTLBuffer(context), dvDesc,</div>\n+<div class=\"line\"><a id=\"l01121\" name=\"l01121\"></a><span class=\"lineno\"> 1121</span> duuBuffer->BindMTLBuffer(context), duuDesc,</div>\n+<div class=\"line\"><a id=\"l01122\" name=\"l01122\"></a><span class=\"lineno\"> 1122</span> duvBuffer->BindMTLBuffer(context), duvDesc,</div>\n+<div class=\"line\"><a id=\"l01123\" name=\"l01123\"></a><span class=\"lineno\"> 1123</span> dvvBuffer->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->BindMTLBuffer(context),</div>\n+<div class=\"line\"><a id=\"l01126\" name=\"l01126\"></a><span class=\"lineno\"> 1126</span> patchTable->GetPatchArrays(),</div>\n+<div class=\"line\"><a id=\"l01127\" name=\"l01127\"></a><span class=\"lineno\"> 1127</span> patchTable->GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l01128\" name=\"l01128\"></a><span class=\"lineno\"> 1128</span> patchTable->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<MTLBuffer> srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &srcDesc,</div>\n+<div class=\"line\"><a id=\"l01133\" name=\"l01133\"></a><span class=\"lineno\"> 1133</span> id<MTLBuffer> dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &dstDesc,</div>\n+<div class=\"line\"><a id=\"l01134\" name=\"l01134\"></a><span class=\"lineno\"> 1134</span> id<MTLBuffer> duBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &duDesc,</div>\n+<div class=\"line\"><a id=\"l01135\" name=\"l01135\"></a><span class=\"lineno\"> 1135</span> id<MTLBuffer> dvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &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<MTLBuffer> 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> &patchArrays,</div>\n+<div class=\"line\"><a id=\"l01139\" name=\"l01139\"></a><span class=\"lineno\"> 1139</span> id<MTLBuffer> patchIndexBuffer,</div>\n+<div class=\"line\"><a id=\"l01140\" name=\"l01140\"></a><span class=\"lineno\"> 1140</span> id<MTLBuffer> 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<MTLBuffer> srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &srcDesc,</div>\n+<div class=\"line\"><a id=\"l01144\" name=\"l01144\"></a><span class=\"lineno\"> 1144</span> id<MTLBuffer> dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &dstDesc,</div>\n+<div class=\"line\"><a id=\"l01145\" name=\"l01145\"></a><span class=\"lineno\"> 1145</span> id<MTLBuffer> duBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &duDesc,</div>\n+<div class=\"line\"><a id=\"l01146\" name=\"l01146\"></a><span class=\"lineno\"> 1146</span> id<MTLBuffer> dvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &dvDesc,</div>\n+<div class=\"line\"><a id=\"l01147\" name=\"l01147\"></a><span class=\"lineno\"> 1147</span> id<MTLBuffer> duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &duuDesc,</div>\n+<div class=\"line\"><a id=\"l01148\" name=\"l01148\"></a><span class=\"lineno\"> 1148</span> id<MTLBuffer> duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &duvDesc,</div>\n+<div class=\"line\"><a id=\"l01149\" name=\"l01149\"></a><span class=\"lineno\"> 1149</span> id<MTLBuffer> dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &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<MTLBuffer> 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> &patchArrays,</div>\n+<div class=\"line\"><a id=\"l01153\" name=\"l01153\"></a><span class=\"lineno\"> 1153</span> id<MTLBuffer> patchIndexBuffer,</div>\n+<div class=\"line\"><a id=\"l01154\" name=\"l01154\"></a><span class=\"lineno\"> 1154</span> id<MTLBuffer> 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> <<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></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> &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> &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-><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-><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> <<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></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> &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> &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->BindMTLBuffer(deviceContext), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01266\" name=\"l01266\"></a><span class=\"lineno\"> 1266</span> dstBuffer->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->BindMTLBuffer(deviceContext),</div>\n+<div class=\"line\"><a id=\"l01271\" name=\"l01271\"></a><span class=\"lineno\"> 1271</span> patchTable->GetVaryingPatchArrays(),</div>\n+<div class=\"line\"><a id=\"l01272\" name=\"l01272\"></a><span class=\"lineno\"> 1272</span> patchTable->GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l01273\" name=\"l01273\"></a><span class=\"lineno\"> 1273</span> patchTable->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> <<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></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> &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> &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> &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> &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-><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-><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> <<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></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> &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> &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> &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> &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->BindMTLBuffer(deviceContext), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01418\" name=\"l01418\"></a><span class=\"lineno\"> 1418</span> dstBuffer->BindMTLBuffer(deviceContext), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01419\" name=\"l01419\"></a><span class=\"lineno\"> 1419</span> duBuffer->BindMTLBuffer(deviceContext), duDesc,</div>\n+<div class=\"line\"><a id=\"l01420\" name=\"l01420\"></a><span class=\"lineno\"> 1420</span> dvBuffer->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->BindMTLBuffer(deviceContext),</div>\n+<div class=\"line\"><a id=\"l01423\" name=\"l01423\"></a><span class=\"lineno\"> 1423</span> patchTable->GetVaryingPatchArrays(),</div>\n+<div class=\"line\"><a id=\"l01424\" name=\"l01424\"></a><span class=\"lineno\"> 1424</span> patchTable->GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l01425\" name=\"l01425\"></a><span class=\"lineno\"> 1425</span> patchTable->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> <<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></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> &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> &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> &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> &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> &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> &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> &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-><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-><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> <<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></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> &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> &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> &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> &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> &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> &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> &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->BindMTLBuffer(deviceContext), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01620\" name=\"l01620\"></a><span class=\"lineno\"> 1620</span> dstBuffer->BindMTLBuffer(deviceContext), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01621\" name=\"l01621\"></a><span class=\"lineno\"> 1621</span> duBuffer->BindMTLBuffer(deviceContext), duDesc,</div>\n+<div class=\"line\"><a id=\"l01622\" name=\"l01622\"></a><span class=\"lineno\"> 1622</span> dvBuffer->BindMTLBuffer(deviceContext), dvDesc,</div>\n+<div class=\"line\"><a id=\"l01623\" name=\"l01623\"></a><span class=\"lineno\"> 1623</span> duuBuffer->BindMTLBuffer(deviceContext), duuDesc,</div>\n+<div class=\"line\"><a id=\"l01624\" name=\"l01624\"></a><span class=\"lineno\"> 1624</span> duvBuffer->BindMTLBuffer(deviceContext), duvDesc,</div>\n+<div class=\"line\"><a id=\"l01625\" name=\"l01625\"></a><span class=\"lineno\"> 1625</span> dvvBuffer->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->BindMTLBuffer(deviceContext),</div>\n+<div class=\"line\"><a id=\"l01628\" name=\"l01628\"></a><span class=\"lineno\"> 1628</span> patchTable->GetVaryingPatchArrays(),</div>\n+<div class=\"line\"><a id=\"l01629\" name=\"l01629\"></a><span class=\"lineno\"> 1629</span> patchTable->GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l01630\" name=\"l01630\"></a><span class=\"lineno\"> 1630</span> patchTable->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> <<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></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> &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> &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-><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-><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> <<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></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> &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> &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->BindMTLBuffer(deviceContext), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01752\" name=\"l01752\"></a><span class=\"lineno\"> 1752</span> dstBuffer->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->BindMTLBuffer(deviceContext),</div>\n+<div class=\"line\"><a id=\"l01757\" name=\"l01757\"></a><span class=\"lineno\"> 1757</span> patchTable->GetFVarPatchArrays(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01758\" name=\"l01758\"></a><span class=\"lineno\"> 1758</span> patchTable->GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01759\" name=\"l01759\"></a><span class=\"lineno\"> 1759</span> patchTable->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> <<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></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> &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> &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> &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> &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-><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-><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> <<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></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> &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> &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> &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> &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->BindMTLBuffer(deviceContext), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01912\" name=\"l01912\"></a><span class=\"lineno\"> 1912</span> dstBuffer->BindMTLBuffer(deviceContext), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01913\" name=\"l01913\"></a><span class=\"lineno\"> 1913</span> duBuffer->BindMTLBuffer(deviceContext), duDesc,</div>\n+<div class=\"line\"><a id=\"l01914\" name=\"l01914\"></a><span class=\"lineno\"> 1914</span> dvBuffer->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->BindMTLBuffer(deviceContext),</div>\n+<div class=\"line\"><a id=\"l01917\" name=\"l01917\"></a><span class=\"lineno\"> 1917</span> patchTable->GetFVarPatchArrays(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01918\" name=\"l01918\"></a><span class=\"lineno\"> 1918</span> patchTable->GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01919\" name=\"l01919\"></a><span class=\"lineno\"> 1919</span> patchTable->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> <<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></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> &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> &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> &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> &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> &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> &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> &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-><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-><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> <<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></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> &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> &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> &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> &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> &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> &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> &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->BindMTLBuffer(deviceContext), srcDesc,</div>\n+<div class=\"line\"><a id=\"l02121\" name=\"l02121\"></a><span class=\"lineno\"> 2121</span> dstBuffer->BindMTLBuffer(deviceContext), dstDesc,</div>\n+<div class=\"line\"><a id=\"l02122\" name=\"l02122\"></a><span class=\"lineno\"> 2122</span> duBuffer->BindMTLBuffer(deviceContext), duDesc,</div>\n+<div class=\"line\"><a id=\"l02123\" name=\"l02123\"></a><span class=\"lineno\"> 2123</span> dvBuffer->BindMTLBuffer(deviceContext), dvDesc,</div>\n+<div class=\"line\"><a id=\"l02124\" name=\"l02124\"></a><span class=\"lineno\"> 2124</span> duuBuffer->BindMTLBuffer(deviceContext), duuDesc,</div>\n+<div class=\"line\"><a id=\"l02125\" name=\"l02125\"></a><span class=\"lineno\"> 2125</span> duvBuffer->BindMTLBuffer(deviceContext), duvDesc,</div>\n+<div class=\"line\"><a id=\"l02126\" name=\"l02126\"></a><span class=\"lineno\"> 2126</span> dvvBuffer->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->BindMTLBuffer(deviceContext),</div>\n+<div class=\"line\"><a id=\"l02129\" name=\"l02129\"></a><span class=\"lineno\"> 2129</span> patchTable->GetFVarPatchArrays(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l02130\" name=\"l02130\"></a><span class=\"lineno\"> 2130</span> patchTable->GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l02131\" name=\"l02131\"></a><span class=\"lineno\"> 2131</span> patchTable->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> &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> &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> &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> &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> &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> &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> &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<MTLLibrary> _computeLibrary;</div>\n+<div class=\"line\"><a id=\"l02153\" name=\"l02153\"></a><span class=\"lineno\"> 2153</span> id<MTLComputePipelineState> _evalStencils;</div>\n+<div class=\"line\"><a id=\"l02154\" name=\"l02154\"></a><span class=\"lineno\"> 2154</span> id<MTLComputePipelineState> _evalPatches;</div>\n+<div class=\"line\"><a id=\"l02155\" name=\"l02155\"></a><span class=\"lineno\"> 2155</span> id<MTLBuffer> _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< PatchArray > 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< MTLBuffer > 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< MTLBuffer > 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< MTLBuffer > 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< MTLBuffer > 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< MTLBuffer > 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< MTLBuffer > 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< MTLBuffer > 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< MTLBuffer > 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< MTLBuffer > 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< MTLBuffer > srcBuffer, BufferDescriptor const &srcDesc, id< MTLBuffer > dstBuffer, BufferDescriptor const &dstDesc, id< MTLBuffer > duBuffer, BufferDescriptor const &duDesc, id< MTLBuffer > dvBuffer, BufferDescriptor const &dvDesc, id< MTLBuffer > duuBuffer, BufferDescriptor const &duuDesc, id< MTLBuffer > duvBuffer, BufferDescriptor const &duvDesc, id< MTLBuffer > dvvBuffer, BufferDescriptor const &dvvDesc, id< MTLBuffer > sizesBuffer, id< MTLBuffer > offsetsBuffer, id< MTLBuffer > indicesBuffer, id< MTLBuffer > weightsBuffer, id< MTLBuffer > duWeightsBuffer, id< MTLBuffer > dvWeightsBuffer, id< MTLBuffer > duuWeightsBuffer, id< MTLBuffer > duvWeightsBuffer, id< MTLBuffer > 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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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< MTLBuffer > srcBuffer, BufferDescriptor const &srcDesc, id< MTLBuffer > dstBuffer, BufferDescriptor const &dstDesc, id< MTLBuffer > duBuffer, BufferDescriptor const &duDesc, id< MTLBuffer > dvBuffer, BufferDescriptor const &dvDesc, id< MTLBuffer > duuBuffer, BufferDescriptor const &duuDesc, id< MTLBuffer > duvBuffer, BufferDescriptor const &duvDesc, id< MTLBuffer > dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords, id< MTLBuffer > patchCoordsBuffer, const PatchArrayVector &patchArrays, id< MTLBuffer > patchIndexBuffer, id< MTLBuffer > 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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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< MTLBuffer > srcBuffer, BufferDescriptor const &srcDesc, id< MTLBuffer > dstBuffer, BufferDescriptor const &dstDesc, id< MTLBuffer > duBuffer, BufferDescriptor const &duDesc, id< MTLBuffer > dvBuffer, BufferDescriptor const &dvDesc, id< MTLBuffer > sizesBuffer, id< MTLBuffer > offsetsBuffer, id< MTLBuffer > indicesBuffer, id< MTLBuffer > weightsBuffer, id< MTLBuffer > duWeightsBuffer, id< MTLBuffer > 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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &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 &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, BufferDescriptor const &duuDesc, BufferDescriptor const &duvDesc, BufferDescriptor const &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 &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, BufferDescriptor const &duuDesc, BufferDescriptor const &duvDesc, BufferDescriptor const &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< MTLBuffer > srcBuffer, BufferDescriptor const &srcDesc, id< MTLBuffer > dstBuffer, BufferDescriptor const &dstDesc, id< MTLBuffer > duBuffer, BufferDescriptor const &duDesc, id< MTLBuffer > dvBuffer, BufferDescriptor const &dvDesc, int numPatchCoords, id< MTLBuffer > patchCoordsBuffer, const PatchArrayVector &patchArrays, id< MTLBuffer > patchIndexBuffer, id< MTLBuffer > 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> |\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 "../version.h"</code><br />\n+<code>#include <vector></code><br />\n+<code>#include "<a class=\"el\" href=\"a00764_source.html\">../osd/bufferDescriptor.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>"</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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01181.html\">CudaStencilTable</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00909\" id=\"r_a00909\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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> <<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></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<TYPE,SIZE,POD_TYPE> &) { }</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"> 78</span> StackBuffer& operator=(<span class=\"keyword\">const</span> StackBuffer<TYPE,SIZE,POD_TYPE> &) { <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> <<span class=\"keyword\">typename</span> TYPE, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> SIZE, <span class=\"keywordtype\">bool</span> POD_TYPE></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<TYPE,SIZE,POD_TYPE>::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\">// "suitably aligned" 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<</span><span class=\"keywordtype\">char</span>*<span class=\"keyword\">></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<</span>TYPE*<span class=\"keyword\">></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> <<span class=\"keyword\">typename</span> TYPE, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> SIZE, <span class=\"keywordtype\">bool</span> POD_TYPE></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<TYPE,SIZE,POD_TYPE>::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<</span>TYPE*<span class=\"keyword\">></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> <<span class=\"keyword\">typename</span> TYPE, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> SIZE, <span class=\"keywordtype\">bool</span> POD_TYPE></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<TYPE,SIZE,POD_TYPE>::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 "../version.h"</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 <vector></span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../osd/bufferDescriptor.h"</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"preprocessor\">#include "../osd/types.h"</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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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 < _size; ++i) {</div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"> 134</span> (void) <span class=\"keyword\">new</span> (&_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> <<span class=\"keyword\">typename</span> TYPE, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> SIZE, <span class=\"keywordtype\">bool</span> POD_TYPE></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<TYPE,SIZE,POD_TYPE>::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 < _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->BindCudaBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"> 136</span> dstBuffer->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->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->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->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->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->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> <<span class=\"keyword\">typename</span> TYPE, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> SIZE, <span class=\"keywordtype\">bool</span> POD_TYPE></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<TYPE,SIZE,POD_TYPE>::StackBuffer() :</div>\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\"> 152</span> _data(reinterpret_cast<TYPE*>(_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> <<span class=\"keyword\">typename</span> TYPE, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> SIZE, <span class=\"keywordtype\">bool</span> POD_TYPE></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<TYPE,SIZE,POD_TYPE>::StackBuffer(size_type size) :</div>\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\"> 162</span> _data(reinterpret_cast<TYPE*>(_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 > 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> <<span class=\"keyword\">typename</span> TYPE, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> SIZE, <span class=\"keywordtype\">bool</span> POD_TYPE></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<TYPE,SIZE,POD_TYPE>::~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> <<span class=\"keyword\">typename</span> TYPE, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> SIZE, <span class=\"keywordtype\">bool</span> POD_TYPE></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<TYPE,SIZE,POD_TYPE>::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 > _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> <<span class=\"keyword\">typename</span> TYPE, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> SIZE, <span class=\"keywordtype\">bool</span> POD_TYPE></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<TYPE,SIZE,POD_TYPE>::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 > _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> &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> &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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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> &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> &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->BindCudaBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\"> 231</span> dstBuffer->BindCudaBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\"> 232</span> duBuffer->BindCudaBuffer(), duDesc,</div>\n+<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\"> 233</span> dvBuffer->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->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->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->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->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->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->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->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> &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> &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> &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> &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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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> &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> &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> &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> &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> &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->BindCudaBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\"> 369</span> dstBuffer->BindCudaBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\"> 370</span> duBuffer->BindCudaBuffer(), duDesc,</div>\n+<div class=\"line\"><a id=\"l00371\" name=\"l00371\"></a><span class=\"lineno\"> 371</span> dvBuffer->BindCudaBuffer(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\"> 372</span> duuBuffer->BindCudaBuffer(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\"> 373</span> duvBuffer->BindCudaBuffer(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\"> 374</span> dvvBuffer->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->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->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->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->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->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->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->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->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->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->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> &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> &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> &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> &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> &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> &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> &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> <<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></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> &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> &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->BindCudaBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\"> 517</span> dstBuffer->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->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->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->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->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> <<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></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> &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> &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> &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> &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->BindCudaBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00580\" name=\"l00580\"></a><span class=\"lineno\"> 580</span> dstBuffer->BindCudaBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00581\" name=\"l00581\"></a><span class=\"lineno\"> 581</span> duBuffer->BindCudaBuffer(), duDesc,</div>\n+<div class=\"line\"><a id=\"l00582\" name=\"l00582\"></a><span class=\"lineno\"> 582</span> dvBuffer->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->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->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->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->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> <<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></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> &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> &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> &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> &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> &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> &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> &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->BindCudaBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00666\" name=\"l00666\"></a><span class=\"lineno\"> 666</span> dstBuffer->BindCudaBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00667\" name=\"l00667\"></a><span class=\"lineno\"> 667</span> duBuffer->BindCudaBuffer(), duDesc,</div>\n+<div class=\"line\"><a id=\"l00668\" name=\"l00668\"></a><span class=\"lineno\"> 668</span> dvBuffer->BindCudaBuffer(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l00669\" name=\"l00669\"></a><span class=\"lineno\"> 669</span> duuBuffer->BindCudaBuffer(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l00670\" name=\"l00670\"></a><span class=\"lineno\"> 670</span> duvBuffer->BindCudaBuffer(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l00671\" name=\"l00671\"></a><span class=\"lineno\"> 671</span> dvvBuffer->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->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->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->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->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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> <<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></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> &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> &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->BindCudaBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00872\" name=\"l00872\"></a><span class=\"lineno\"> 872</span> dstBuffer->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->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->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->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->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> <<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></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> &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> &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> &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> &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->BindCudaBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00937\" name=\"l00937\"></a><span class=\"lineno\"> 937</span> dstBuffer->BindCudaBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00938\" name=\"l00938\"></a><span class=\"lineno\"> 938</span> duBuffer->BindCudaBuffer(), duDesc,</div>\n+<div class=\"line\"><a id=\"l00939\" name=\"l00939\"></a><span class=\"lineno\"> 939</span> dvBuffer->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->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->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->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->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> <<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></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> &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> &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> &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> &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> &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> &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> &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->BindCudaBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01025\" name=\"l01025\"></a><span class=\"lineno\"> 1025</span> dstBuffer->BindCudaBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01026\" name=\"l01026\"></a><span class=\"lineno\"> 1026</span> duBuffer->BindCudaBuffer(), duDesc,</div>\n+<div class=\"line\"><a id=\"l01027\" name=\"l01027\"></a><span class=\"lineno\"> 1027</span> dvBuffer->BindCudaBuffer(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l01028\" name=\"l01028\"></a><span class=\"lineno\"> 1028</span> duuBuffer->BindCudaBuffer(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l01029\" name=\"l01029\"></a><span class=\"lineno\"> 1029</span> duvBuffer->BindCudaBuffer(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l01030\" name=\"l01030\"></a><span class=\"lineno\"> 1030</span> dvvBuffer->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->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->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->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->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> <<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></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> &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> &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->BindCudaBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01084\" name=\"l01084\"></a><span class=\"lineno\"> 1084</span> dstBuffer->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->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->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->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->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> <<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></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> &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> &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> &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> &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->BindCudaBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01152\" name=\"l01152\"></a><span class=\"lineno\"> 1152</span> dstBuffer->BindCudaBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01153\" name=\"l01153\"></a><span class=\"lineno\"> 1153</span> duBuffer->BindCudaBuffer(), duDesc,</div>\n+<div class=\"line\"><a id=\"l01154\" name=\"l01154\"></a><span class=\"lineno\"> 1154</span> dvBuffer->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->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->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->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->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> <<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></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> &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> &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> &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> &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> &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> &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> &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->BindCudaBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01243\" name=\"l01243\"></a><span class=\"lineno\"> 1243</span> dstBuffer->BindCudaBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01244\" name=\"l01244\"></a><span class=\"lineno\"> 1244</span> duBuffer->BindCudaBuffer(), duDesc,</div>\n+<div class=\"line\"><a id=\"l01245\" name=\"l01245\"></a><span class=\"lineno\"> 1245</span> dvBuffer->BindCudaBuffer(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l01246\" name=\"l01246\"></a><span class=\"lineno\"> 1246</span> duuBuffer->BindCudaBuffer(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l01247\" name=\"l01247\"></a><span class=\"lineno\"> 1247</span> duvBuffer->BindCudaBuffer(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l01248\" name=\"l01248\"></a><span class=\"lineno\"> 1248</span> dvvBuffer->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->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->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->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->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 &srcDesc, float *dst, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, float *dst, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const &duDesc, float *dv, BufferDescriptor const &dvDesc, float *duu, BufferDescriptor const &duuDesc, float *duv, BufferDescriptor const &duvDesc, float *dvv, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const &duDesc, float *dv, BufferDescriptor const &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 &srcDesc, float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const &duDesc, float *dv, BufferDescriptor const &dvDesc, float *duu, BufferDescriptor const &duuDesc, float *duv, BufferDescriptor const &duvDesc, float *dvv, BufferDescriptor const &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 &srcDesc, float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const &duDesc, float *dv, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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> |\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 "../version.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a01492_source.html\">../sdc/types.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00731_source.html\">../sdc/crease.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00734_source.html\">../sdc/options.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a01495_source.html\">../vtr/types.h</a>"</code><br />\n-<code>#include <algorithm></code><br />\n-<code>#include <vector></code><br />\n-<code>#include <cassert></code><br />\n-<code>#include <cstring></code><br />\n+<code>#include "<a class=\"el\" href=\"a00842_source.html\">../far/patchTable.h</a>"</code><br />\n+<code>#include "../osd/nonCopyable.h"</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  </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00909\" id=\"r_a00909\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 "../sdc/types.h"</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"preprocessor\">#include "../sdc/crease.h"</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../sdc/options.h"</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"preprocessor\">#include "../vtr/types.h"</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 <algorithm></span></div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span><span class=\"preprocessor\">#include <vector></span></div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span><span class=\"preprocessor\">#include <cassert></span></div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span><span class=\"preprocessor\">#include <cstring></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 "../version.h"</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 "../far/patchTable.h"</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../osd/nonCopyable.h"</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 "complete" 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 "depth" 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<D3D11LegacyGregoryPatchTable> {</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><<span class=\"keyword\">typename</span> DEVICE_CONTEXT></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->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 "incomplete" 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 "incident an irregular face" 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 "no full regular ring" 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>, &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(&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>, &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(&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 "span" 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 "origin" and a "size" 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 "unassigned" 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 > 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 "contained by" 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\">// "local index", 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 "local index" 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'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 & 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> & 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> & 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> & 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> & 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 & 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 & 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 & 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'd (the result then referred to as a "composite" 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 "composite" 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> & 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 "patch points" 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> & 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>& 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>& 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>& 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\">// "resize" 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 "trim" 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 "depth" 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 "max valence",</span></div>\n-<div class=\"line\"><a id=\"l00502\" name=\"l00502\"></a><span class=\"lineno\"> 502</span> <span class=\"comment\">// the "max edge faces" 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 "child" 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<Index> _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<Index> _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<Index> _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<FTag> _faceTags; <span class=\"comment\">// 1 per face: includes "hole" 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<Index> _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<Index> _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<Index> _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<LocalIndex> _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<float> _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<ETag> _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<Index> _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<Index> _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<LocalIndex> _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<Index> _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<Index> _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<LocalIndex> _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<float> _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<VTag> _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<FVarLevel*> _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>(&_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>(&_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 = &_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>(&_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>(&_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>(&_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>( (&_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>( (&_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>( (&_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>( (&_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 = &_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>( (&_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>( (&_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>( (&_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>( (&_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 = &_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>(&_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>(&_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>(&_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>(&_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>(&_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>(&_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 = &_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>&</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>&</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>*) &_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>0) {</div>\n-<div class=\"line\"><a id=\"l00825\" name=\"l00825\"></a><span class=\"lineno\"> 825</span> std::memset((<span class=\"keywordtype\">void</span>*) &_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>*) &_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't 'share'</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<</span><a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> *<span class=\"keyword\">></span>(&_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< LocalIndex > 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< LocalIndex > 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< Index > 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< Index > 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> |\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 "../version.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a01492_source.html\">../sdc/types.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00731_source.html\">../sdc/crease.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a01495_source.html\">../vtr/types.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00692_source.html\">../vtr/stackBuffer.h</a>"</code><br />\n-<code>#include <vector></code><br />\n+<code>#include <cstddef></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  </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00909\" id=\"r_a00909\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 "../sdc/types.h"</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"preprocessor\">#include "../sdc/crease.h"</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../vtr/types.h"</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"preprocessor\">#include "../vtr/stackBuffer.h"</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 <vector></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 "../version.h"</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 <cstddef></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. <typename FACE, VERTEX, etc.></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'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<MTLDevice> <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<MTLCommandQueue> <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 <typename FACE>, 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 <typename FACE>:</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 <typename EDGE>, 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>& level) : _level(&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 <typename EDGE>:</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->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->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>&, <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->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 < eFaces.size(); ++i) {</div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"> 93</span> vertsPerFace[i] = _level->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 <typename VERTEX>, 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>& parent, Level <span class=\"keyword\">const</span>& child) : _parent(&parent), _child(&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->getVertexEdges(_pIndex).size();</div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"> 117</span> _fCount = _parent->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 <typename VERT>:</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->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->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 < _eCount; ++i) {</div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"> 128</span> pSharpness[i] = _parent->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>&)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _child->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>& 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<float,16> 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< Index > 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< MTLCommandQueue > 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< MTLDevice > 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> |\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 "../version.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a01486_source.html\">../far/types.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00722_source.html\">../osd/opengl.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00764_source.html\">../osd/bufferDescriptor.h</a>"</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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00917.html\">Limits</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01249.html\">GLStencilTableTBO</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00907\" id=\"r_a00907\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 "../far/types.h"</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 "../osd/opengl.h"</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../osd/types.h"</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"preprocessor\">#include "../osd/bufferDescriptor.h"</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> <<span class=\"keyword\">typename</span> DEVICE_CONTEXT></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> &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> &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> &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> &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->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> &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> &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> &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> &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> &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> &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> &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> &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-><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> <<span class=\"keyword\">typename</span> DEVICE_CONTEXT></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> &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> &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> &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> &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> &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> &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> &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->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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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-><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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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-><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-><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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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> &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> &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-><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-><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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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> &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> &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> &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> &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> &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-><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-><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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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->BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00463\" name=\"l00463\"></a><span class=\"lineno\"> 463</span> dstBuffer->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->GetSizesTexture(),</div>\n+<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\"> 467</span> stencilTable->GetOffsetsTexture(),</div>\n+<div class=\"line\"><a id=\"l00468\" name=\"l00468\"></a><span class=\"lineno\"> 468</span> stencilTable->GetIndicesTexture(),</div>\n+<div class=\"line\"><a id=\"l00469\" name=\"l00469\"></a><span class=\"lineno\"> 469</span> stencilTable->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->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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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> &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> &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->BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00514\" name=\"l00514\"></a><span class=\"lineno\"> 514</span> dstBuffer->BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\"> 515</span> duBuffer->BindVBO(), duDesc,</div>\n+<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\"> 516</span> dvBuffer->BindVBO(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\"> 517</span> stencilTable->GetSizesTexture(),</div>\n+<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\"> 518</span> stencilTable->GetOffsetsTexture(),</div>\n+<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\"> 519</span> stencilTable->GetIndicesTexture(),</div>\n+<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\"> 520</span> stencilTable->GetWeightsTexture(),</div>\n+<div class=\"line\"><a id=\"l00521\" name=\"l00521\"></a><span class=\"lineno\"> 521</span> stencilTable->GetDuWeightsTexture(),</div>\n+<div class=\"line\"><a id=\"l00522\" name=\"l00522\"></a><span class=\"lineno\"> 522</span> stencilTable->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->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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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> &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> &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> &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> &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> &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->BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00586\" name=\"l00586\"></a><span class=\"lineno\"> 586</span> dstBuffer->BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00587\" name=\"l00587\"></a><span class=\"lineno\"> 587</span> duBuffer->BindVBO(), duDesc,</div>\n+<div class=\"line\"><a id=\"l00588\" name=\"l00588\"></a><span class=\"lineno\"> 588</span> dvBuffer->BindVBO(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l00589\" name=\"l00589\"></a><span class=\"lineno\"> 589</span> duuBuffer->BindVBO(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l00590\" name=\"l00590\"></a><span class=\"lineno\"> 590</span> duvBuffer->BindVBO(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l00591\" name=\"l00591\"></a><span class=\"lineno\"> 591</span> dvvBuffer->BindVBO(), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00592\" name=\"l00592\"></a><span class=\"lineno\"> 592</span> stencilTable->GetSizesTexture(),</div>\n+<div class=\"line\"><a id=\"l00593\" name=\"l00593\"></a><span class=\"lineno\"> 593</span> stencilTable->GetOffsetsTexture(),</div>\n+<div class=\"line\"><a id=\"l00594\" name=\"l00594\"></a><span class=\"lineno\"> 594</span> stencilTable->GetIndicesTexture(),</div>\n+<div class=\"line\"><a id=\"l00595\" name=\"l00595\"></a><span class=\"lineno\"> 595</span> stencilTable->GetWeightsTexture(),</div>\n+<div class=\"line\"><a id=\"l00596\" name=\"l00596\"></a><span class=\"lineno\"> 596</span> stencilTable->GetDuWeightsTexture(),</div>\n+<div class=\"line\"><a id=\"l00597\" name=\"l00597\"></a><span class=\"lineno\"> 597</span> stencilTable->GetDvWeightsTexture(),</div>\n+<div class=\"line\"><a id=\"l00598\" name=\"l00598\"></a><span class=\"lineno\"> 598</span> stencilTable->GetDuuWeightsTexture(),</div>\n+<div class=\"line\"><a id=\"l00599\" name=\"l00599\"></a><span class=\"lineno\"> 599</span> stencilTable->GetDuvWeightsTexture(),</div>\n+<div class=\"line\"><a id=\"l00600\" name=\"l00600\"></a><span class=\"lineno\"> 600</span> stencilTable->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->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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> <<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></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> &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> &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-><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-><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> <<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></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> &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> &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> &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> &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-><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-><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> <<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></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> &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> &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> &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> &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> &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> &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> &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-><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-><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> <<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></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> &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> &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->BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01024\" name=\"l01024\"></a><span class=\"lineno\"> 1024</span> dstBuffer->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->BindVBO(),</div>\n+<div class=\"line\"><a id=\"l01029\" name=\"l01029\"></a><span class=\"lineno\"> 1029</span> patchTable->GetPatchArrays(),</div>\n+<div class=\"line\"><a id=\"l01030\" name=\"l01030\"></a><span class=\"lineno\"> 1030</span> patchTable->GetPatchIndexTextureBuffer(),</div>\n+<div class=\"line\"><a id=\"l01031\" name=\"l01031\"></a><span class=\"lineno\"> 1031</span> patchTable->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> <<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></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> &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> &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> &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> &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->BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01080\" name=\"l01080\"></a><span class=\"lineno\"> 1080</span> dstBuffer->BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01081\" name=\"l01081\"></a><span class=\"lineno\"> 1081</span> duBuffer->BindVBO(), duDesc,</div>\n+<div class=\"line\"><a id=\"l01082\" name=\"l01082\"></a><span class=\"lineno\"> 1082</span> dvBuffer->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->BindVBO(),</div>\n+<div class=\"line\"><a id=\"l01085\" name=\"l01085\"></a><span class=\"lineno\"> 1085</span> patchTable->GetPatchArrays(),</div>\n+<div class=\"line\"><a id=\"l01086\" name=\"l01086\"></a><span class=\"lineno\"> 1086</span> patchTable->GetPatchIndexTextureBuffer(),</div>\n+<div class=\"line\"><a id=\"l01087\" name=\"l01087\"></a><span class=\"lineno\"> 1087</span> patchTable->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> <<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></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> &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> &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> &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> &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> &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> &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> &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->BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01157\" name=\"l01157\"></a><span class=\"lineno\"> 1157</span> dstBuffer->BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01158\" name=\"l01158\"></a><span class=\"lineno\"> 1158</span> duBuffer->BindVBO(), duDesc,</div>\n+<div class=\"line\"><a id=\"l01159\" name=\"l01159\"></a><span class=\"lineno\"> 1159</span> dvBuffer->BindVBO(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l01160\" name=\"l01160\"></a><span class=\"lineno\"> 1160</span> duuBuffer->BindVBO(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l01161\" name=\"l01161\"></a><span class=\"lineno\"> 1161</span> duvBuffer->BindVBO(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l01162\" name=\"l01162\"></a><span class=\"lineno\"> 1162</span> dvvBuffer->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->BindVBO(),</div>\n+<div class=\"line\"><a id=\"l01165\" name=\"l01165\"></a><span class=\"lineno\"> 1165</span> patchTable->GetPatchArrays(),</div>\n+<div class=\"line\"><a id=\"l01166\" name=\"l01166\"></a><span class=\"lineno\"> 1166</span> patchTable->GetPatchIndexTextureBuffer(),</div>\n+<div class=\"line\"><a id=\"l01167\" name=\"l01167\"></a><span class=\"lineno\"> 1167</span> patchTable->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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> <<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></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> &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> &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-><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-><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> <<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></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> &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> &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->BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01295\" name=\"l01295\"></a><span class=\"lineno\"> 1295</span> dstBuffer->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->BindVBO(),</div>\n+<div class=\"line\"><a id=\"l01300\" name=\"l01300\"></a><span class=\"lineno\"> 1300</span> patchTable->GetVaryingPatchArrays(),</div>\n+<div class=\"line\"><a id=\"l01301\" name=\"l01301\"></a><span class=\"lineno\"> 1301</span> patchTable->GetVaryingPatchIndexTextureBuffer(),</div>\n+<div class=\"line\"><a id=\"l01302\" name=\"l01302\"></a><span class=\"lineno\"> 1302</span> patchTable->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> <<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></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> &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> &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> &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> &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-><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-><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> <<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></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> &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> &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> &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> &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->BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01438\" name=\"l01438\"></a><span class=\"lineno\"> 1438</span> dstBuffer->BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01439\" name=\"l01439\"></a><span class=\"lineno\"> 1439</span> duBuffer->BindVBO(), duDesc,</div>\n+<div class=\"line\"><a id=\"l01440\" name=\"l01440\"></a><span class=\"lineno\"> 1440</span> dvBuffer->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->BindVBO(),</div>\n+<div class=\"line\"><a id=\"l01443\" name=\"l01443\"></a><span class=\"lineno\"> 1443</span> patchTable->GetVaryingPatchArrays(),</div>\n+<div class=\"line\"><a id=\"l01444\" name=\"l01444\"></a><span class=\"lineno\"> 1444</span> patchTable->GetVaryingPatchIndexTextureBuffer(),</div>\n+<div class=\"line\"><a id=\"l01445\" name=\"l01445\"></a><span class=\"lineno\"> 1445</span> patchTable->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> <<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></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> &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> &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> &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> &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> &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> &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> &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-><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-><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> <<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></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> &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> &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> &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> &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> &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> &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> &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->BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01630\" name=\"l01630\"></a><span class=\"lineno\"> 1630</span> dstBuffer->BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01631\" name=\"l01631\"></a><span class=\"lineno\"> 1631</span> duBuffer->BindVBO(), duDesc,</div>\n+<div class=\"line\"><a id=\"l01632\" name=\"l01632\"></a><span class=\"lineno\"> 1632</span> dvBuffer->BindVBO(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l01633\" name=\"l01633\"></a><span class=\"lineno\"> 1633</span> duuBuffer->BindVBO(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l01634\" name=\"l01634\"></a><span class=\"lineno\"> 1634</span> duvBuffer->BindVBO(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l01635\" name=\"l01635\"></a><span class=\"lineno\"> 1635</span> dvvBuffer->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->BindVBO(),</div>\n+<div class=\"line\"><a id=\"l01638\" name=\"l01638\"></a><span class=\"lineno\"> 1638</span> patchTable->GetVaryingPatchArrays(),</div>\n+<div class=\"line\"><a id=\"l01639\" name=\"l01639\"></a><span class=\"lineno\"> 1639</span> patchTable->GetVaryingPatchIndexTextureBuffer(),</div>\n+<div class=\"line\"><a id=\"l01640\" name=\"l01640\"></a><span class=\"lineno\"> 1640</span> patchTable->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> <<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></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> &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> &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-><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-><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> <<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></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> &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> &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->BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01751\" name=\"l01751\"></a><span class=\"lineno\"> 1751</span> dstBuffer->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->BindVBO(),</div>\n+<div class=\"line\"><a id=\"l01756\" name=\"l01756\"></a><span class=\"lineno\"> 1756</span> patchTable->GetFVarPatchArrays(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01757\" name=\"l01757\"></a><span class=\"lineno\"> 1757</span> patchTable->GetFVarPatchIndexTextureBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01758\" name=\"l01758\"></a><span class=\"lineno\"> 1758</span> patchTable->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> <<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></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> &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> &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> &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> &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-><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-><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> <<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></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> &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> &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> &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> &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->BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01900\" name=\"l01900\"></a><span class=\"lineno\"> 1900</span> dstBuffer->BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01901\" name=\"l01901\"></a><span class=\"lineno\"> 1901</span> duBuffer->BindVBO(), duDesc,</div>\n+<div class=\"line\"><a id=\"l01902\" name=\"l01902\"></a><span class=\"lineno\"> 1902</span> dvBuffer->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->BindVBO(),</div>\n+<div class=\"line\"><a id=\"l01905\" name=\"l01905\"></a><span class=\"lineno\"> 1905</span> patchTable->GetFVarPatchArrays(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01906\" name=\"l01906\"></a><span class=\"lineno\"> 1906</span> patchTable->GetFVarPatchIndexTextureBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01907\" name=\"l01907\"></a><span class=\"lineno\"> 1907</span> patchTable->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> <<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></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> &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> &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> &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> &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> &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> &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> &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-><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-><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> <<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></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> &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> &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> &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> &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> &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> &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> &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->BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l02098\" name=\"l02098\"></a><span class=\"lineno\"> 2098</span> dstBuffer->BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l02099\" name=\"l02099\"></a><span class=\"lineno\"> 2099</span> duBuffer->BindVBO(), duDesc,</div>\n+<div class=\"line\"><a id=\"l02100\" name=\"l02100\"></a><span class=\"lineno\"> 2100</span> dvBuffer->BindVBO(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l02101\" name=\"l02101\"></a><span class=\"lineno\"> 2101</span> duuBuffer->BindVBO(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l02102\" name=\"l02102\"></a><span class=\"lineno\"> 2102</span> duvBuffer->BindVBO(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l02103\" name=\"l02103\"></a><span class=\"lineno\"> 2103</span> dvvBuffer->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->BindVBO(),</div>\n+<div class=\"line\"><a id=\"l02106\" name=\"l02106\"></a><span class=\"lineno\"> 2106</span> patchTable->GetFVarPatchArrays(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l02107\" name=\"l02107\"></a><span class=\"lineno\"> 2107</span> patchTable->GetFVarPatchIndexTextureBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l02108\" name=\"l02108\"></a><span class=\"lineno\"> 2108</span> patchTable->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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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< PatchArray > 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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, GLuint dstBuffer, BufferDescriptor const &dstDesc, GLuint duBuffer, BufferDescriptor const &duDesc, GLuint dvBuffer, BufferDescriptor const &dvDesc, GLuint duuBuffer, BufferDescriptor const &duuDesc, GLuint duvBuffer, BufferDescriptor const &duvDesc, GLuint dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords, GLuint patchCoordsBuffer, const PatchArrayVector &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, BufferDescriptor const &duuDesc, BufferDescriptor const &duvDesc, BufferDescriptor const &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 &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, GLuint dstBuffer, BufferDescriptor const &dstDesc, GLuint duBuffer, BufferDescriptor const &duDesc, GLuint dvBuffer, BufferDescriptor const &dvDesc, GLuint duuBuffer, BufferDescriptor const &duuDesc, GLuint duvBuffer, BufferDescriptor const &duvDesc, GLuint dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, BufferDescriptor const &duuDesc, BufferDescriptor const &duvDesc, BufferDescriptor const &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 &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, GLuint dstBuffer, BufferDescriptor const &dstDesc, GLuint duBuffer, BufferDescriptor const &duDesc, GLuint dvBuffer, BufferDescriptor const &dvDesc, int numPatchCoords, GLuint patchCoordsBuffer, const PatchArrayVector &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 &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, BufferDescriptor const &duuDesc, BufferDescriptor const &duvDesc, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, GLuint dstBuffer, BufferDescriptor const &dstDesc, GLuint duBuffer, BufferDescriptor const &duDesc, GLuint dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc=BufferDescriptor(), BufferDescriptor const &dvDesc=BufferDescriptor(), BufferDescriptor const &duuDesc=BufferDescriptor(), BufferDescriptor const &duvDesc=BufferDescriptor(), BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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> |\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> |\n+<a href=\"#typedef-members\">Typedefs</a> |\n+<a href=\"#enum-members\">Enumerations</a> |\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 "../version.h"</code><br />\n-<code>#include "../bfr/surfaceData.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00719_source.html\">../bfr/parameterization.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00683_source.html\">../vtr/array.h</a>"</code><br />\n+<code>#include <bitset></code><br />\n+<code>#include <cassert></code><br />\n+<code>#include <cstring></code><br />\n+<code>#include <vector></code><br />\n+<code>#include "<a class=\"el\" href=\"a00833_source.html\">../far/topologyRefiner.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00854_source.html\">../far/patchTableFactory.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00818_source.html\">../far/stencilTable.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00824_source.html\">../far/stencilTableFactory.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00764_source.html\">../osd/bufferDescriptor.h</a>"</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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00933.html\">Surface< REAL ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01269.html\">MeshInterface< PATCH_TABLE ></a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00937.html\">Surface< REAL >::PointDescriptor</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01273.html\">EvaluatorCacheT< EVALUATOR ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01277.html\">EvaluatorCacheT< EVALUATOR >::Entry</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01281.html\">Mesh< VERTEX_BUFFER, STENCIL_TABLE, EVALUATOR, PATCH_TABLE, DEVICE_CONTEXT ></a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00907\" id=\"r_a00907\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </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< <a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a5676712c77d29cfdd330e2802db1c464\">NUM_MESH_BITS</a> > </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\"> </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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492\">MeshBits</a> { <br />\n+  <a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492adef344bcbdd50a1a93136eb53183c718\">MeshAdaptive</a> = 0\n+, <br />\n+  <a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9313c644b9b2a998bcb55cfcc4582b1a\">MeshInterleaveVarying</a> = 1\n+, <br />\n+  <a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492ac10e41fef659f3b3a1b730319bdedb45\">MeshFVarData</a> = 2\n+, <br />\n+  <a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9b8a23ab039e120012bc7c622308d603\">MeshFVarAdaptive</a> = 3\n+, <br />\n+  <a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492ab32b8ef595539e14041e2fb0e619e3f9\">MeshUseSmoothCornerPatch</a> = 4\n+, <br />\n+  <a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9058d69e1089fc77f1974a76c34e2071\">MeshUseSingleCreasePatch</a> = 5\n+, <br />\n+  <a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a8fab1b3018f94b5b2432c7435e795925\">MeshUseInfSharpPatch</a> = 6\n+, <br />\n+  <a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a4124233e4f787f999c7975afceab34f3\">MeshEndCapBilinearBasis</a> = 7\n+, <br />\n+  <a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aa2f41b6ba0393698bb3af283283737f7\">MeshEndCapBSplineBasis</a> = 8\n+, <br />\n+  <a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aa2878e1a215530f5f6fb89f1e06f91ee\">MeshEndCapGregoryBasis</a> = 9\n+, <br />\n+  <a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aad7b3fb2be609abdbfafaf5b1c834158\">MeshEndCapLegacyGregory</a> = 10\n+, <br />\n+  <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\"> </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<typename STENCIL_TABLE , typename SRC_STENCIL_TABLE , typename DEVICE_CONTEXT > </td></tr>\n+<tr class=\"memitem:a06ceddf21c024b341a5b946049cd701a\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">STENCIL_TABLE const * </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\"> </td></tr>\n+<tr class=\"memitem:a33f9830228f847fae1c30c9dffe02b5a\" id=\"r_a33f9830228f847fae1c30c9dffe02b5a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">template<> </td></tr>\n+<tr class=\"memitem:a33f9830228f847fae1c30c9dffe02b5a\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"a01065.html\">Far::StencilTable</a> const * </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html#a33f9830228f847fae1c30c9dffe02b5a\">convertToCompatibleStencilTable< Far::StencilTable, Far::StencilTable, void ></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\"> </td></tr>\n+<tr class=\"memitem:a4c2520cc1a8a5a03e3f53584629d7318\" id=\"r_a4c2520cc1a8a5a03e3f53584629d7318\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">template<> </td></tr>\n+<tr class=\"memitem:a4c2520cc1a8a5a03e3f53584629d7318\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"a01081.html\">Far::LimitStencilTable</a> const * </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html#a4c2520cc1a8a5a03e3f53584629d7318\">convertToCompatibleStencilTable< Far::LimitStencilTable, Far::LimitStencilTable, void ></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\"> </td></tr>\n+<tr class=\"memitem:ab5753a2b0a0995c8e2259d2c4765f7df\" id=\"r_ab5753a2b0a0995c8e2259d2c4765f7df\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">template<> </td></tr>\n+<tr class=\"memitem:ab5753a2b0a0995c8e2259d2c4765f7df\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"a01065.html\">Far::StencilTable</a> const * </td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html#ab5753a2b0a0995c8e2259d2c4765f7df\">convertToCompatibleStencilTable< Far::StencilTable, Far::StencilTable, ID3D11DeviceContext ></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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 "../bfr/surfaceData.h"</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../bfr/parameterization.h"</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"preprocessor\">#include "../vtr/array.h"</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> <<span class=\"keyword\">typename</span> REAL></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 <bitset></span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include <cassert></span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"preprocessor\">#include <cstring></span></div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span><span class=\"preprocessor\">#include <vector></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 "../far/topologyRefiner.h"</span></div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span><span class=\"preprocessor\">#include "../far/patchTableFactory.h"</span></div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span><span class=\"preprocessor\">#include "../far/stencilTable.h"</span></div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"> 38</span><span class=\"preprocessor\">#include "../far/stencilTableFactory.h"</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 "../osd/bufferDescriptor.h"</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<NUM_MESH_BITS> <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> <<span class=\"keyword\">class</span> PATCH_TABLE></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> & 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>& <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> & 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> & 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>()>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> & 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>()>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> <<span class=\"keyword\">typename</span> REAL_MESH></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> & 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> & 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> <<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></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> <></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<Far::StencilTable, Far::StencilTable, void></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'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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> <></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<Far::LimitStencilTable, Far::LimitStencilTable, void></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'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> <></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<Far::StencilTable, Far::StencilTable, ID3D11DeviceContext></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'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> <<span class=\"keyword\">typename</span> EVALUATOR></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->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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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<Entry> <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> <<span class=\"keyword\">typename</span> DEVICE_CONTEXT></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> &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> &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> <<span class=\"keyword\">typename</span> DEVICE_CONTEXT></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> &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> &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> &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> &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> <<span class=\"keyword\">typename</span> DEVICE_CONTEXT></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> &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> &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> &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> &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> &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> &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> &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> &,</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> &,</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<int></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> &, 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> &, 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> &, 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> &, 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> &) <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> &) <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> & 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 & 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> & 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> <<span class=\"keyword\">typename</span> REAL></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<REAL>::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> & 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> <<span class=\"keyword\">typename</span> REAL></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<REAL>::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> & 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> & 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> <<span class=\"keyword\">typename</span> REAL></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<REAL>::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> & 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> <<span class=\"keyword\">typename</span> REAL></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<REAL>::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> & 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> <<span class=\"keyword\">typename</span> REAL></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<REAL>::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> & 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->srcDesc) &&</div>\n+<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\"> 267</span> isEqual(dstDesc, it->dstDesc) &&</div>\n+<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\"> 268</span> isEqual(duDesc, it->duDesc) &&</div>\n+<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\"> 269</span> isEqual(dvDesc, it->dvDesc) &&</div>\n+<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\"> 270</span> isEqual(duuDesc, it->duuDesc) &&</div>\n+<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\"> 271</span> isEqual(duvDesc, it->duvDesc) &&</div>\n+<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\"> 272</span> isEqual(dvvDesc, it->dvvDesc)) {</div>\n+<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\"> 273</span> <span class=\"keywordflow\">return</span> it->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> &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> &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 &&</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> &&</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> <<span class=\"keyword\">typename</span> EVALUATOR></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> <<span class=\"keyword\">typename</span> C> <span class=\"keyword\">static</span> yes &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> <<span class=\"keyword\">typename</span> C> <span class=\"keyword\">static</span> no &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<EVALUATOR>(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> <<span class=\"keywordtype\">bool</span> C, <span class=\"keyword\">typename</span> T=<span class=\"keywordtype\">void</span>></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> <<span class=\"keyword\">typename</span> T></div>\n+<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\"> 317</span><span class=\"keyword\">struct </span>enable_if<false, T> { };</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> <<span class=\"keyword\">typename</span> EVALUATOR, <span class=\"keyword\">typename</span> DEVICE_CONTEXT></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<EVALUATOR> *cache,</div>\n+<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\"> 325</span> BufferDescriptor <span class=\"keyword\">const</span> &srcDesc,</div>\n+<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\"> 326</span> BufferDescriptor <span class=\"keyword\">const</span> &dstDesc,</div>\n+<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\"> 327</span> BufferDescriptor <span class=\"keyword\">const</span> &duDesc,</div>\n+<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\"> 328</span> BufferDescriptor <span class=\"keyword\">const</span> &dvDesc,</div>\n+<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\"> 329</span> BufferDescriptor <span class=\"keyword\">const</span> &duuDesc,</div>\n+<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\"> 330</span> BufferDescriptor <span class=\"keyword\">const</span> &duvDesc,</div>\n+<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\"> 331</span> BufferDescriptor <span class=\"keyword\">const</span> &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<instantiatable<EVALUATOR>::value, <span class=\"keywordtype\">void</span>>::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->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> <<span class=\"keyword\">typename</span> EVALUATOR, <span class=\"keyword\">typename</span> DEVICE_CONTEXT></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<EVALUATOR> *cache,</div>\n+<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\"> 344</span> BufferDescriptor <span class=\"keyword\">const</span> &srcDesc,</div>\n+<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\"> 345</span> BufferDescriptor <span class=\"keyword\">const</span> &dstDesc,</div>\n+<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\"> 346</span> BufferDescriptor <span class=\"keyword\">const</span> &duDesc,</div>\n+<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\"> 347</span> BufferDescriptor <span class=\"keyword\">const</span> &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<instantiatable<EVALUATOR>::value, <span class=\"keywordtype\">void</span>>::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->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> <<span class=\"keyword\">typename</span> EVALUATOR, <span class=\"keyword\">typename</span> DEVICE_CONTEXT></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<EVALUATOR> *cache,</div>\n+<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\"> 358</span> BufferDescriptor <span class=\"keyword\">const</span> &srcDesc,</div>\n+<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\"> 359</span> BufferDescriptor <span class=\"keyword\">const</span> &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<instantiatable<EVALUATOR>::value, <span class=\"keywordtype\">void</span>>::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->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> <<span class=\"keyword\">typename</span> EVALUATOR, <span class=\"keyword\">typename</span> DEVICE_CONTEXT></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<EVALUATOR> *,</div>\n+<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\"> 374</span> BufferDescriptor <span class=\"keyword\">const</span> &,</div>\n+<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\"> 375</span> BufferDescriptor <span class=\"keyword\">const</span> &,</div>\n+<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\"> 376</span> BufferDescriptor <span class=\"keyword\">const</span> &,</div>\n+<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\"> 377</span> BufferDescriptor <span class=\"keyword\">const</span> &,</div>\n+<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\"> 378</span> BufferDescriptor <span class=\"keyword\">const</span> &,</div>\n+<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\"> 379</span> BufferDescriptor <span class=\"keyword\">const</span> &,</div>\n+<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\"> 380</span> BufferDescriptor <span class=\"keyword\">const</span> &,</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<!instantiatable<EVALUATOR>::value, <span class=\"keywordtype\">void</span>>::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> <<span class=\"keyword\">typename</span> REAL></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<REAL>::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> & 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> <<span class=\"keyword\">typename</span> REAL></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<REAL>::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> <<span class=\"keyword\">typename</span> REAL></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<REAL>::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> <<span class=\"keyword\">typename</span> REAL></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<REAL>::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> <<span class=\"keyword\">typename</span> REAL></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<REAL>::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 &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 &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 &, 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 &, 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 & operator=(Surface const &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 &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 &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 &meshPointDesc, REAL patchPoints[], PointDescriptor const &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 &meshPointDesc, REAL controlPoints[], PointDescriptor const &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 &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> <<span class=\"keyword\">typename</span> EVALUATOR, <span class=\"keyword\">typename</span> DEVICE_CONTEXT></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<EVALUATOR> *,</div>\n+<div class=\"line\"><a id=\"l00390\" name=\"l00390\"></a><span class=\"lineno\"> 390</span> BufferDescriptor <span class=\"keyword\">const</span> &,</div>\n+<div class=\"line\"><a id=\"l00391\" name=\"l00391\"></a><span class=\"lineno\"> 391</span> BufferDescriptor <span class=\"keyword\">const</span> &,</div>\n+<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\"> 392</span> BufferDescriptor <span class=\"keyword\">const</span> &,</div>\n+<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\"> 393</span> BufferDescriptor <span class=\"keyword\">const</span> &,</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<!instantiatable<EVALUATOR>::value, <span class=\"keywordtype\">void</span>>::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> <<span class=\"keyword\">typename</span> EVALUATOR, <span class=\"keyword\">typename</span> DEVICE_CONTEXT></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<EVALUATOR> *,</div>\n+<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\"> 403</span> BufferDescriptor <span class=\"keyword\">const</span> &,</div>\n+<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\"> 404</span> BufferDescriptor <span class=\"keyword\">const</span> &,</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<!instantiatable<EVALUATOR>::value, <span class=\"keywordtype\">void</span>>::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> <<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>></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><PATCH_TABLE> {</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<Evaluator></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<PATCH_TABLE>::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->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->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-><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<Evaluator>(</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> > 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<Evaluator>(</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->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->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-><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>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>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'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-><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-><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-><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-><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-><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-><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<StencilTable>(</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<StencilTable>(</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< Far::StencilTable, Far::StencilTable, void ></a></div><div class=\"ttdeci\">Far::StencilTable const * convertToCompatibleStencilTable< Far::StencilTable, Far::StencilTable, void >(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< Far::LimitStencilTable, Far::LimitStencilTable, void ></a></div><div class=\"ttdeci\">Far::LimitStencilTable const * convertToCompatibleStencilTable< Far::LimitStencilTable, Far::LimitStencilTable, void >(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< NUM_MESH_BITS > 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< Far::StencilTable, Far::StencilTable, ID3D11DeviceContext ></a></div><div class=\"ttdeci\">Far::StencilTable const * convertToCompatibleStencilTable< Far::StencilTable, Far::StencilTable, ID3D11DeviceContext >(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 &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< float >::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 &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 &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 & 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 &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 &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 &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &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 &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, BufferDescriptor const &duuDesc, BufferDescriptor const &duvDesc, BufferDescriptor const &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 &srcDesc, BufferDescriptor const &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< Entry > 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 &srcDescArg, BufferDescriptor const &dstDescArg, BufferDescriptor const &duDescArg, BufferDescriptor const &dvDescArg, BufferDescriptor const &duuDescArg, BufferDescriptor const &duvDescArg, BufferDescriptor const &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 &srcDescArg, BufferDescriptor const &dstDescArg, BufferDescriptor const &duDescArg, BufferDescriptor const &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< Evaluator > 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> |\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 "../version.h"</code><br />\n-<code>#include <cstdint></code><br />\n+<code>#include "<a class=\"el\" href=\"a00764_source.html\">../osd/bufferDescriptor.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>"</code><br />\n+<code>#include <cstddef></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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00957.html\">SurfaceFactoryMeshAdapter</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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  </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00907\" id=\"r_a00907\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 <cstdint></span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span><span class=\"preprocessor\">#include "../osd/bufferDescriptor.h"</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"preprocessor\">#include "../osd/types.h"</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 <cstddef></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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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->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->BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"> 86</span> dstBuffer->BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"> 87</span> &stencilTable->GetSizes()[0],</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"> 88</span> &stencilTable->GetOffsets()[0],</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"> 89</span> &stencilTable->GetControlIndices()[0],</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"> 90</span> &stencilTable->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->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> &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> &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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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> &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> &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->BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\"> 181</span> dstBuffer->BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\"> 182</span> duBuffer->BindCpuBuffer(), duDesc,</div>\n+<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\"> 183</span> dvBuffer->BindCpuBuffer(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\"> 184</span> &stencilTable->GetSizes()[0],</div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"> 185</span> &stencilTable->GetOffsets()[0],</div>\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\"> 186</span> &stencilTable->GetControlIndices()[0],</div>\n+<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\"> 187</span> &stencilTable->GetWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"> 188</span> &stencilTable->GetDuWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\"> 189</span> &stencilTable->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->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> &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> &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> &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> &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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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> &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> &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> &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> &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> &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->BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\"> 319</span> dstBuffer->BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\"> 320</span> duBuffer->BindCpuBuffer(), duDesc,</div>\n+<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\"> 321</span> dvBuffer->BindCpuBuffer(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\"> 322</span> duuBuffer->BindCpuBuffer(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\"> 323</span> duvBuffer->BindCpuBuffer(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\"> 324</span> dvvBuffer->BindCpuBuffer(), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\"> 325</span> &stencilTable->GetSizes()[0],</div>\n+<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\"> 326</span> &stencilTable->GetOffsets()[0],</div>\n+<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\"> 327</span> &stencilTable->GetControlIndices()[0],</div>\n+<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\"> 328</span> &stencilTable->GetWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\"> 329</span> &stencilTable->GetDuWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\"> 330</span> &stencilTable->GetDvWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\"> 331</span> &stencilTable->GetDuuWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\"> 332</span> &stencilTable->GetDuvWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\"> 333</span> &stencilTable->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->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> &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> &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> &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> &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> &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> &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> &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> <<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></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> &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> &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->BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\"> 467</span> dstBuffer->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->BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l00470\" name=\"l00470\"></a><span class=\"lineno\"> 470</span> patchTable->GetPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00471\" name=\"l00471\"></a><span class=\"lineno\"> 471</span> patchTable->GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00472\" name=\"l00472\"></a><span class=\"lineno\"> 472</span> patchTable->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> <<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></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> &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> &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> &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> &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'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<PatchCoord> )</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->BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00537\" name=\"l00537\"></a><span class=\"lineno\"> 537</span> dstBuffer->BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00538\" name=\"l00538\"></a><span class=\"lineno\"> 538</span> duBuffer->BindCpuBuffer(), duDesc,</div>\n+<div class=\"line\"><a id=\"l00539\" name=\"l00539\"></a><span class=\"lineno\"> 539</span> dvBuffer->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->BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l00542\" name=\"l00542\"></a><span class=\"lineno\"> 542</span> patchTable->GetPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00543\" name=\"l00543\"></a><span class=\"lineno\"> 543</span> patchTable->GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00544\" name=\"l00544\"></a><span class=\"lineno\"> 544</span> patchTable->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> <<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></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> &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> &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> &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> &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> &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> &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> &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'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<PatchCoord> )</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->BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00630\" name=\"l00630\"></a><span class=\"lineno\"> 630</span> dstBuffer->BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00631\" name=\"l00631\"></a><span class=\"lineno\"> 631</span> duBuffer->BindCpuBuffer(), duDesc,</div>\n+<div class=\"line\"><a id=\"l00632\" name=\"l00632\"></a><span class=\"lineno\"> 632</span> dvBuffer->BindCpuBuffer(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l00633\" name=\"l00633\"></a><span class=\"lineno\"> 633</span> duuBuffer->BindCpuBuffer(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l00634\" name=\"l00634\"></a><span class=\"lineno\"> 634</span> duvBuffer->BindCpuBuffer(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l00635\" name=\"l00635\"></a><span class=\"lineno\"> 635</span> dvvBuffer->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->BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l00638\" name=\"l00638\"></a><span class=\"lineno\"> 638</span> patchTable->GetPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00639\" name=\"l00639\"></a><span class=\"lineno\"> 639</span> patchTable->GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00640\" name=\"l00640\"></a><span class=\"lineno\"> 640</span> patchTable->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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> <<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></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> &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> &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->BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00836\" name=\"l00836\"></a><span class=\"lineno\"> 836</span> dstBuffer->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->BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l00839\" name=\"l00839\"></a><span class=\"lineno\"> 839</span> patchTable->GetVaryingPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00840\" name=\"l00840\"></a><span class=\"lineno\"> 840</span> patchTable->GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00841\" name=\"l00841\"></a><span class=\"lineno\"> 841</span> patchTable->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> <<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></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> &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> &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> &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> &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->BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00901\" name=\"l00901\"></a><span class=\"lineno\"> 901</span> dstBuffer->BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00902\" name=\"l00902\"></a><span class=\"lineno\"> 902</span> duBuffer->BindCpuBuffer(), duDesc,</div>\n+<div class=\"line\"><a id=\"l00903\" name=\"l00903\"></a><span class=\"lineno\"> 903</span> dvBuffer->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->BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l00906\" name=\"l00906\"></a><span class=\"lineno\"> 906</span> patchTable->GetVaryingPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00907\" name=\"l00907\"></a><span class=\"lineno\"> 907</span> patchTable->GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00908\" name=\"l00908\"></a><span class=\"lineno\"> 908</span> patchTable->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> <<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></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> &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> &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> &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> &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> &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> &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> &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->BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00989\" name=\"l00989\"></a><span class=\"lineno\"> 989</span> dstBuffer->BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00990\" name=\"l00990\"></a><span class=\"lineno\"> 990</span> duBuffer->BindCpuBuffer(), duDesc,</div>\n+<div class=\"line\"><a id=\"l00991\" name=\"l00991\"></a><span class=\"lineno\"> 991</span> dvBuffer->BindCpuBuffer(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l00992\" name=\"l00992\"></a><span class=\"lineno\"> 992</span> duuBuffer->BindCpuBuffer(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l00993\" name=\"l00993\"></a><span class=\"lineno\"> 993</span> duvBuffer->BindCpuBuffer(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l00994\" name=\"l00994\"></a><span class=\"lineno\"> 994</span> dvvBuffer->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->BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l00997\" name=\"l00997\"></a><span class=\"lineno\"> 997</span> patchTable->GetVaryingPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00998\" name=\"l00998\"></a><span class=\"lineno\"> 998</span> patchTable->GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00999\" name=\"l00999\"></a><span class=\"lineno\"> 999</span> patchTable->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> <<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></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> &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> &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->BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01048\" name=\"l01048\"></a><span class=\"lineno\"> 1048</span> dstBuffer->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->BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l01051\" name=\"l01051\"></a><span class=\"lineno\"> 1051</span> patchTable->GetFVarPatchArrayBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01052\" name=\"l01052\"></a><span class=\"lineno\"> 1052</span> patchTable->GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01053\" name=\"l01053\"></a><span class=\"lineno\"> 1053</span> patchTable->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> <<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></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> &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> &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> &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> &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->BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01116\" name=\"l01116\"></a><span class=\"lineno\"> 1116</span> dstBuffer->BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01117\" name=\"l01117\"></a><span class=\"lineno\"> 1117</span> duBuffer->BindCpuBuffer(), duDesc,</div>\n+<div class=\"line\"><a id=\"l01118\" name=\"l01118\"></a><span class=\"lineno\"> 1118</span> dvBuffer->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->BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l01121\" name=\"l01121\"></a><span class=\"lineno\"> 1121</span> patchTable->GetFVarPatchArrayBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01122\" name=\"l01122\"></a><span class=\"lineno\"> 1122</span> patchTable->GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01123\" name=\"l01123\"></a><span class=\"lineno\"> 1123</span> patchTable->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> <<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></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> &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> &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> &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> &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> &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> &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> &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->BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01207\" name=\"l01207\"></a><span class=\"lineno\"> 1207</span> dstBuffer->BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01208\" name=\"l01208\"></a><span class=\"lineno\"> 1208</span> duBuffer->BindCpuBuffer(), duDesc,</div>\n+<div class=\"line\"><a id=\"l01209\" name=\"l01209\"></a><span class=\"lineno\"> 1209</span> dvBuffer->BindCpuBuffer(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l01210\" name=\"l01210\"></a><span class=\"lineno\"> 1210</span> duuBuffer->BindCpuBuffer(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l01211\" name=\"l01211\"></a><span class=\"lineno\"> 1211</span> duvBuffer->BindCpuBuffer(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l01212\" name=\"l01212\"></a><span class=\"lineno\"> 1212</span> dvvBuffer->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->BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l01215\" name=\"l01215\"></a><span class=\"lineno\"> 1215</span> patchTable->GetFVarPatchArrayBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01216\" name=\"l01216\"></a><span class=\"lineno\"> 1216</span> patchTable->GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01217\" name=\"l01217\"></a><span class=\"lineno\"> 1217</span> patchTable->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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, float *dst, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const &duDesc, float *dv, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const &duDesc, float *dv, BufferDescriptor const &dvDesc, float *duu, BufferDescriptor const &duuDesc, float *duv, BufferDescriptor const &duvDesc, float *dvv, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const &duDesc, float *dv, BufferDescriptor const &dvDesc, float *duu, BufferDescriptor const &duuDesc, float *duv, BufferDescriptor const &duvDesc, float *dvv, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const &duDesc, float *dv, BufferDescriptor const &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 &srcDesc, float *dst, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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> |\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 "../version.h"</code><br />\n-<code>#include "../bfr/irregularPatchType.h"</code><br />\n-<code>#include <map></code><br />\n-<code>#include <cstdint></code><br />\n+<code>#include <vector></code><br />\n+<code>#include "<a class=\"el\" href=\"a00857_source.html\">../far/patchDescriptor.h</a>"</code><br />\n+<code>#include "../osd/nonCopyable.h"</code><br />\n+<code>#include "<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>"</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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00949.html\">SurfaceFactoryCache</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00953.html\">SurfaceFactoryCacheThreaded< MUTEX_TYPE, READ_LOCK_GUARD_TYPE, WRITE_LOCK_GUARD_TYPE ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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  </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00907\" id=\"r_a00907\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 "../bfr/irregularPatchType.h"</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 <map></span></div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span><span class=\"preprocessor\">#include <cstdint></span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"preprocessor\">#include <vector></span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../far/patchDescriptor.h"</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"preprocessor\">#include "../osd/nonCopyable.h"</span></div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span><span class=\"preprocessor\">#include "../osd/types.h"</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> &) = <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> & <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> &) = <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> & 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> & key, DataType <span class=\"keyword\">const</span> & 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<D3D11PatchTable> {</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><<span class=\"keyword\">typename</span> DEVICE_CONTEXT></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->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> &<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> & 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> & key, DataType <span class=\"keyword\">const</span> & 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<KeyType, DataType> 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> <<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></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> & 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> & key, DataType <span class=\"keyword\">const</span> & 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 &)=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 & operator=(SurfaceFactoryCache const &)=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< PatchArray > 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 & 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> |\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 "../version.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00704_source.html\">../bfr/surface.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00707_source.html\">../bfr/surfaceFactoryMeshAdapter.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00734_source.html\">../sdc/options.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a01492_source.html\">../sdc/types.h</a>"</code><br />\n-<code>#include <cstdint></code><br />\n+<code>#include "<a class=\"el\" href=\"a00698_source.html\">../osd/mtlCommon.h</a>"</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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00941.html\">SurfaceFactory</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00945.html\">SurfaceFactory::Options</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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  </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00907\" id=\"r_a00907\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 "../bfr/surface.h"</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../bfr/surfaceFactoryMeshAdapter.h"</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"preprocessor\">#include "../sdc/options.h"</span></div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span><span class=\"preprocessor\">#include "../sdc/types.h"</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 <cstdint></span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span><span class=\"preprocessor\">#include "../osd/mtlCommon.h"</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> & <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> & <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> & <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> & <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> & <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> <<span class=\"keyword\">typename</span> REAL></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<REAL></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> <<span class=\"keyword\">typename</span> REAL></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<REAL></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> <<span class=\"keyword\">typename</span> REAL></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<REAL></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> <<span class=\"keyword\">typename</span> REAL></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<REAL></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> <<span class=\"keyword\">typename</span> REAL></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<REAL></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<REAL></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<REAL></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> <<span class=\"keyword\">typename</span> REAL=<span class=\"keywordtype\">float</span>></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<REAL></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> <<span class=\"keyword\">typename</span> REAL=<span class=\"keywordtype\">float</span>></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<REAL></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> <<span class=\"keyword\">typename</span> REAL=<span class=\"keywordtype\">float</span>></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<REAL></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> <<span class=\"keyword\">typename</span> REAL=<span class=\"keywordtype\">float</span>></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<REAL></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> & 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> & 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> &) = <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> & <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> &) = <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> & 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> & 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> & 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> & 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> & 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> & 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> & surfaceSource,</div>\n-<div class=\"line\"><a id=\"l00425\" name=\"l00425\"></a><span class=\"lineno\"> 425</span> FaceSurface <span class=\"keyword\">const</span> & 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> &</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> &</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> & </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> &</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> &</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> <<span class=\"keyword\">typename</span> REAL></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<REAL></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, &s->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> <<span class=\"keyword\">typename</span> REAL></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<REAL></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, &s->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> <<span class=\"keyword\">typename</span> REAL></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<REAL></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, &s->getSurfaceData(), 1, &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> <<span class=\"keyword\">typename</span> REAL></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<REAL></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, &s->getSurfaceData(), 1, &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> <<span class=\"keyword\">typename</span> REAL></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<REAL></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<REAL></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<REAL></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 && (fvarIDs == 0) && (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 ? &vtxSurface->getSurfaceData() : 0,</div>\n-<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\"> 516</span> varSurface ? &varSurface->getSurfaceData() : 0,</div>\n-<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\"> 517</span> fvarSurfaces ? &fvarSurfaces->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 ? &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> <<span class=\"keyword\">typename</span> REAL></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<REAL></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<REAL></a> * s = <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a00933.html\">Surface<REAL></a>();</div>\n-<div class=\"line\"><a id=\"l00529\" name=\"l00529\"></a><span class=\"lineno\"> 529</span> <span class=\"keywordflow\">if</span> (InitVertexSurface<REAL>(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> <<span class=\"keyword\">typename</span> REAL></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<REAL></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<REAL></a> * s = <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a00933.html\">Surface<REAL></a>();</div>\n-<div class=\"line\"><a id=\"l00537\" name=\"l00537\"></a><span class=\"lineno\"> 537</span> <span class=\"keywordflow\">if</span> (InitVaryingSurface<REAL>(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> <<span class=\"keyword\">typename</span> REAL></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<REAL></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<REAL></a> * s = <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a00933.html\">Surface<REAL></a>();</div>\n-<div class=\"line\"><a id=\"l00545\" name=\"l00545\"></a><span class=\"lineno\"> 545</span> <span class=\"keywordflow\">if</span> (InitFaceVaryingSurface<REAL>(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> <<span class=\"keyword\">typename</span> REAL></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<REAL></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<REAL>(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< REAL > *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 &)=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 & operator=(SurfaceFactory const &)=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< REAL > * 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< REAL > * 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< REAL > *vtxSurface, Surface< REAL > *fvarSurfaces, FVarID const fvarIDs[]=0, int fvarCount=0, Surface< REAL > *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< REAL > * 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< REAL > *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< REAL > *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 &schemeOptions, Options const &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 & 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 & 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 & 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 & 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 & 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<MTLBuffer> <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<MTLBuffer> <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<MTLBuffer> _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< MTLBuffer > 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< MTLBuffer > 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> |\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 "../version.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00713_source.html\">../bfr/surfaceFactory.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00710_source.html\">../bfr/surfaceFactoryCache.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00857_source.html\">../far/patchDescriptor.h</a>"</code><br />\n+<code>#include <string></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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00925.html\">RefinerSurfaceFactoryBase</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00929.html\">RefinerSurfaceFactory< CACHE_TYPE ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01265.html\">HLSLPatchShaderSource</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00907\" id=\"r_a00907\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 "../bfr/surfaceFactory.h"</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../bfr/surfaceFactoryCache.h"</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 "../far/patchDescriptor.h"</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 <string></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> & 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> & 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> & <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> & _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> <<span class=\"keyword\">class</span> CACHE_TYPE = SurfaceFactoryCache></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> & 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> & 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>(&_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 & 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 &mesh, Options const &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 &mesh, Options const &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> |\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> |\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 "../version.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a01492_source.html\">../sdc/types.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00704_source.html\">../osd/mesh.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00779_source.html\">../osd/glPatchTable.h</a>"</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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00921.html\">Parameterization</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00907\" id=\"r_a00907\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </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>< <a class=\"el\" href=\"a01237.html\">GLPatchTable</a> > </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 "../sdc/types.h"</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 > 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> &) = <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> & <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> &) = <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> <<span class=\"keyword\">typename</span> REAL></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> <<span class=\"keyword\">typename</span> REAL></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> <<span class=\"keyword\">typename</span> REAL></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> <<span class=\"keyword\">typename</span> REAL></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> <<span class=\"keyword\">typename</span> REAL></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> <<span class=\"keyword\">typename</span> REAL></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> <<span class=\"keyword\">typename</span> REAL></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> <<span class=\"keyword\">typename</span> REAL></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> <<span class=\"keyword\">typename</span> REAL></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> <<span class=\"keyword\">typename</span> REAL></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> <<span class=\"keyword\">typename</span> REAL></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) > 0.75f)) * _uDim +</div>\n-<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\"> 209</span> (uTile + ((uvCoord[0] - (REAL) uTile) > 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> <<span class=\"keyword\">typename</span> REAL></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<REAL>(<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> <<span class=\"keyword\">typename</span> REAL></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<REAL>(<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> <<span class=\"keyword\">typename</span> REAL></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<REAL>(<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> <<span class=\"keyword\">typename</span> REAL></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<REAL>(<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 &)=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 & operator=(Parameterization const &)=default</div></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"preprocessor\">#include "../osd/mesh.h"</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../osd/glPatchTable.h"</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<GLPatchTable></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< GLPatchTable > 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> |\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 "../version.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00719_source.html\">../bfr/parameterization.h</a>"</code><br />\n+<div class=\"textblock\"><code>#include <GL/gl.h></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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00961.html\">Tessellation</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00965.html\">Tessellation::Options</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </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  </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\"> </td></tr>\n-<tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00907\" id=\"r_a00907\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 "../bfr/parameterization.h"</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> & <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> & <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> & <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> & <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> & 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> & 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> & 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> & 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> &) = <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> & <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> &) = <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> <<span class=\"keyword\">typename</span> REAL></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> <<span class=\"keyword\">typename</span> REAL></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> <<span class=\"keyword\">typename</span> REAL></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> <<span class=\"keyword\">typename</span> REAL></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> <<span class=\"keyword\">typename</span> REAL></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> & 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> & 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> & 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> & 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> &</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> &</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> &</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> &</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> <<span class=\"keyword\">typename</span> REAL></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> <<span class=\"keyword\">typename</span> REAL></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 &p, int numRates, int const rates[], Options const &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 &p, int uniformRate, Options const &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 &)=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 & operator=(Tessellation const &)=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 & 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 & 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 & 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 "TargetConditionals.h"</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 <OpenGLES/ES2/gl.h></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 <GL/glew.h></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 <OpenGL/gl3.h></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 <GLES2/gl2.h></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 <windows.h></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 <GL/glew.h></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 <GL/gl.h></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> |\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 "../version.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00692_source.html\">../vtr/stackBuffer.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00755_source.html\">../osd/opencl.h</a>"</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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00969.html\">VertexDescriptor</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01157.html\">CLVertexBuffer</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00907\" id=\"r_a00907\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 "../vtr/stackBuffer.h"</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 & 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 < 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 "manifold",</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 "ordered" (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<int,8,true> 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<float,16,true> 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 > 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 < _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 > 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 "../osd/opencl.h"</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> <<span class=\"keyword\">typename</span> DEVICE_CONTEXT></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->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><<span class=\"keyword\">typename</span> DEVICE_CONTEXT></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->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> |\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 "../version.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00743_source.html\">../sdc/scheme.h</a>"</code><br />\n-<code>#include <cassert></code><br />\n-<code>#include <cmath></code><br />\n+<code>#include "<a class=\"el\" href=\"a00857_source.html\">../far/patchDescriptor.h</a>"</code><br />\n+<code>#include <string></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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01241.html\">GLSLPatchShaderSource</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00913\" id=\"r_a00913\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 "../sdc/scheme.h"</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 <cassert></span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"preprocessor\">#include <cmath></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 "../version.h"</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 "../far/patchDescriptor.h"</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 <string></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<SCHEME_LOOP>:</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> <></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<SCHEME_LOOP>::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> <></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<SCHEME_LOOP>::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> <></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<SCHEME_LOOP>::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> <></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<SCHEME_LOOP>::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> <></div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"> 68</span><span class=\"keyword\">template</span> <<span class=\"keyword\">typename</span> EDGE, <span class=\"keyword\">typename</span> MASK></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<SCHEME_LOOP>::assignCreaseMaskForEdge</a>(EDGE <span class=\"keyword\">const</span>&, MASK& 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> <></div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"> 82</span><span class=\"keyword\">template</span> <<span class=\"keyword\">typename</span> EDGE, <span class=\"keyword\">typename</span> MASK></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<SCHEME_LOOP>::assignSmoothMaskForEdge</a>(EDGE <span class=\"keyword\">const</span>& edge, MASK& 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 "face weights" -- 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 < 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> <></div>\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"> 140</span><span class=\"keyword\">template</span> <<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK></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<SCHEME_LOOP>::assignCornerMaskForVertex</a>(VERTEX <span class=\"keyword\">const</span>&, MASK& 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> <></div>\n-<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\"> 153</span><span class=\"keyword\">template</span> <<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK></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<SCHEME_LOOP>::assignCreaseMaskForVertex</a>(VERTEX <span class=\"keyword\">const</span>& vertex, MASK& 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 < 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> <></div>\n-<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\"> 178</span><span class=\"keyword\">template</span> <<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK></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<SCHEME_LOOP>::assignSmoothMaskForVertex</a>(VERTEX <span class=\"keyword\">const</span>& vertex, MASK& 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<T>::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 < 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> <></div>\n-<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\"> 221</span><span class=\"keyword\">template</span> <<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK></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<SCHEME_LOOP>::assignCornerLimitMask</a>(VERTEX <span class=\"keyword\">const</span>& <span class=\"comment\">/* vertex */</span>, MASK& 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> <></div>\n-<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\"> 234</span><span class=\"keyword\">template</span> <<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK></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<SCHEME_LOOP>::assignCreaseLimitMask</a>(VERTEX <span class=\"keyword\">const</span>& vertex, MASK& 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 < 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> <></div>\n-<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\"> 271</span><span class=\"keyword\">template</span> <<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK></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<SCHEME_LOOP>::assignSmoothLimitMask</a>(VERTEX <span class=\"keyword\">const</span>& vertex, MASK& 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 < 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 "phantom" 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 > 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> <></div>\n-<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\"> 384</span><span class=\"keyword\">template</span> <<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK></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<SCHEME_LOOP>::assignCornerLimitTangentMasks</a>(VERTEX <span class=\"keyword\">const</span>& vertex,</div>\n-<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\"> 387</span> MASK& tan1Mask, MASK& 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 < 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> <></div>\n-<div class=\"line\"><a id=\"l00418\" name=\"l00418\"></a><span class=\"lineno\"> 418</span><span class=\"keyword\">template</span> <<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK></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<SCHEME_LOOP>::assignCreaseLimitTangentMasks</a>(VERTEX <span class=\"keyword\">const</span>& vertex,</div>\n-<div class=\"line\"><a id=\"l00421\" name=\"l00421\"></a><span class=\"lineno\"> 421</span> MASK& tan1Mask, MASK& 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 "leading" 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\">// "trailing edge". 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 < 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 "inward" 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 "outward" 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 "inward" 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 < 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 > 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 <= 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 < 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> <></div>\n-<div class=\"line\"><a id=\"l00530\" name=\"l00530\"></a><span class=\"lineno\"> 530</span><span class=\"keyword\">template</span> <<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK></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<SCHEME_LOOP>::assignSmoothLimitTangentMasks</a>(VERTEX <span class=\"keyword\">const</span>& vertex,</div>\n-<div class=\"line\"><a id=\"l00533\" name=\"l00533\"></a><span class=\"lineno\"> 533</span> MASK& tan1Mask, MASK& 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 < 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 &edge, MASK &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 &edge, MASK &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 &vertex, MASK &tan1, MASK &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 &edge, MASK &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 &vertex, MASK &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 &edge, MASK &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 &vertex, MASK &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 &edge, MASK &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 &vertex, MASK &tan1, MASK &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 &vertex, MASK &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 &vertex, MASK &tan1, MASK &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> |\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 "../version.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00734_source.html\">../sdc/options.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00764_source.html\">../osd/bufferDescriptor.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>"</code><br />\n+<code>#include <cstddef></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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01333.html\">Crease</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Types, constants and utilities related to semi-sharp creasing – 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  </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00913\" id=\"r_a00913\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 "../sdc/options.h"</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 "../version.h"</span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span><span class=\"preprocessor\">#include "../osd/bufferDescriptor.h"</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"preprocessor\">#include "../osd/types.h"</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 <cstddef></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 <= <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 > <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 >= <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> < sharpness) && (sharpness < <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 << 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 << 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 << 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 << 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>& 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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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->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->BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"> 86</span> dstBuffer->BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"> 87</span> &stencilTable->GetSizes()[0],</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"> 88</span> &stencilTable->GetOffsets()[0],</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"> 89</span> &stencilTable->GetControlIndices()[0],</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"> 90</span> &stencilTable->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->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> &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> &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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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> &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> &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 > 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->BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\"> 181</span> dstBuffer->BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\"> 182</span> duBuffer->BindCpuBuffer(), duDesc,</div>\n+<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\"> 183</span> dvBuffer->BindCpuBuffer(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\"> 184</span> &stencilTable->GetSizes()[0],</div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"> 185</span> &stencilTable->GetOffsets()[0],</div>\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\"> 186</span> &stencilTable->GetControlIndices()[0],</div>\n+<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\"> 187</span> &stencilTable->GetWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"> 188</span> &stencilTable->GetDuWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\"> 189</span> &stencilTable->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->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> &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> &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> &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> &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 &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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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> &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> &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> &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> &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> &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->BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\"> 319</span> dstBuffer->BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\"> 320</span> duBuffer->BindCpuBuffer(), duDesc,</div>\n+<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\"> 321</span> dvBuffer->BindCpuBuffer(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\"> 322</span> duuBuffer->BindCpuBuffer(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\"> 323</span> duvBuffer->BindCpuBuffer(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\"> 324</span> dvvBuffer->BindCpuBuffer(), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\"> 325</span> &stencilTable->GetSizes()[0],</div>\n+<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\"> 326</span> &stencilTable->GetOffsets()[0],</div>\n+<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\"> 327</span> &stencilTable->GetControlIndices()[0],</div>\n+<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\"> 328</span> &stencilTable->GetWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\"> 329</span> &stencilTable->GetDuWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\"> 330</span> &stencilTable->GetDvWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\"> 331</span> &stencilTable->GetDuuWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\"> 332</span> &stencilTable->GetDuvWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\"> 333</span> &stencilTable->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->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> &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> &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> &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> &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> &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> &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> &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> <<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></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> &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> &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->BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\"> 467</span> dstBuffer->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->BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l00470\" name=\"l00470\"></a><span class=\"lineno\"> 470</span> patchTable->GetPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00471\" name=\"l00471\"></a><span class=\"lineno\"> 471</span> patchTable->GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00472\" name=\"l00472\"></a><span class=\"lineno\"> 472</span> patchTable->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> <<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></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> &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> &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> &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> &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'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<PatchCoord> )</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->BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00537\" name=\"l00537\"></a><span class=\"lineno\"> 537</span> dstBuffer->BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00538\" name=\"l00538\"></a><span class=\"lineno\"> 538</span> duBuffer->BindCpuBuffer(), duDesc,</div>\n+<div class=\"line\"><a id=\"l00539\" name=\"l00539\"></a><span class=\"lineno\"> 539</span> dvBuffer->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->BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l00542\" name=\"l00542\"></a><span class=\"lineno\"> 542</span> patchTable->GetPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00543\" name=\"l00543\"></a><span class=\"lineno\"> 543</span> patchTable->GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00544\" name=\"l00544\"></a><span class=\"lineno\"> 544</span> patchTable->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> <<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></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> &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> &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> &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> &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> &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> &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> &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'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<PatchCoord> )</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->BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00630\" name=\"l00630\"></a><span class=\"lineno\"> 630</span> dstBuffer->BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00631\" name=\"l00631\"></a><span class=\"lineno\"> 631</span> duBuffer->BindCpuBuffer(), duDesc,</div>\n+<div class=\"line\"><a id=\"l00632\" name=\"l00632\"></a><span class=\"lineno\"> 632</span> dvBuffer->BindCpuBuffer(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l00633\" name=\"l00633\"></a><span class=\"lineno\"> 633</span> duuBuffer->BindCpuBuffer(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l00634\" name=\"l00634\"></a><span class=\"lineno\"> 634</span> duvBuffer->BindCpuBuffer(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l00635\" name=\"l00635\"></a><span class=\"lineno\"> 635</span> dvvBuffer->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->BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l00638\" name=\"l00638\"></a><span class=\"lineno\"> 638</span> patchTable->GetPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00639\" name=\"l00639\"></a><span class=\"lineno\"> 639</span> patchTable->GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00640\" name=\"l00640\"></a><span class=\"lineno\"> 640</span> patchTable->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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> <<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></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> &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> &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->BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00836\" name=\"l00836\"></a><span class=\"lineno\"> 836</span> dstBuffer->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->BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l00839\" name=\"l00839\"></a><span class=\"lineno\"> 839</span> patchTable->GetVaryingPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00840\" name=\"l00840\"></a><span class=\"lineno\"> 840</span> patchTable->GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00841\" name=\"l00841\"></a><span class=\"lineno\"> 841</span> patchTable->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> <<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></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> &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> &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> &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> &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->BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00901\" name=\"l00901\"></a><span class=\"lineno\"> 901</span> dstBuffer->BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00902\" name=\"l00902\"></a><span class=\"lineno\"> 902</span> duBuffer->BindCpuBuffer(), duDesc,</div>\n+<div class=\"line\"><a id=\"l00903\" name=\"l00903\"></a><span class=\"lineno\"> 903</span> dvBuffer->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->BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l00906\" name=\"l00906\"></a><span class=\"lineno\"> 906</span> patchTable->GetVaryingPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00907\" name=\"l00907\"></a><span class=\"lineno\"> 907</span> patchTable->GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00908\" name=\"l00908\"></a><span class=\"lineno\"> 908</span> patchTable->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> <<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></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> &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> &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> &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> &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> &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> &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> &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->BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00989\" name=\"l00989\"></a><span class=\"lineno\"> 989</span> dstBuffer->BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00990\" name=\"l00990\"></a><span class=\"lineno\"> 990</span> duBuffer->BindCpuBuffer(), duDesc,</div>\n+<div class=\"line\"><a id=\"l00991\" name=\"l00991\"></a><span class=\"lineno\"> 991</span> dvBuffer->BindCpuBuffer(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l00992\" name=\"l00992\"></a><span class=\"lineno\"> 992</span> duuBuffer->BindCpuBuffer(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l00993\" name=\"l00993\"></a><span class=\"lineno\"> 993</span> duvBuffer->BindCpuBuffer(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l00994\" name=\"l00994\"></a><span class=\"lineno\"> 994</span> dvvBuffer->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->BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l00997\" name=\"l00997\"></a><span class=\"lineno\"> 997</span> patchTable->GetVaryingPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00998\" name=\"l00998\"></a><span class=\"lineno\"> 998</span> patchTable->GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00999\" name=\"l00999\"></a><span class=\"lineno\"> 999</span> patchTable->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> <<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></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> &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> &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->BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01048\" name=\"l01048\"></a><span class=\"lineno\"> 1048</span> dstBuffer->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->BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l01051\" name=\"l01051\"></a><span class=\"lineno\"> 1051</span> patchTable->GetFVarPatchArrayBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01052\" name=\"l01052\"></a><span class=\"lineno\"> 1052</span> patchTable->GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01053\" name=\"l01053\"></a><span class=\"lineno\"> 1053</span> patchTable->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> <<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></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> &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> &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> &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> &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->BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01116\" name=\"l01116\"></a><span class=\"lineno\"> 1116</span> dstBuffer->BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01117\" name=\"l01117\"></a><span class=\"lineno\"> 1117</span> duBuffer->BindCpuBuffer(), duDesc,</div>\n+<div class=\"line\"><a id=\"l01118\" name=\"l01118\"></a><span class=\"lineno\"> 1118</span> dvBuffer->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->BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l01121\" name=\"l01121\"></a><span class=\"lineno\"> 1121</span> patchTable->GetFVarPatchArrayBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01122\" name=\"l01122\"></a><span class=\"lineno\"> 1122</span> patchTable->GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01123\" name=\"l01123\"></a><span class=\"lineno\"> 1123</span> patchTable->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> <<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></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> &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> &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> &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> &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> &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> &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> &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->BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01207\" name=\"l01207\"></a><span class=\"lineno\"> 1207</span> dstBuffer->BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01208\" name=\"l01208\"></a><span class=\"lineno\"> 1208</span> duBuffer->BindCpuBuffer(), duDesc,</div>\n+<div class=\"line\"><a id=\"l01209\" name=\"l01209\"></a><span class=\"lineno\"> 1209</span> dvBuffer->BindCpuBuffer(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l01210\" name=\"l01210\"></a><span class=\"lineno\"> 1210</span> duuBuffer->BindCpuBuffer(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l01211\" name=\"l01211\"></a><span class=\"lineno\"> 1211</span> duvBuffer->BindCpuBuffer(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l01212\" name=\"l01212\"></a><span class=\"lineno\"> 1212</span> dvvBuffer->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->BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l01215\" name=\"l01215\"></a><span class=\"lineno\"> 1215</span> patchTable->GetFVarPatchArrayBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01216\" name=\"l01216\"></a><span class=\"lineno\"> 1216</span> patchTable->GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01217\" name=\"l01217\"></a><span class=\"lineno\"> 1217</span> patchTable->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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, float *dst, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const &duDesc, float *dv, BufferDescriptor const &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 &srcDesc, float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const &duDesc, float *dv, BufferDescriptor const &dvDesc, float *duu, BufferDescriptor const &duuDesc, float *duv, BufferDescriptor const &duvDesc, float *dvv, BufferDescriptor const &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 &srcDesc, float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const &duDesc, float *dv, BufferDescriptor const &dvDesc, float *duu, BufferDescriptor const &duuDesc, float *duv, BufferDescriptor const &duvDesc, float *dvv, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const &duDesc, float *dv, BufferDescriptor const &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 &srcDesc, float *dst, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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> |\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 "../version.h"</code><br />\n+<div class=\"textblock\"><code>import "../version.h"</code><br />\n+<code>import "<a class=\"el\" href=\"a00857_source.html\">../far/patchDescriptor.h</a>"</code><br />\n+<code>import <string></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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01337.html\">Options</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01301.html\">MTLPatchShaderSource</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00913\" id=\"r_a00913\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 "../version.h"</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 "../far/patchDescriptor.h"</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 <string></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\">"smooth triangle" 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 ("always sharp")</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\">("edge and corner + propagate corner")</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\">("edge corner")</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 ("bilinear")</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 ("edge only")</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> |\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 "../version.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00743_source.html\">../sdc/scheme.h</a>"</code><br />\n-<code>#include <cassert></code><br />\n-<code>#include <cmath></code><br />\n+<code>#include "<a class=\"el\" href=\"a00704_source.html\">../osd/mesh.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00710_source.html\">../osd/d3d11PatchTable.h</a>"</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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00913\" id=\"r_a00913\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </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>< <a class=\"el\" href=\"a01209.html\">D3D11PatchTable</a> > </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 "../sdc/scheme.h"</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 <cassert></span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"preprocessor\">#include <cmath></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<SCHEME_CATMARK>:</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 "../version.h"</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 "../osd/mesh.h"</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../osd/d3d11PatchTable.h"</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<D3D11PatchTable></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> <></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<SCHEME_CATMARK>::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> <></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<SCHEME_CATMARK>::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> <></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<SCHEME_CATMARK>::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> <></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<SCHEME_CATMARK>::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 "triangle subdivision"</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> <></div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"> 69</span><span class=\"keyword\">template</span> <<span class=\"keyword\">typename</span> EDGE, <span class=\"keyword\">typename</span> MASK></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<SCHEME_CATMARK>::assignSmoothMaskForEdge</a>(EDGE <span class=\"keyword\">const</span>& edge, MASK& 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 < 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> <></div>\n-<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\"> 146</span><span class=\"keyword\">template</span> <<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK></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<SCHEME_CATMARK>::assignCreaseMaskForVertex</a>(VERTEX <span class=\"keyword\">const</span>& vertex, MASK& 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 < 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> <></div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\"> 171</span><span class=\"keyword\">template</span> <<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK></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<SCHEME_CATMARK>::assignSmoothMaskForVertex</a>(VERTEX <span class=\"keyword\">const</span>& vertex, MASK& 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 < 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> <></div>\n-<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\"> 206</span><span class=\"keyword\">template</span> <<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK></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<SCHEME_CATMARK>::assignCornerLimitMask</a>(VERTEX <span class=\"keyword\">const</span>& <span class=\"comment\">/* vertex */</span>, MASK& 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> <></div>\n-<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\"> 219</span><span class=\"keyword\">template</span> <<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK></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<SCHEME_CATMARK>::assignCreaseLimitMask</a>(VERTEX <span class=\"keyword\">const</span>& vertex, MASK& 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 < 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> <></div>\n-<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\"> 245</span><span class=\"keyword\">template</span> <<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK></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<SCHEME_CATMARK>::assignSmoothLimitMask</a>(VERTEX <span class=\"keyword\">const</span>& vertex, MASK& 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 < 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> <></div>\n-<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\"> 299</span><span class=\"keyword\">template</span> <<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK></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<SCHEME_CATMARK>::assignCornerLimitTangentMasks</a>(VERTEX <span class=\"keyword\">const</span>& vertex,</div>\n-<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\"> 302</span> MASK& tan1Mask, MASK& 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 < 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> <></div>\n-<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\"> 332</span><span class=\"keyword\">template</span> <<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK></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<SCHEME_CATMARK>::assignCreaseLimitTangentMasks</a>(VERTEX <span class=\"keyword\">const</span>& vertex,</div>\n-<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\"> 335</span> MASK& tan1Mask, MASK& 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 "leading" 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\">// "trailing edge". 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 < 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 < 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 "inward" 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 < 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 > 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 < 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 < 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 < 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> <></div>\n-<div class=\"line\"><a id=\"l00451\" name=\"l00451\"></a><span class=\"lineno\"> 451</span><span class=\"keyword\">template</span> <<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK></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<SCHEME_CATMARK>::assignSmoothLimitTangentMasks</a>(VERTEX <span class=\"keyword\">const</span>& vertex,</div>\n-<div class=\"line\"><a id=\"l00454\" name=\"l00454\"></a><span class=\"lineno\"> 454</span> MASK& tan1Mask, MASK& 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 < 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 < 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\">"smooth triangle" 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 &edge, MASK &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 &edge, MASK &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 &vertex, MASK &tan1, MASK &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 &vertex, MASK &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 &vertex, MASK &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 &edge, MASK &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 &vertex, MASK &tan1, MASK &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 &vertex, MASK &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 &vertex, MASK &tan1, MASK &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< D3D11PatchTable > 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> |\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 "../version.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00743_source.html\">../sdc/scheme.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00704_source.html\">../osd/mesh.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00776_source.html\">../osd/mtlPatchTable.h</a>"</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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00913\" id=\"r_a00913\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </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>< <a class=\"el\" href=\"a01305.html\">MTLPatchTable</a> > </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 "../sdc/scheme.h"</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 "../version.h"</span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span><span class=\"preprocessor\">#include "../osd/mesh.h"</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"preprocessor\">#include "../osd/mtlPatchTable.h"</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<SCHEME_BILINEAR>:</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<MTLPatchTable></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> <></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<SCHEME_BILINEAR>::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> <></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<SCHEME_BILINEAR>::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> <></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<SCHEME_BILINEAR>::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> <></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<SCHEME_BILINEAR>::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> <></div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"> 60</span><span class=\"keyword\">template</span> <<span class=\"keyword\">typename</span> EDGE, <span class=\"keyword\">typename</span> MASK></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<SCHEME_BILINEAR>::ComputeEdgeVertexMask</a>(EDGE <span class=\"keyword\">const</span>& edge, MASK& 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> <></div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"> 69</span><span class=\"keyword\">template</span> <<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK></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<SCHEME_BILINEAR>::ComputeVertexVertexMask</a>(VERTEX <span class=\"keyword\">const</span>& vertex, MASK& 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> <></div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"> 82</span><span class=\"keyword\">template</span> <<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK></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<SCHEME_BILINEAR>::assignCornerLimitMask</a>(VERTEX <span class=\"keyword\">const</span>& <span class=\"comment\">/* vertex */</span>, MASK& 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> <></div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"> 95</span><span class=\"keyword\">template</span> <<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK></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<SCHEME_BILINEAR>::assignCreaseLimitMask</a>(VERTEX <span class=\"keyword\">const</span>& vertex, MASK& 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> <></div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"> 104</span><span class=\"keyword\">template</span> <<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK></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<SCHEME_BILINEAR>::assignSmoothLimitMask</a>(VERTEX <span class=\"keyword\">const</span>& vertex, MASK& 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> <></div>\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"> 116</span><span class=\"keyword\">template</span> <<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK></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<SCHEME_BILINEAR>::assignCornerLimitTangentMasks</a>(VERTEX <span class=\"keyword\">const</span>& <span class=\"comment\">/* vertex */</span>,</div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"> 119</span> MASK& tan1Mask, MASK& 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> <></div>\n-<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\"> 141</span><span class=\"keyword\">template</span> <<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK></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<SCHEME_BILINEAR>::assignCreaseLimitTangentMasks</a>(VERTEX <span class=\"keyword\">const</span>& vertex,</div>\n-<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\"> 144</span> MASK& tan1Mask, MASK& 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> <></div>\n-<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\"> 150</span><span class=\"keyword\">template</span> <<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK></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<SCHEME_BILINEAR>::assignSmoothLimitTangentMasks</a>(VERTEX <span class=\"keyword\">const</span>& vertex,</div>\n-<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\"> 153</span> MASK& tan1Mask, MASK& 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 &vertexNeighborhood, MASK &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 &vertex, MASK &tan1, MASK &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 &edgeNeighborhood, MASK &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 &vertex, MASK &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 &vertex, MASK &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 &vertex, MASK &tan1, MASK &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 &vertex, MASK &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 &vertex, MASK &tan1, MASK &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< MTLPatchTable > 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> |\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 "../version.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a01492_source.html\">../sdc/types.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00734_source.html\">../sdc/options.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00731_source.html\">../sdc/crease.h</a>"</code><br />\n-<code>#include <cassert></code><br />\n-<code>#include <cstdlib></code><br />\n-<code>#include <vector></code><br />\n+<code>#include <cstddef></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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01341.html\">Scheme< SCHEME_TYPE ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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<SCHEME_TYPE> 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\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01345.html\">Scheme< SCHEME_TYPE >::LocalMask< WEIGHT ></a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01177.html\">CpuVertexBuffer</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00913\" id=\"r_a00913\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </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&\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&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&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")</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 "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 "../ver\n-000020a0: 7369 6f6e 2e68 2671 756f 743b 3c2f 7370 sion.h"</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"</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"</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 "../sdc/cre\n-000022e0: 6173 652e 6826 7175 6f74 3b3c 2f73 7061 ase.h"</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 <\n-000023d0: 3b63 6173 7365 7274 2667 743b 3c2f 7370 ;cassert></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 <cstdlib>\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 <vecto\n-00002500: 7226 6774 3b3c 2f73 7061 6e3e 3c2f 6469 r></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 <SchemeType S\n-00002890: 4348 454d 455f 5459 5045 2667 743b 3c2f CHEME_TYPE></\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>& 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 & 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> <\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></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>& 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> <<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></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& 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 > <<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&\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 <<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>\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>& \n-000041f0: 7665 7274 6578 4e65 6967 6862 6f72 686f vertexNeighborho\n-00004200: 6f64 2c20 4d41 534b 2661 6d70 3b20 706f od, MASK& 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> <<\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></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>& verte\n-00004590: 784e 6569 6768 626f 7268 6f6f 642c 204d xNeighborhood, M\n-000045a0: 4153 4b26 616d 703b 2070 6f73 6974 696f ASK& 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& 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> <<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 ></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 <<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><\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 >& edge, MAS\n-00005880: 4b26 616d 703b 206d 6173 6b29 203c 7370 K& 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 <<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>\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 > <<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>& ed\n-00005da0: 6765 2c20 4d41 534b 2661 6d70 3b20 6d61 ge, MASK& 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> <<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>& e\n-00006080: 6467 652c 204d 4153 4b26 616d 703b 206d dge, MASK& 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><\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 >& vertex, M\n-00006530: 4153 4b26 616d 703b 2070 6f73 2920 3c73 ASK& 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> <<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></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>& ve\n-000067b0: 7274 6578 2c20 4d41 534b 2661 6d70 3b20 rtex, MASK& \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> <<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 ></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>& vert\n-00006a90: 6578 2c20 4d41 534b 2661 6d70 3b20 706f ex, MASK& 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> <<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></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 >& vertex, M\n-00006d80: 4153 4b26 616d 703b 2074 616e 312c 204d ASK& tan1, M\n-00006d90: 4153 4b26 616d 703b 2074 616e 3229 203c ASK& 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> <<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></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 >& vertex, M\n-00007020: 4153 4b26 616d 703b 2074 616e 312c 204d ASK& tan1, M\n-00007030: 4153 4b26 616d 703b 2074 616e 322c 203c ASK& 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></\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>& ve\n-00007310: 7274 6578 2c20 4d41 534b 2661 6d70 3b20 rtex, MASK& \n-00007320: 7461 6e31 2c20 4d41 534b 2661 6d70 3b20 tan1, MASK& \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 "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 <WEIGHT>\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'\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> <<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></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>& <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>&\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>& <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>& <\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 & <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> <<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></\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 "source\n-0000ab30: 2671 756f 743b 2920 7368 6f75 6c64 2068 ") 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 "de\n-0000ac00: 7374 696e 6174 696f 6e26 7175 6f74 3b29 stination")\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'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-><\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-><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 < 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-><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 < 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-><\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-><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 < 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-><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 ><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 -><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 <SchemeType \n-0000d170: 5343 4845 4d45 2667 743b 3c2f 6469 763e SCHEME></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> <<\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></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>::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 >&, MASK&\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> <\n-0000d9d0: 5363 6865 6d65 5479 7065 2053 4348 454d SchemeType SCHEM\n-0000d9e0: 4526 6774 3b3c 2f64 6976 3e0a 3c64 6976 E></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> <<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></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<S\n-0000dcb0: 4348 454d 4526 6774 3b3a 3a61 7373 6967 CHEME>::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>&, 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></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> <<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></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<SCHEM\n-0000e6a0: 4526 6774 3b3a 3a43 6f6d 7075 7465 4661 E>::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>& fa\n-0000e6f0: 6365 2c20 4d41 534b 2661 6d70 3b20 6d61 ce, MASK& 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 < 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'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 > <SchemeType\n-000100c0: 2053 4348 454d 4526 6774 3b3c 2f64 6976 SCHEME></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> <\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></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<S\n-00010370: 4348 454d 4526 6774 3b3a 3a43 6f6d 7075 CHEME>::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>&\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& \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>) &&\n-00010c50: 616d 703b 2028 6564 6765 2e47 6574 5368 amp; (edge.GetSh\n-00010c60: 6172 706e 6573 7328 2920 266c 743b 3d20 arpness() <= \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 > 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 >\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 >= 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 < 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 <\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] > 0.0\n-000125d0: 6629 2026 616d 703b 2661 6d70 3b20 2863 f) && (c\n-000125e0: 4564 6765 5368 6172 706e 6573 735b 315d EdgeSharpness[1]\n-000125f0: 2026 6774 3b20 302e 3066 293b 3c2f 6469 > 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 < 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'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> <\n-00015150: 5363 6865 6d65 5479 7065 2053 4348 454d SchemeType SCHEM\n-00015160: 4526 6774 3b3c 2f64 6976 3e0a 3c64 6976 E></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> <<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></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<SCHEM\n-00015410: 4526 6774 3b3a 3a43 6f6d 7075 7465 5665 E>::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>&\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& \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 ) && (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 <Weight></\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> <S\n-000193f0: 6368 656d 6554 7970 6520 5343 4845 4d45 chemeType SCHEME\n-00019400: 2667 743b 3c2f 6469 763e 0a3c 6469 7620 ></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> <<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></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<SCHEME\n-000196b0: 2667 743b 3a3a 436f 6d70 7574 6556 6572 >::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>& \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> <Schem\n-0001a400: 6554 7970 6520 5343 4845 4d45 2667 743b eType SCHEME>\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 <<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>\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<SCHEME>\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>& 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& \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& \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& \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 &edg\n-0001d140: 652c 204d 4153 4b20 2661 6d70 3b6d 6173 e, MASK &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 &\n-0001d3b0: 3b65 6467 652c 204d 4153 4b20 2661 6d70 ;edge, MASK &\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 &\n-0001d7b0: 3b76 6572 7465 784e 6569 6768 626f 7268 ;vertexNeighborh\n-0001d7c0: 6f6f 642c 204d 4153 4b20 2661 6d70 3b70 ood, MASK &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 &vertex, \n-0001da20: 4d41 534b 2026 616d 703b 7461 6e31 2c20 MASK &tan1, \n-0001da30: 4d41 534b 2026 616d 703b 7461 6e32 2c20 MASK &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 &edge, MASK \n-0001dcb0: 2661 6d70 3b6d 6173 6b29 2063 6f6e 7374 &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 &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 &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 &edge, M\n-0001e4b0: 4153 4b20 2661 6d70 3b6d 6173 6b29 2063 ASK &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 &ve\n-0001e650: 7274 6578 2c20 4d41 534b 2026 616d 703b rtex, MASK &\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 &edge, MASK\n-0001e7c0: 2026 616d 703b 6d61 736b 2920 636f 6e73 &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 &verte\n-0001eba0: 782c 204d 4153 4b20 2661 6d70 3b74 616e x, MASK &tan\n-0001ebb0: 312c 204d 4153 4b20 2661 6d70 3b74 616e 1, MASK &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 &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 &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 &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 &v\n-0001f1c0: 6572 7465 782c 204d 4153 4b20 2661 6d70 ertex, MASK &\n-0001f1d0: 3b74 616e 312c 204d 4153 4b20 2661 6d70 ;tan1, MASK &\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 &\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 & 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 &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 & 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 & 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&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&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&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&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")</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 "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 "../ver\n+00002110: 7369 6f6e 2e68 2671 756f 743b 3c2f 7370 sion.h"</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></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> |\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 "../version.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a01492_source.html\">../sdc/types.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00734_source.html\">../sdc/options.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00740_source.html\">../sdc/bilinearScheme.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00737_source.html\">../sdc/catmarkScheme.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00728_source.html\">../sdc/loopScheme.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00695_source.html\">../vtr/level.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00689_source.html\">../vtr/fvarLevel.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00674_source.html\">../vtr/refinement.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00680_source.html\">../vtr/fvarRefinement.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00692_source.html\">../vtr/stackBuffer.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00698_source.html\">../vtr/componentInterfaces.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a01486_source.html\">../far/types.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00749_source.html\">../far/error.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00782_source.html\">../far/topologyLevel.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00764_source.html\">../far/topologyRefiner.h</a>"</code><br />\n-<code>#include <cassert></code><br />\n+<code>#include "<a class=\"el\" href=\"a00842_source.html\">../far/patchTable.h</a>"</code><br />\n+<code>#include "../osd/nonCopyable.h"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00698_source.html\">../osd/mtlCommon.h</a>"</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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01029.html\">PrimvarRefinerReal< REAL ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </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  </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 "../sdc/types.h"</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"preprocessor\">#include "../sdc/options.h"</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../sdc/bilinearScheme.h"</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"preprocessor\">#include "../sdc/catmarkScheme.h"</span></div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span><span class=\"preprocessor\">#include "../sdc/loopScheme.h"</span></div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"> 34</span><span class=\"preprocessor\">#include "../vtr/level.h"</span></div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span><span class=\"preprocessor\">#include "../vtr/fvarLevel.h"</span></div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span><span class=\"preprocessor\">#include "../vtr/refinement.h"</span></div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span><span class=\"preprocessor\">#include "../vtr/fvarRefinement.h"</span></div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"> 38</span><span class=\"preprocessor\">#include "../vtr/stackBuffer.h"</span></div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"> 39</span><span class=\"preprocessor\">#include "../vtr/componentInterfaces.h"</span></div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"> 40</span><span class=\"preprocessor\">#include "../far/types.h"</span></div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"> 41</span><span class=\"preprocessor\">#include "../far/error.h"</span></div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"> 42</span><span class=\"preprocessor\">#include "../far/topologyLevel.h"</span></div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"> 43</span><span class=\"preprocessor\">#include "../far/topologyRefiner.h"</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 <cassert></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 "../version.h"</span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span><span class=\"preprocessor\">#include "../far/patchTable.h"</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"preprocessor\">#include "../osd/nonCopyable.h"</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../osd/mtlCommon.h"</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<MTLLegacyGregoryPatchTable></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> <<span class=\"keyword\">typename</span> REAL></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> & 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> & <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> <<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U> <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> & src, U & 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> <<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U> <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> & src, U & 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> <<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U> <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> & src, U & 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> <<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U> <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> & src, U & 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> <<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01029.html#a0357839a7fabaa02f1d6d6a3c75e1ec2\">Limit</a>(T <span class=\"keyword\">const</span> & src, U & 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> <<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U, <span class=\"keyword\">class</span> U1, <span class=\"keyword\">class</span> U2></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> & src, U & dstPos, U1 & dstTan1, U2 & 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> <<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01029.html#afdee0e9e9c6edd34c96892efff808a87\">LimitFaceVarying</a>(T <span class=\"keyword\">const</span> & src, U & 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> & 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> & operator=(<a class=\"code hl_class\" href=\"a01029.html\">PrimvarRefinerReal</a> <span class=\"keyword\">const</span> &) { <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> <Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U> <span class=\"keywordtype\">void</span> interpFromFaces(<span class=\"keywordtype\">int</span>, T <span class=\"keyword\">const</span> &, U &) <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> <Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U> <span class=\"keywordtype\">void</span> interpFromEdges(<span class=\"keywordtype\">int</span>, T <span class=\"keyword\">const</span> &, U &) <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> <Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U> <span class=\"keywordtype\">void</span> interpFromVerts(<span class=\"keywordtype\">int</span>, T <span class=\"keyword\">const</span> &, U &) <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> <Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U> <span class=\"keywordtype\">void</span> interpFVarFromFaces(<span class=\"keywordtype\">int</span>, T <span class=\"keyword\">const</span> &, U &, <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> <Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U> <span class=\"keywordtype\">void</span> interpFVarFromEdges(<span class=\"keywordtype\">int</span>, T <span class=\"keyword\">const</span> &, U &, <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> <Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U> <span class=\"keywordtype\">void</span> interpFVarFromVerts(<span class=\"keywordtype\">int</span>, T <span class=\"keyword\">const</span> &, U &, <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> <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></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> & src, U & 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> <Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U></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> & src, U & 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> & _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 <typename MASK> 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 <typename MASK>:</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>& 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>& 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>& 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& 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& 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& 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> <<span class=\"keyword\">typename</span> REAL></div>\n-<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\"> 265</span><span class=\"keyword\">template</span> <<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U></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<REAL>::Interpolate</a>(<span class=\"keywordtype\">int</span> level, T <span class=\"keyword\">const</span> & src, U & 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>0 && level<=(<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<Sdc::SCHEME_CATMARK>(level, src, dst);</div>\n-<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\"> 274</span> interpFromEdges<Sdc::SCHEME_CATMARK>(level, src, dst);</div>\n-<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\"> 275</span> interpFromVerts<Sdc::SCHEME_CATMARK>(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<Sdc::SCHEME_LOOP>(level, src, dst);</div>\n-<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\"> 279</span> interpFromEdges<Sdc::SCHEME_LOOP>(level, src, dst);</div>\n-<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\"> 280</span> interpFromVerts<Sdc::SCHEME_LOOP>(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<Sdc::SCHEME_BILINEAR>(level, src, dst);</div>\n-<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\"> 284</span> interpFromEdges<Sdc::SCHEME_BILINEAR>(level, src, dst);</div>\n-<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\"> 285</span> interpFromVerts<Sdc::SCHEME_BILINEAR>(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> <<span class=\"keyword\">typename</span> REAL></div>\n-<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\"> 291</span><span class=\"keyword\">template</span> <<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U></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<REAL>::InterpolateFaceVarying</a>(<span class=\"keywordtype\">int</span> level, T <span class=\"keyword\">const</span> & src, U & 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>0 && level<=(<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<Sdc::SCHEME_CATMARK>(level, src, dst, channel);</div>\n-<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\"> 300</span> interpFVarFromEdges<Sdc::SCHEME_CATMARK>(level, src, dst, channel);</div>\n-<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\"> 301</span> interpFVarFromVerts<Sdc::SCHEME_CATMARK>(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<Sdc::SCHEME_LOOP>(level, src, dst, channel);</div>\n-<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\"> 305</span> interpFVarFromEdges<Sdc::SCHEME_LOOP>(level, src, dst, channel);</div>\n-<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\"> 306</span> interpFVarFromVerts<Sdc::SCHEME_LOOP>(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<Sdc::SCHEME_BILINEAR>(level, src, dst, channel);</div>\n-<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\"> 310</span> interpFVarFromEdges<Sdc::SCHEME_BILINEAR>(level, src, dst, channel);</div>\n-<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\"> 311</span> interpFVarFromVerts<Sdc::SCHEME_BILINEAR>(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> <<span class=\"keyword\">typename</span> REAL></div>\n-<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\"> 317</span><span class=\"keyword\">template</span> <<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U></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<REAL>::Limit</a>(T <span class=\"keyword\">const</span> & src, U & 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\">"Failure in PrimvarRefiner::Limit() -- "</span></div>\n-<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\"> 324</span> <span class=\"stringliteral\">"last level of refinement does not include full topology."</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<Sdc::SCHEME_CATMARK>(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<Sdc::SCHEME_LOOP>(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<Sdc::SCHEME_BILINEAR>(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> <<span class=\"keyword\">typename</span> REAL></div>\n-<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\"> 342</span><span class=\"keyword\">template</span> <<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U, <span class=\"keyword\">class</span> U1, <span class=\"keyword\">class</span> U2></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<REAL>::Limit</a>(T <span class=\"keyword\">const</span> & src, U & dstPos, U1 & dstTan1, U2 & 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\">"Failure in PrimvarRefiner::Limit() -- "</span></div>\n-<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\"> 349</span> <span class=\"stringliteral\">"last level of refinement does not include full topology."</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<Sdc::SCHEME_CATMARK>(src, dstPos, &dstTan1, &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<Sdc::SCHEME_LOOP>(src, dstPos, &dstTan1, &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<Sdc::SCHEME_BILINEAR>(src, dstPos, &dstTan1, &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> <<span class=\"keyword\">typename</span> REAL></div>\n-<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\"> 367</span><span class=\"keyword\">template</span> <<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U></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<REAL>::LimitFaceVarying</a>(T <span class=\"keyword\">const</span> & src, U & 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\">"Failure in PrimvarRefiner::LimitFaceVarying() -- "</span></div>\n-<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\"> 374</span> <span class=\"stringliteral\">"last level of refinement does not include full topology."</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<Sdc::SCHEME_CATMARK>(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<Sdc::SCHEME_LOOP>(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<Sdc::SCHEME_BILINEAR>(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> <<span class=\"keyword\">typename</span> REAL></div>\n-<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\"> 392</span><span class=\"keyword\">template</span> <<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U></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<REAL>::InterpolateFaceUniform</a>(<span class=\"keywordtype\">int</span> level, T <span class=\"keyword\">const</span> & src, U & 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>0 && level<=(<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> & 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> & 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 < 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> <<span class=\"keyword\">typename</span> REAL></div>\n-<div class=\"line\"><a id=\"l00410\" name=\"l00410\"></a><span class=\"lineno\"> 410</span><span class=\"keyword\">template</span> <<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U></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<REAL>::InterpolateVarying</a>(<span class=\"keywordtype\">int</span> level, T <span class=\"keyword\">const</span> & src, U & 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>0 && level<=(<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> & 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> & 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() > 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 < 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'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 < 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 < 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'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 < 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> <<span class=\"keyword\">typename</span> REAL></div>\n-<div class=\"line\"><a id=\"l00473\" name=\"l00473\"></a><span class=\"lineno\"> 473</span><span class=\"keyword\">template</span> <Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U></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<REAL>::interpFromFaces</a>(<span class=\"keywordtype\">int</span> level, T <span class=\"keyword\">const</span> & src, U & 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> & 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> & 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<SCHEME></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<Weight,16> 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 < 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'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 < 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> <<span class=\"keyword\">typename</span> REAL></div>\n-<div class=\"line\"><a id=\"l00511\" name=\"l00511\"></a><span class=\"lineno\"> 511</span><span class=\"keyword\">template</span> <Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U></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<REAL>::interpFromEdges(<span class=\"keywordtype\">int</span> level, T <span class=\"keyword\">const</span> & src, U & 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> & 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> & 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> & 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<SCHEME> 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<Weight,8> 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 < 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) > 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'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() > 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 < 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() > 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 >= 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> <<span class=\"keyword\">typename</span> REAL></div>\n-<div class=\"line\"><a id=\"l00581\" name=\"l00581\"></a><span class=\"lineno\"> 581</span><span class=\"keyword\">template</span> <Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U></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<REAL>::interpFromVerts(<span class=\"keywordtype\">int</span> level, T <span class=\"keyword\">const</span> & src, U & 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> & 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> & 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> & 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<SCHEME> 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<Weight,32> 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 < 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(&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'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() > 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 < 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() > 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 < 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> <<span class=\"keyword\">typename</span> REAL></div>\n-<div class=\"line\"><a id=\"l00655\" name=\"l00655\"></a><span class=\"lineno\"> 655</span><span class=\"keyword\">template</span> <Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U></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<REAL>::interpFVarFromFaces(<span class=\"keywordtype\">int</span> level, T <span class=\"keyword\">const</span> & src, U & 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> & 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<SCHEME> 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> & 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> & 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> & 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> & 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<Weight,16> 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 < 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'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 < 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> <<span class=\"keyword\">typename</span> REAL></div>\n-<div class=\"line\"><a id=\"l00704\" name=\"l00704\"></a><span class=\"lineno\"> 704</span><span class=\"keyword\">template</span> <Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U></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<REAL>::interpFVarFromEdges(<span class=\"keywordtype\">int</span> level, T <span class=\"keyword\">const</span> & src, U & 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> & 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<SCHEME> 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> & 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> & 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> & 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> & 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> & 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<Weight,8> 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 < 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) > 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'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 "other side"</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 "directly", 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 "src" 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 "dst" 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() > 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 < 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 "i" 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 >= 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 > 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 < 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> <<span class=\"keyword\">typename</span> REAL></div>\n-<div class=\"line\"><a id=\"l00849\" name=\"l00849\"></a><span class=\"lineno\"> 849</span><span class=\"keyword\">template</span> <Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U></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<REAL>::interpFVarFromVerts(<span class=\"keywordtype\">int</span> level, T <span class=\"keyword\">const</span> & src, U & 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> & 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<SCHEME> 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> & 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> & 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> & 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> & 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> & 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<Weight,32> 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<Vtr::Index,16> 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 < 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 && 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(&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 "other side"</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 "directly", 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 "src" 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 "dst" 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'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() > 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 < 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() > 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 < 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 < 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> <<span class=\"keyword\">typename</span> REAL></div>\n-<div class=\"line\"><a id=\"l01022\" name=\"l01022\"></a><span class=\"lineno\"> 1022</span><span class=\"keyword\">template</span> <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></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<REAL>::limit(T <span class=\"keyword\">const</span> & src, U & 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<SCHEME> 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> & 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 && 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<Index,33> indexBuffer(maxWeightsPerMask);</div>\n-<div class=\"line\"><a id=\"l01035\" name=\"l01035\"></a><span class=\"lineno\"> 1035</span> Vtr::internal::StackBuffer<Weight,99> 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 < 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 < 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 && 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 < 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 >= 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'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 < 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 < 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 "padded" 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 & dstTan1 = *dstTan1Ptr;</div>\n-<div class=\"line\"><a id=\"l01138\" name=\"l01138\"></a><span class=\"lineno\"> 1138</span> U2 & 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 < 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 < 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> <<span class=\"keyword\">typename</span> REAL></div>\n-<div class=\"line\"><a id=\"l01157\" name=\"l01157\"></a><span class=\"lineno\"> 1157</span><span class=\"keyword\">template</span> <Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U></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<REAL>::limitFVar(T <span class=\"keyword\">const</span> & src, U & 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<SCHEME> 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> & 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> & 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<Weight,33> weightBuffer(maxWeightsPerMask);</div>\n-<div class=\"line\"><a id=\"l01169\" name=\"l01169\"></a><span class=\"lineno\"> 1169</span> Vtr::internal::StackBuffer<Index,16> 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 < 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 < 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() > 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 < 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 >= 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() > 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 < 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 < 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><float> {</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> & 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><float>(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><<span class=\"keyword\">typename</span> DEVICE_CONTEXT></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<MTLBuffer> 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<MTLBuffer> <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<MTLBuffer> <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 &src, U &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 &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 &src, U &dstPos, U1 &dstTan1, U2 &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 &src, U &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 & 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 &src, U &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 &src, U &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 &src, U &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 &src, U &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 &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<MTLBuffer> <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<MTLBuffer> _vertexBuffer;</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"> 80</span> id<MTLBuffer> _vertexValenceBuffer;</div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"> 81</span> id<MTLBuffer> _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< MTLBuffer > 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< MTLBuffer > 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< MTLBuffer > 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< MTLBuffer > 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> |\n-<a href=\"#typedef-members\">Typedefs</a> |\n-<a href=\"#enum-members\">Enumerations</a> |\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> |\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 "../version.h"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00755_source.html\">../osd/opencl.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00764_source.html\">../osd/bufferDescriptor.h</a>"</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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01145.html\">CLStencilTable</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n <tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </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(* </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\"> </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\"> </td></tr>\n-<tr class=\"memitem:a2bd300390ebc686e71a3690f4a0b1726\" id=\"r_a2bd300390ebc686e71a3690f4a0b1726\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef void(* </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\"> </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\"> </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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45a\">ErrorType</a> { <br />\n-  <a class=\"el\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aabeca977bc439b451aea1325f48a52a0b\">FAR_NO_ERROR</a>\n-, <br />\n-  <a class=\"el\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aa2a5bda2a3e25aa282462381f55284980\">FAR_FATAL_ERROR</a>\n-, <br />\n-  <a class=\"el\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aa3efe6cb2ec7e23769d53919dfb3291b5\">FAR_INTERNAL_CODING_ERROR</a>\n-, <br />\n-  <a class=\"el\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aa9b2839feb039937015e9668f601e4d32\">FAR_CODING_ERROR</a>\n-, <br />\n-  <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\"> </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 </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\"> </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\"> </td></tr>\n-<tr class=\"memitem:a73bbe6b41209e4c34234f192f0193a63\" id=\"r_a73bbe6b41209e4c34234f192f0193a63\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void </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\"> </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\"> </td></tr>\n-<tr class=\"memitem:a25d51c3a61fb3dacded6e48d01fd2fdb\" id=\"r_a25d51c3a61fb3dacded6e48d01fd2fdb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void </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\"> </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\"> </td></tr>\n-<tr class=\"memitem:a97d41b6faaf421937e6b82bd1c3067db\" id=\"r_a97d41b6faaf421937e6b82bd1c3067db\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void </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\"> </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\"> </td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 "../osd/opencl.h"</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../osd/types.h"</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"preprocessor\">#include "../osd/bufferDescriptor.h"</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> <<span class=\"keyword\">typename</span> DEVICE_CONTEXT></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->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> <<span class=\"keyword\">typename</span> DEVICE_CONTEXT></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->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 "printf")</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 "printf")</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 "printf")</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 "printf")</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> <<span class=\"keyword\">typename</span> DEVICE_CONTEXT></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> &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> &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> &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> &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->GetContext(),</div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"> 113</span> deviceContext->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> &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> &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> &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> &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-><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> <<span class=\"keyword\">typename</span> DEVICE_CONTEXT></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> &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> &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> &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> &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> &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> &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> &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->GetContext(),</div>\n+<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\"> 142</span> deviceContext->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> &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> &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> &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> &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> &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> &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> &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-><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> <<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></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> &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> &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-><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-><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> <<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></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> &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> &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> &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> &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-><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-><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> <<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></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> &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> &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> &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> &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> &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> &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> &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-><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-><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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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->BindCLBuffer(_clCommandQueue), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00508\" name=\"l00508\"></a><span class=\"lineno\"> 508</span> dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00509\" name=\"l00509\"></a><span class=\"lineno\"> 509</span> stencilTable->GetSizesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00510\" name=\"l00510\"></a><span class=\"lineno\"> 510</span> stencilTable->GetOffsetsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00511\" name=\"l00511\"></a><span class=\"lineno\"> 511</span> stencilTable->GetIndicesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00512\" name=\"l00512\"></a><span class=\"lineno\"> 512</span> stencilTable->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->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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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> &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> &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->BindCLBuffer(_clCommandQueue), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00571\" name=\"l00571\"></a><span class=\"lineno\"> 571</span> dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00572\" name=\"l00572\"></a><span class=\"lineno\"> 572</span> duBuffer->BindCLBuffer(_clCommandQueue), duDesc,</div>\n+<div class=\"line\"><a id=\"l00573\" name=\"l00573\"></a><span class=\"lineno\"> 573</span> dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc,</div>\n+<div class=\"line\"><a id=\"l00574\" name=\"l00574\"></a><span class=\"lineno\"> 574</span> stencilTable->GetSizesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00575\" name=\"l00575\"></a><span class=\"lineno\"> 575</span> stencilTable->GetOffsetsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00576\" name=\"l00576\"></a><span class=\"lineno\"> 576</span> stencilTable->GetIndicesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00577\" name=\"l00577\"></a><span class=\"lineno\"> 577</span> stencilTable->GetWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00578\" name=\"l00578\"></a><span class=\"lineno\"> 578</span> stencilTable->GetDuWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00579\" name=\"l00579\"></a><span class=\"lineno\"> 579</span> stencilTable->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->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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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> &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> &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> &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> &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> &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->BindCLBuffer(_clCommandQueue), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00659\" name=\"l00659\"></a><span class=\"lineno\"> 659</span> dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00660\" name=\"l00660\"></a><span class=\"lineno\"> 660</span> duBuffer->BindCLBuffer(_clCommandQueue), duDesc,</div>\n+<div class=\"line\"><a id=\"l00661\" name=\"l00661\"></a><span class=\"lineno\"> 661</span> dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc,</div>\n+<div class=\"line\"><a id=\"l00662\" name=\"l00662\"></a><span class=\"lineno\"> 662</span> duuBuffer->BindCLBuffer(_clCommandQueue), duuDesc,</div>\n+<div class=\"line\"><a id=\"l00663\" name=\"l00663\"></a><span class=\"lineno\"> 663</span> duvBuffer->BindCLBuffer(_clCommandQueue), duvDesc,</div>\n+<div class=\"line\"><a id=\"l00664\" name=\"l00664\"></a><span class=\"lineno\"> 664</span> dvvBuffer->BindCLBuffer(_clCommandQueue), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00665\" name=\"l00665\"></a><span class=\"lineno\"> 665</span> stencilTable->GetSizesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00666\" name=\"l00666\"></a><span class=\"lineno\"> 666</span> stencilTable->GetOffsetsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00667\" name=\"l00667\"></a><span class=\"lineno\"> 667</span> stencilTable->GetIndicesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00668\" name=\"l00668\"></a><span class=\"lineno\"> 668</span> stencilTable->GetWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00669\" name=\"l00669\"></a><span class=\"lineno\"> 669</span> stencilTable->GetDuWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00670\" name=\"l00670\"></a><span class=\"lineno\"> 670</span> stencilTable->GetDvWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00671\" name=\"l00671\"></a><span class=\"lineno\"> 671</span> stencilTable->GetDuuWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00672\" name=\"l00672\"></a><span class=\"lineno\"> 672</span> stencilTable->GetDuvWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00673\" name=\"l00673\"></a><span class=\"lineno\"> 673</span> stencilTable->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->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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> <<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></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> &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> &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-><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-><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> <<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></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> &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> &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> &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> &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-><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-><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> <<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></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> &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> &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> &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> &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> &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> &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> &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-><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-><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> <<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></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> &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> &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->BindCLBuffer(_clCommandQueue), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01228\" name=\"l01228\"></a><span class=\"lineno\"> 1228</span> dstBuffer->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->BindCLBuffer(_clCommandQueue),</div>\n+<div class=\"line\"><a id=\"l01233\" name=\"l01233\"></a><span class=\"lineno\"> 1233</span> patchTable->GetPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l01234\" name=\"l01234\"></a><span class=\"lineno\"> 1234</span> patchTable->GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l01235\" name=\"l01235\"></a><span class=\"lineno\"> 1235</span> patchTable->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> <<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></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> &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> &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> &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> &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->BindCLBuffer(_clCommandQueue), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01301\" name=\"l01301\"></a><span class=\"lineno\"> 1301</span> dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01302\" name=\"l01302\"></a><span class=\"lineno\"> 1302</span> duBuffer->BindCLBuffer(_clCommandQueue), duDesc,</div>\n+<div class=\"line\"><a id=\"l01303\" name=\"l01303\"></a><span class=\"lineno\"> 1303</span> dvBuffer->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->BindCLBuffer(_clCommandQueue),</div>\n+<div class=\"line\"><a id=\"l01306\" name=\"l01306\"></a><span class=\"lineno\"> 1306</span> patchTable->GetPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l01307\" name=\"l01307\"></a><span class=\"lineno\"> 1307</span> patchTable->GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l01308\" name=\"l01308\"></a><span class=\"lineno\"> 1308</span> patchTable->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> <<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></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> &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> &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> &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> &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> &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> &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> &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->BindCLBuffer(_clCommandQueue), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01395\" name=\"l01395\"></a><span class=\"lineno\"> 1395</span> dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01396\" name=\"l01396\"></a><span class=\"lineno\"> 1396</span> duBuffer->BindCLBuffer(_clCommandQueue), duDesc,</div>\n+<div class=\"line\"><a id=\"l01397\" name=\"l01397\"></a><span class=\"lineno\"> 1397</span> dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc,</div>\n+<div class=\"line\"><a id=\"l01398\" name=\"l01398\"></a><span class=\"lineno\"> 1398</span> duuBuffer->BindCLBuffer(_clCommandQueue), duuDesc,</div>\n+<div class=\"line\"><a id=\"l01399\" name=\"l01399\"></a><span class=\"lineno\"> 1399</span> duvBuffer->BindCLBuffer(_clCommandQueue), duvDesc,</div>\n+<div class=\"line\"><a id=\"l01400\" name=\"l01400\"></a><span class=\"lineno\"> 1400</span> dvvBuffer->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->BindCLBuffer(_clCommandQueue),</div>\n+<div class=\"line\"><a id=\"l01403\" name=\"l01403\"></a><span class=\"lineno\"> 1403</span> patchTable->GetPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l01404\" name=\"l01404\"></a><span class=\"lineno\"> 1404</span> patchTable->GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l01405\" name=\"l01405\"></a><span class=\"lineno\"> 1405</span> patchTable->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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> <<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></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> &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> &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-><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-><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> <<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></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> &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> &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->BindCLBuffer(_clCommandQueue), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01579\" name=\"l01579\"></a><span class=\"lineno\"> 1579</span> dstBuffer->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->BindCLBuffer(_clCommandQueue),</div>\n+<div class=\"line\"><a id=\"l01584\" name=\"l01584\"></a><span class=\"lineno\"> 1584</span> patchTable->GetVaryingPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l01585\" name=\"l01585\"></a><span class=\"lineno\"> 1585</span> patchTable->GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l01586\" name=\"l01586\"></a><span class=\"lineno\"> 1586</span> patchTable->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> <<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></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> &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> &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> &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> &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-><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-><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> <<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></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> &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> &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> &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> &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->BindCLBuffer(_clCommandQueue), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01762\" name=\"l01762\"></a><span class=\"lineno\"> 1762</span> dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01763\" name=\"l01763\"></a><span class=\"lineno\"> 1763</span> duBuffer->BindCLBuffer(_clCommandQueue), duDesc,</div>\n+<div class=\"line\"><a id=\"l01764\" name=\"l01764\"></a><span class=\"lineno\"> 1764</span> dvBuffer->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->BindCLBuffer(_clCommandQueue),</div>\n+<div class=\"line\"><a id=\"l01767\" name=\"l01767\"></a><span class=\"lineno\"> 1767</span> patchTable->GetVaryingPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l01768\" name=\"l01768\"></a><span class=\"lineno\"> 1768</span> patchTable->GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l01769\" name=\"l01769\"></a><span class=\"lineno\"> 1769</span> patchTable->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> <<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></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> &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> &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> &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> &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> &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> &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> &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-><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-><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> <<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></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> &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> &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> &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> &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> &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> &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> &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->BindCLBuffer(_clCommandQueue), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01994\" name=\"l01994\"></a><span class=\"lineno\"> 1994</span> dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01995\" name=\"l01995\"></a><span class=\"lineno\"> 1995</span> duBuffer->BindCLBuffer(_clCommandQueue), duDesc,</div>\n+<div class=\"line\"><a id=\"l01996\" name=\"l01996\"></a><span class=\"lineno\"> 1996</span> dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc,</div>\n+<div class=\"line\"><a id=\"l01997\" name=\"l01997\"></a><span class=\"lineno\"> 1997</span> duuBuffer->BindCLBuffer(_clCommandQueue), duuDesc,</div>\n+<div class=\"line\"><a id=\"l01998\" name=\"l01998\"></a><span class=\"lineno\"> 1998</span> duvBuffer->BindCLBuffer(_clCommandQueue), duvDesc,</div>\n+<div class=\"line\"><a id=\"l01999\" name=\"l01999\"></a><span class=\"lineno\"> 1999</span> dvvBuffer->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->BindCLBuffer(_clCommandQueue),</div>\n+<div class=\"line\"><a id=\"l02002\" name=\"l02002\"></a><span class=\"lineno\"> 2002</span> patchTable->GetVaryingPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l02003\" name=\"l02003\"></a><span class=\"lineno\"> 2003</span> patchTable->GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l02004\" name=\"l02004\"></a><span class=\"lineno\"> 2004</span> patchTable->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> <<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></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> &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> &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-><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-><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> <<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></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> &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> &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->BindCLBuffer(_clCommandQueue), srcDesc,</div>\n+<div class=\"line\"><a id=\"l02155\" name=\"l02155\"></a><span class=\"lineno\"> 2155</span> dstBuffer->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->BindCLBuffer(_clCommandQueue),</div>\n+<div class=\"line\"><a id=\"l02160\" name=\"l02160\"></a><span class=\"lineno\"> 2160</span> patchTable->GetFVarPatchArrayBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l02161\" name=\"l02161\"></a><span class=\"lineno\"> 2161</span> patchTable->GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l02162\" name=\"l02162\"></a><span class=\"lineno\"> 2162</span> patchTable->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> <<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></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> &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> &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> &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> &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-><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-><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> <<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></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> &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> &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> &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> &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->BindCLBuffer(_clCommandQueue), srcDesc,</div>\n+<div class=\"line\"><a id=\"l02343\" name=\"l02343\"></a><span class=\"lineno\"> 2343</span> dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,</div>\n+<div class=\"line\"><a id=\"l02344\" name=\"l02344\"></a><span class=\"lineno\"> 2344</span> duBuffer->BindCLBuffer(_clCommandQueue), duDesc,</div>\n+<div class=\"line\"><a id=\"l02345\" name=\"l02345\"></a><span class=\"lineno\"> 2345</span> dvBuffer->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->BindCLBuffer(_clCommandQueue),</div>\n+<div class=\"line\"><a id=\"l02348\" name=\"l02348\"></a><span class=\"lineno\"> 2348</span> patchTable->GetFVarPatchArrayBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l02349\" name=\"l02349\"></a><span class=\"lineno\"> 2349</span> patchTable->GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l02350\" name=\"l02350\"></a><span class=\"lineno\"> 2350</span> patchTable->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> <<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></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> &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> &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> &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> &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> &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> &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> &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-><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-><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> <<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></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> &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> &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> &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> &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> &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> &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> &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->BindCLBuffer(_clCommandQueue), srcDesc,</div>\n+<div class=\"line\"><a id=\"l02581\" name=\"l02581\"></a><span class=\"lineno\"> 2581</span> dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,</div>\n+<div class=\"line\"><a id=\"l02582\" name=\"l02582\"></a><span class=\"lineno\"> 2582</span> duBuffer->BindCLBuffer(_clCommandQueue), duDesc,</div>\n+<div class=\"line\"><a id=\"l02583\" name=\"l02583\"></a><span class=\"lineno\"> 2583</span> dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc,</div>\n+<div class=\"line\"><a id=\"l02584\" name=\"l02584\"></a><span class=\"lineno\"> 2584</span> duuBuffer->BindCLBuffer(_clCommandQueue), duuDesc,</div>\n+<div class=\"line\"><a id=\"l02585\" name=\"l02585\"></a><span class=\"lineno\"> 2585</span> duvBuffer->BindCLBuffer(_clCommandQueue), duvDesc,</div>\n+<div class=\"line\"><a id=\"l02586\" name=\"l02586\"></a><span class=\"lineno\"> 2586</span> dvvBuffer->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->BindCLBuffer(_clCommandQueue),</div>\n+<div class=\"line\"><a id=\"l02589\" name=\"l02589\"></a><span class=\"lineno\"> 2589</span> patchTable->GetFVarPatchArrayBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l02590\" name=\"l02590\"></a><span class=\"lineno\"> 2590</span> patchTable->GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l02591\" name=\"l02591\"></a><span class=\"lineno\"> 2591</span> patchTable->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> &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> &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> &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> &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> &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> &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> &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> <<span class=\"keyword\">typename</span> DEVICE_CONTEXT></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->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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, cl_mem dst, BufferDescriptor const &dstDesc, cl_mem du, BufferDescriptor const &duDesc, cl_mem dv, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, cl_mem dst, BufferDescriptor const &dstDesc, cl_mem du, BufferDescriptor const &duDesc, cl_mem dv, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, BufferDescriptor const &duuDesc, BufferDescriptor const &duvDesc, BufferDescriptor const &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 &srcDesc, cl_mem dst, BufferDescriptor const &dstDesc, cl_mem du, BufferDescriptor const &duDesc, cl_mem dv, BufferDescriptor const &dvDesc, cl_mem duu, BufferDescriptor const &duuDesc, cl_mem duv, BufferDescriptor const &duvDesc, cl_mem dvv, BufferDescriptor const &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 &srcDesc, cl_mem dst, BufferDescriptor const &dstDesc, cl_mem du, BufferDescriptor const &duDesc, cl_mem dv, BufferDescriptor const &dvDesc, cl_mem duu, BufferDescriptor const &duuDesc, cl_mem duv, BufferDescriptor const &duvDesc, cl_mem dvv, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, cl_mem dst, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, BufferDescriptor const &duuDesc, BufferDescriptor const &duvDesc, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc=BufferDescriptor(), BufferDescriptor const &dvDesc=BufferDescriptor(), BufferDescriptor const &duuDesc=BufferDescriptor(), BufferDescriptor const &duvDesc=BufferDescriptor(), BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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> |\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 "../version.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00761_source.html\">../far/patchTable.h</a>"</code><br />\n-<code>#include <vector></code><br />\n+<code>#include "<a class=\"el\" href=\"a00722_source.html\">../osd/opengl.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00764_source.html\">../osd/bufferDescriptor.h</a>"</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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01045.html\">StencilTableFactoryReal< REAL ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01217.html\">GLStencilTableSSBO</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01085.html\">StencilTableFactoryReal< REAL >::Options</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01049.html\">LimitStencilTableFactoryReal< REAL ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01089.html\">LimitStencilTableFactoryReal< REAL >::Options</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01093.html\">LimitStencilTableFactoryReal< REAL >::LocationArray</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01097.html\">StencilTableFactory</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01101.html\">LimitStencilTableFactory</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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  </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n <tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 "../far/patchTable.h"</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 <vector></span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"preprocessor\">#include "../osd/opengl.h"</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../osd/types.h"</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"preprocessor\">#include "../osd/bufferDescriptor.h"</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> <<span class=\"keyword\">typename</span> REAL> <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> <<span class=\"keyword\">typename</span> REAL> <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> <<span class=\"keyword\">typename</span> REAL> <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> <<span class=\"keyword\">typename</span> REAL> <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> <<span class=\"keyword\">typename</span> REAL></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<REAL></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> & 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<REAL></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<REAL></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<REAL></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> &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<REAL></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<REAL></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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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-><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<REAL></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> &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<REAL></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<REAL></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<REAL></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> &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<REAL></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<REAL></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<REAL></a> & 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<REAL></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> &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<REAL></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<REAL></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> <<span class=\"keyword\">typename</span> REAL></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<LocationArray> <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<REAL></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> & 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> & 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<REAL></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><float> {</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<float></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<float></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> & 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<</span><a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">></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<</span><a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">></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<</span><a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a> <span class=\"keyword\">const </span>**<span class=\"keyword\">></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> &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<</span><a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">></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<</span><a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">></span>(baseStencilTable),</div>\n-<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\"> 317</span> <span class=\"keyword\">static_cast<</span><a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">></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> &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<</span><a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">></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<</span><a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">></span>(baseStencilTable),</div>\n-<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\"> 330</span> <span class=\"keyword\">static_cast<</span><a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">></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> &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<</span><a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">></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<</span><a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">></span>(baseStencilTable),</div>\n-<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\"> 344</span> <span class=\"keyword\">static_cast<</span><a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">></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><float> {</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<float></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<float></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> & 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> & 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<</span><a class=\"code hl_class\" href=\"a01081.html\">LimitStencilTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">></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<</span><a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">></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< REAL > const * Create(TopologyRefiner const &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< REAL > const * AppendLocalPointStencilTableFaceVarying(TopologyRefiner const &refiner, StencilTableReal< REAL > const *baseStencilTable, StencilTableReal< REAL > 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< REAL > const * AppendLocalPointStencilTableVarying(TopologyRefiner const &refiner, StencilTableReal< REAL > const *baseStencilTable, StencilTableReal< REAL > 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< REAL > const * AppendLocalPointStencilTable(TopologyRefiner const &refiner, StencilTableReal< REAL > const *baseStencilTable, StencilTableReal< REAL > 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< REAL > const * Create(int numTables, StencilTableReal< REAL > 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< LocationArray > 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< REAL > const * Create(TopologyRefiner const &refiner, LocationArrayVec const &locationArrays, StencilTableReal< REAL > 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 "_offsets" 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 &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 &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 &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 &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 &refiner, LocationArrayVec const &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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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-><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-><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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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> &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> &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-><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-><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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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> &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> &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> &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> &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> &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-><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-><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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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->BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00391\" name=\"l00391\"></a><span class=\"lineno\"> 391</span> dstBuffer->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->GetSizesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\"> 395</span> stencilTable->GetOffsetsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\"> 396</span> stencilTable->GetIndicesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00397\" name=\"l00397\"></a><span class=\"lineno\"> 397</span> stencilTable->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->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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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> &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> &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->BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\"> 441</span> dstBuffer->BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\"> 442</span> duBuffer->BindVBO(), duDesc,</div>\n+<div class=\"line\"><a id=\"l00443\" name=\"l00443\"></a><span class=\"lineno\"> 443</span> dvBuffer->BindVBO(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\"> 444</span> stencilTable->GetSizesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00445\" name=\"l00445\"></a><span class=\"lineno\"> 445</span> stencilTable->GetOffsetsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\"> 446</span> stencilTable->GetIndicesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00447\" name=\"l00447\"></a><span class=\"lineno\"> 447</span> stencilTable->GetWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00448\" name=\"l00448\"></a><span class=\"lineno\"> 448</span> stencilTable->GetDuWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00449\" name=\"l00449\"></a><span class=\"lineno\"> 449</span> stencilTable->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->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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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> &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> &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> &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> &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> &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->BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00512\" name=\"l00512\"></a><span class=\"lineno\"> 512</span> dstBuffer->BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00513\" name=\"l00513\"></a><span class=\"lineno\"> 513</span> duBuffer->BindVBO(), duDesc,</div>\n+<div class=\"line\"><a id=\"l00514\" name=\"l00514\"></a><span class=\"lineno\"> 514</span> dvBuffer->BindVBO(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\"> 515</span> duuBuffer->BindVBO(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\"> 516</span> duvBuffer->BindVBO(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\"> 517</span> dvvBuffer->BindVBO(), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\"> 518</span> stencilTable->GetSizesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\"> 519</span> stencilTable->GetOffsetsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\"> 520</span> stencilTable->GetIndicesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00521\" name=\"l00521\"></a><span class=\"lineno\"> 521</span> stencilTable->GetWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00522\" name=\"l00522\"></a><span class=\"lineno\"> 522</span> stencilTable->GetDuWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00523\" name=\"l00523\"></a><span class=\"lineno\"> 523</span> stencilTable->GetDvWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00524\" name=\"l00524\"></a><span class=\"lineno\"> 524</span> stencilTable->GetDuuWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00525\" name=\"l00525\"></a><span class=\"lineno\"> 525</span> stencilTable->GetDuvWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00526\" name=\"l00526\"></a><span class=\"lineno\"> 526</span> stencilTable->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->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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> <<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></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> &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> &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-><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-><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> <<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></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> &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> &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> &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> &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-><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-><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> <<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></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> &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> &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> &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> &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> &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> &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> &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-><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-><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> <<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></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> &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> &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->BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00951\" name=\"l00951\"></a><span class=\"lineno\"> 951</span> dstBuffer->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->BindVBO(),</div>\n+<div class=\"line\"><a id=\"l00956\" name=\"l00956\"></a><span class=\"lineno\"> 956</span> patchTable->GetPatchArrays(),</div>\n+<div class=\"line\"><a id=\"l00957\" name=\"l00957\"></a><span class=\"lineno\"> 957</span> patchTable->GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00958\" name=\"l00958\"></a><span class=\"lineno\"> 958</span> patchTable->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> <<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></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> &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> &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> &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> &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->BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01007\" name=\"l01007\"></a><span class=\"lineno\"> 1007</span> dstBuffer->BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01008\" name=\"l01008\"></a><span class=\"lineno\"> 1008</span> duBuffer->BindVBO(), duDesc,</div>\n+<div class=\"line\"><a id=\"l01009\" name=\"l01009\"></a><span class=\"lineno\"> 1009</span> dvBuffer->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->BindVBO(),</div>\n+<div class=\"line\"><a id=\"l01012\" name=\"l01012\"></a><span class=\"lineno\"> 1012</span> patchTable->GetPatchArrays(),</div>\n+<div class=\"line\"><a id=\"l01013\" name=\"l01013\"></a><span class=\"lineno\"> 1013</span> patchTable->GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l01014\" name=\"l01014\"></a><span class=\"lineno\"> 1014</span> patchTable->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> <<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></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> &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> &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> &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> &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> &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> &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> &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->BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01084\" name=\"l01084\"></a><span class=\"lineno\"> 1084</span> dstBuffer->BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01085\" name=\"l01085\"></a><span class=\"lineno\"> 1085</span> duBuffer->BindVBO(), duDesc,</div>\n+<div class=\"line\"><a id=\"l01086\" name=\"l01086\"></a><span class=\"lineno\"> 1086</span> dvBuffer->BindVBO(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l01087\" name=\"l01087\"></a><span class=\"lineno\"> 1087</span> duuBuffer->BindVBO(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l01088\" name=\"l01088\"></a><span class=\"lineno\"> 1088</span> duvBuffer->BindVBO(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l01089\" name=\"l01089\"></a><span class=\"lineno\"> 1089</span> dvvBuffer->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->BindVBO(),</div>\n+<div class=\"line\"><a id=\"l01092\" name=\"l01092\"></a><span class=\"lineno\"> 1092</span> patchTable->GetPatchArrays(),</div>\n+<div class=\"line\"><a id=\"l01093\" name=\"l01093\"></a><span class=\"lineno\"> 1093</span> patchTable->GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l01094\" name=\"l01094\"></a><span class=\"lineno\"> 1094</span> patchTable->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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> <<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></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> &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> &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-><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-><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> <<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></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> &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> &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->BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01222\" name=\"l01222\"></a><span class=\"lineno\"> 1222</span> dstBuffer->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->BindVBO(),</div>\n+<div class=\"line\"><a id=\"l01227\" name=\"l01227\"></a><span class=\"lineno\"> 1227</span> patchTable->GetVaryingPatchArrays(),</div>\n+<div class=\"line\"><a id=\"l01228\" name=\"l01228\"></a><span class=\"lineno\"> 1228</span> patchTable->GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l01229\" name=\"l01229\"></a><span class=\"lineno\"> 1229</span> patchTable->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> <<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></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> &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> &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> &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> &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-><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-><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> <<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></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> &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> &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> &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> &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->BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01365\" name=\"l01365\"></a><span class=\"lineno\"> 1365</span> dstBuffer->BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01366\" name=\"l01366\"></a><span class=\"lineno\"> 1366</span> duBuffer->BindVBO(), duDesc,</div>\n+<div class=\"line\"><a id=\"l01367\" name=\"l01367\"></a><span class=\"lineno\"> 1367</span> dvBuffer->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->BindVBO(),</div>\n+<div class=\"line\"><a id=\"l01370\" name=\"l01370\"></a><span class=\"lineno\"> 1370</span> patchTable->GetVaryingPatchArrays(),</div>\n+<div class=\"line\"><a id=\"l01371\" name=\"l01371\"></a><span class=\"lineno\"> 1371</span> patchTable->GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l01372\" name=\"l01372\"></a><span class=\"lineno\"> 1372</span> patchTable->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> <<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></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> &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> &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> &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> &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> &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> &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> &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-><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-><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> <<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></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> &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> &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> &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> &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> &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> &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> &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->BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01557\" name=\"l01557\"></a><span class=\"lineno\"> 1557</span> dstBuffer->BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01558\" name=\"l01558\"></a><span class=\"lineno\"> 1558</span> duBuffer->BindVBO(), duDesc,</div>\n+<div class=\"line\"><a id=\"l01559\" name=\"l01559\"></a><span class=\"lineno\"> 1559</span> dvBuffer->BindVBO(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l01560\" name=\"l01560\"></a><span class=\"lineno\"> 1560</span> duuBuffer->BindVBO(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l01561\" name=\"l01561\"></a><span class=\"lineno\"> 1561</span> duvBuffer->BindVBO(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l01562\" name=\"l01562\"></a><span class=\"lineno\"> 1562</span> dvvBuffer->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->BindVBO(),</div>\n+<div class=\"line\"><a id=\"l01565\" name=\"l01565\"></a><span class=\"lineno\"> 1565</span> patchTable->GetVaryingPatchArrays(),</div>\n+<div class=\"line\"><a id=\"l01566\" name=\"l01566\"></a><span class=\"lineno\"> 1566</span> patchTable->GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l01567\" name=\"l01567\"></a><span class=\"lineno\"> 1567</span> patchTable->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> <<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></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> &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> &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-><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-><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> <<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></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> &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> &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->BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01678\" name=\"l01678\"></a><span class=\"lineno\"> 1678</span> dstBuffer->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->BindVBO(),</div>\n+<div class=\"line\"><a id=\"l01683\" name=\"l01683\"></a><span class=\"lineno\"> 1683</span> patchTable->GetFVarPatchArrays(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01684\" name=\"l01684\"></a><span class=\"lineno\"> 1684</span> patchTable->GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01685\" name=\"l01685\"></a><span class=\"lineno\"> 1685</span> patchTable->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> <<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></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> &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> &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> &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> &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-><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-><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> <<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></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> &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> &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> &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> &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->BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01827\" name=\"l01827\"></a><span class=\"lineno\"> 1827</span> dstBuffer->BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01828\" name=\"l01828\"></a><span class=\"lineno\"> 1828</span> duBuffer->BindVBO(), duDesc,</div>\n+<div class=\"line\"><a id=\"l01829\" name=\"l01829\"></a><span class=\"lineno\"> 1829</span> dvBuffer->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->BindVBO(),</div>\n+<div class=\"line\"><a id=\"l01832\" name=\"l01832\"></a><span class=\"lineno\"> 1832</span> patchTable->GetFVarPatchArrays(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01833\" name=\"l01833\"></a><span class=\"lineno\"> 1833</span> patchTable->GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01834\" name=\"l01834\"></a><span class=\"lineno\"> 1834</span> patchTable->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> <<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></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> &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> &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> &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> &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> &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> &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> &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-><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-><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> <<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></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> &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> &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> &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> &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> &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> &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> &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->BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l02025\" name=\"l02025\"></a><span class=\"lineno\"> 2025</span> dstBuffer->BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l02026\" name=\"l02026\"></a><span class=\"lineno\"> 2026</span> duBuffer->BindVBO(), duDesc,</div>\n+<div class=\"line\"><a id=\"l02027\" name=\"l02027\"></a><span class=\"lineno\"> 2027</span> dvBuffer->BindVBO(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l02028\" name=\"l02028\"></a><span class=\"lineno\"> 2028</span> duuBuffer->BindVBO(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l02029\" name=\"l02029\"></a><span class=\"lineno\"> 2029</span> duvBuffer->BindVBO(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l02030\" name=\"l02030\"></a><span class=\"lineno\"> 2030</span> dvvBuffer->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->BindVBO(),</div>\n+<div class=\"line\"><a id=\"l02033\" name=\"l02033\"></a><span class=\"lineno\"> 2033</span> patchTable->GetFVarPatchArrays(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l02034\" name=\"l02034\"></a><span class=\"lineno\"> 2034</span> patchTable->GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l02035\" name=\"l02035\"></a><span class=\"lineno\"> 2035</span> patchTable->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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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< PatchArray > 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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, GLuint dstBuffer, BufferDescriptor const &dstDesc, GLuint duBuffer, BufferDescriptor const &duDesc, GLuint dvBuffer, BufferDescriptor const &dvDesc, GLuint duuBuffer, BufferDescriptor const &duuDesc, GLuint duvBuffer, BufferDescriptor const &duvDesc, GLuint dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords, GLuint patchCoordsBuffer, const PatchArrayVector &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, GLuint dstBuffer, BufferDescriptor const &dstDesc, GLuint duBuffer, BufferDescriptor const &duDesc, GLuint dvBuffer, BufferDescriptor const &dvDesc, GLuint duuBuffer, BufferDescriptor const &duuDesc, GLuint duvBuffer, BufferDescriptor const &duvDesc, GLuint dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, GLuint dstBuffer, BufferDescriptor const &dstDesc, GLuint duBuffer, BufferDescriptor const &duDesc, GLuint dvBuffer, BufferDescriptor const &dvDesc, int numPatchCoords, GLuint patchCoordsBuffer, const PatchArrayVector &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &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 &srcDesc, GLuint dstBuffer, BufferDescriptor const &dstDesc, GLuint duBuffer, BufferDescriptor const &duDesc, GLuint dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc=BufferDescriptor(), BufferDescriptor const &dvDesc=BufferDescriptor(), BufferDescriptor const &duuDesc=BufferDescriptor(), BufferDescriptor const &duvDesc=BufferDescriptor(), BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, BufferDescriptor const &duuDesc, BufferDescriptor const &duvDesc, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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> |\n-<a href=\"#namespaces\">Namespaces</a> |\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 "../version.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a01486_source.html\">../far/types.h</a>"</code><br />\n+<div class=\"textblock\"><code>#include <CL/opencl.h></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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00989.html\">PatchParam</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </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  </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\"> </td></tr>\n-<tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </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< <a class=\"el\" href=\"a00989.html\">PatchParam</a> > </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\"> </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>< <a class=\"el\" href=\"a00989.html\">PatchParam</a> > </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\"> </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>< <a class=\"el\" href=\"a00989.html\">PatchParam</a> > </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 "../far/types.h"</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> <<span class=\"keyword\">typename</span> REAL></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 & u, REAL & 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> <<span class=\"keyword\">typename</span> REAL></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 & u, REAL & 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> <<span class=\"keyword\">typename</span> REAL></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 & u, REAL & 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> <<span class=\"keyword\">typename</span> REAL></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 & u, REAL & 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 & ((1<<width)-1)) << 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 >> offset) & ((1<<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<PatchParam> <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<PatchParam></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<PatchParam></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 << (<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> <<span class=\"keyword\">typename</span> REAL></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 & u, REAL & 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> <<span class=\"keyword\">typename</span> REAL></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 & u, REAL & 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>()) >= (1 << <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> <<span class=\"keyword\">typename</span> REAL></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 & u, REAL & 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 << <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> <<span class=\"keyword\">typename</span> REAL></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 & u, REAL & 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 << <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< PatchParam > 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< PatchParam > 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< PatchParam > 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 &u, REAL &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 &u, REAL &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 &u, REAL &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 &u, REAL &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 <clew.h></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 <OpenCL/opencl.h></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 <CL/opencl.h></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> |\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> |\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 "../version.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a01486_source.html\">../far/types.h</a>"</code><br />\n-<code>#include <cassert></code><br />\n-<code>#include <cstring></code><br />\n-<code>#include <vector></code><br />\n-<code>#include <iostream></code><br />\n+<code>#include "<a class=\"el\" href=\"a00857_source.html\">../far/patchDescriptor.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00836_source.html\">../far/patchParam.h</a>"</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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01053.html\">StencilReal< REAL ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01057.html\">Stencil</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01061.html\">StencilTableReal< REAL ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01065.html\">StencilTable</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01069.html\">LimitStencilReal< REAL ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01073.html\">LimitStencil</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01077.html\">LimitStencilTableReal< REAL ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01081.html\">LimitStencilTable</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </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 </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 &srcDesc, float *dst, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &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\"> </td></tr>\n+<tr class=\"memitem:af23c35537952bfdd493441e5c42ff2ed\" id=\"r_af23c35537952bfdd493441e5c42ff2ed\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void </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 &srcDesc, float *dst, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &dstDesc, float *dstDu, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &dstDuDesc, float *dstDv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &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\"> </td></tr>\n+<tr class=\"memitem:aa65ed860a2fa5935d99129a898a8f0b6\" id=\"r_aa65ed860a2fa5935d99129a898a8f0b6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void </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 &srcDesc, float *dst, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &dstDesc, float *dstDu, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &dstDuDesc, float *dstDv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &dstDvDesc, float *dstDuu, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &dstDuuDesc, float *dstDuv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &dstDuvDesc, float *dstDvv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &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\"> </td></tr>\n+<tr class=\"memitem:a20e08be34d6183b6943ed7a1586eca4a\" id=\"r_a20e08be34d6183b6943ed7a1586eca4a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void </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 &srcDesc, float *dst, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &dstDesc, float *dstDu, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &dstDuDesc, float *dstDv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &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\"> </td></tr>\n+<tr class=\"memitem:aa0c3c264a43eeddc5cb3a58b006d3d32\" id=\"r_aa0c3c264a43eeddc5cb3a58b006d3d32\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void </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 &srcDesc, float *dst, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &dstDesc, float *dstDu, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &dstDuDesc, float *dstDv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &dstDvDesc, float *dstDuu, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &dstDuuDesc, float *dstDuv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &dstDuvDesc, float *dstDvv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 "../far/types.h"</span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span><span class=\"preprocessor\">#include "../far/patchDescriptor.h"</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"preprocessor\">#include "../far/patchParam.h"</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 <cassert></span></div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span><span class=\"preprocessor\">#include <cstring></span></div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"> 34</span><span class=\"preprocessor\">#include <vector></span></div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span><span class=\"preprocessor\">#include <iostream></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> <<span class=\"keyword\">typename</span> REAL> <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> <<span class=\"keyword\">typename</span> REAL> <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> <<span class=\"keyword\">typename</span> REAL></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> & 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><REAL>;</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><REAL>;</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><float> {</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<float></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> & 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> <<span class=\"keyword\">typename</span> REAL></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<int> <span class=\"keyword\">const</span>& offsets,</div>\n-<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\"> 145</span> std::vector<int> <span class=\"keyword\">const</span>& sizes,</div>\n-<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\"> 146</span> std::vector<int> <span class=\"keyword\">const</span>& sources,</div>\n-<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\"> 147</span> std::vector<REAL> <span class=\"keyword\">const</span>& 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<REAL></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<int> <span class=\"keyword\">const</span> & <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<Index> <span class=\"keyword\">const</span> & <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<Index> <span class=\"keyword\">const</span> & <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<REAL> <span class=\"keyword\">const</span> & <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<REAL></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> <<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U></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> &srcValues, U &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-><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> <<span class=\"keyword\">class</span> T1, <span class=\"keyword\">class</span> T2, <span class=\"keyword\">class</span> U></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> &srcBase, <span class=\"keywordtype\">int</span> numBase, T2 <span class=\"keyword\">const</span> &srcRef,</div>\n-<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\"> 211</span> U &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-><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> <<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U></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-><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> <<span class=\"keyword\">class</span> T1, <span class=\"keyword\">class</span> T2, <span class=\"keyword\">class</span> U></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-><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> <<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U></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> &srcValues, U &dstValues,</div>\n-<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\"> 234</span> std::vector<REAL> <span class=\"keyword\">const</span> & 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> <<span class=\"keyword\">class</span> T1, <span class=\"keyword\">class</span> T2, <span class=\"keyword\">class</span> U></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> &srcBase, <span class=\"keywordtype\">int</span> numBase, T2 <span class=\"keyword\">const</span> &srcRef, U &dstValues,</div>\n-<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\"> 237</span> std::vector<REAL> <span class=\"keyword\">const</span> & 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><REAL>;</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<int> <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<Index> <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<REAL> <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><float> {</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<float></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<int> <span class=\"keyword\">const</span>& offsets,</div>\n-<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\"> 290</span> std::vector<int> <span class=\"keyword\">const</span>& sizes,</div>\n-<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\"> 291</span> std::vector<int> <span class=\"keyword\">const</span>& sources,</div>\n-<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\"> 292</span> std::vector<float> <span class=\"keyword\">const</span>& 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> <<span class=\"keyword\">typename</span> REAL></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><REAL> {</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><REAL>(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-><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-><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-><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-><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><REAL>;</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><REAL>;</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><float> {</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<float></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> & 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> <<span class=\"keyword\">typename</span> REAL></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><REAL> {</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<int> <span class=\"keyword\">const</span>& offsets,</div>\n-<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\"> 414</span> std::vector<int> <span class=\"keyword\">const</span>& sizes,</div>\n-<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\"> 415</span> std::vector<int> <span class=\"keyword\">const</span>& sources,</div>\n-<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\"> 416</span> std::vector<REAL> <span class=\"keyword\">const</span>& weights,</div>\n-<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\"> 417</span> std::vector<REAL> <span class=\"keyword\">const</span>& duWeights,</div>\n-<div class=\"line\"><a id=\"l00418\" name=\"l00418\"></a><span class=\"lineno\"> 418</span> std::vector<REAL> <span class=\"keyword\">const</span>& dvWeights,</div>\n-<div class=\"line\"><a id=\"l00419\" name=\"l00419\"></a><span class=\"lineno\"> 419</span> std::vector<REAL> <span class=\"keyword\">const</span>& duuWeights,</div>\n-<div class=\"line\"><a id=\"l00420\" name=\"l00420\"></a><span class=\"lineno\"> 420</span> std::vector<REAL> <span class=\"keyword\">const</span>& duvWeights,</div>\n-<div class=\"line\"><a id=\"l00421\" name=\"l00421\"></a><span class=\"lineno\"> 421</span> std::vector<REAL> <span class=\"keyword\">const</span>& 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<REAL></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<REAL></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<REAL> <span class=\"keyword\">const</span> & <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<REAL> <span class=\"keyword\">const</span> & <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<REAL> <span class=\"keyword\">const</span> & <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<REAL> <span class=\"keyword\">const</span> & <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<REAL> <span class=\"keyword\">const</span> & <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> <<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U></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> & srcValues, U & uderivs, U & 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-><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-><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> <<span class=\"keyword\">class</span> T1, <span class=\"keyword\">class</span> T2, <span class=\"keyword\">class</span> U></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> & srcBase, <span class=\"keywordtype\">int</span> numBase, T2 <span class=\"keyword\">const</span> & srcRef,</div>\n-<div class=\"line\"><a id=\"l00485\" name=\"l00485\"></a><span class=\"lineno\"> 485</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=\"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-><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-><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> <<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U></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-><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-><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> <<span class=\"keyword\">class</span> T1, <span class=\"keyword\">class</span> T2, <span class=\"keyword\">class</span> U></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-><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-><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> <<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U></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> & srcValues,</div>\n-<div class=\"line\"><a id=\"l00529\" name=\"l00529\"></a><span class=\"lineno\"> 529</span> U & uuderivs, U & uvderivs, U & 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-><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-><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-><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> <<span class=\"keyword\">class</span> T1, <span class=\"keyword\">class</span> T2, <span class=\"keyword\">class</span> U></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> & srcBase, <span class=\"keywordtype\">int</span> numBase, T2 <span class=\"keyword\">const</span> & srcRef,</div>\n-<div class=\"line\"><a id=\"l00539\" name=\"l00539\"></a><span class=\"lineno\"> 539</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=\"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-><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-><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-><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> <<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U></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-><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-><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-><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> <<span class=\"keyword\">class</span> T1, <span class=\"keyword\">class</span> T2, <span class=\"keyword\">class</span> U></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-><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-><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-><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><REAL>;</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<REAL> _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><float> {</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<float></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<int> <span class=\"keyword\">const</span>& offsets,</div>\n-<div class=\"line\"><a id=\"l00598\" name=\"l00598\"></a><span class=\"lineno\"> 598</span> std::vector<int> <span class=\"keyword\">const</span>& sizes,</div>\n-<div class=\"line\"><a id=\"l00599\" name=\"l00599\"></a><span class=\"lineno\"> 599</span> std::vector<int> <span class=\"keyword\">const</span>& sources,</div>\n-<div class=\"line\"><a id=\"l00600\" name=\"l00600\"></a><span class=\"lineno\"> 600</span> std::vector<float> <span class=\"keyword\">const</span>& weights,</div>\n-<div class=\"line\"><a id=\"l00601\" name=\"l00601\"></a><span class=\"lineno\"> 601</span> std::vector<float> <span class=\"keyword\">const</span>& duWeights,</div>\n-<div class=\"line\"><a id=\"l00602\" name=\"l00602\"></a><span class=\"lineno\"> 602</span> std::vector<float> <span class=\"keyword\">const</span>& dvWeights,</div>\n-<div class=\"line\"><a id=\"l00603\" name=\"l00603\"></a><span class=\"lineno\"> 603</span> std::vector<float> <span class=\"keyword\">const</span>& duuWeights,</div>\n-<div class=\"line\"><a id=\"l00604\" name=\"l00604\"></a><span class=\"lineno\"> 604</span> std::vector<float> <span class=\"keyword\">const</span>& duvWeights,</div>\n-<div class=\"line\"><a id=\"l00605\" name=\"l00605\"></a><span class=\"lineno\"> 605</span> std::vector<float> <span class=\"keyword\">const</span>& 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> <<span class=\"keyword\">typename</span> REAL></div>\n-<div class=\"line\"><a id=\"l00617\" name=\"l00617\"></a><span class=\"lineno\"> 617</span><span class=\"keyword\">template</span> <<span class=\"keyword\">class</span> T1, <span class=\"keyword\">class</span> T2, <span class=\"keyword\">class</span> U> <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<REAL>::update</a>(T1 <span class=\"keyword\">const</span> &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> &srcRef, U &dstValues,</div>\n-<div class=\"line\"><a id=\"l00620\" name=\"l00620\"></a><span class=\"lineno\"> 620</span> std::vector<REAL> <span class=\"keyword\">const</span> &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 = &_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 = &_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 = &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 > 0) {</div>\n-<div class=\"line\"><a id=\"l00627\" name=\"l00627\"></a><span class=\"lineno\"> 627</span> assert(start < (<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 < 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 < 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 < *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 < 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> <<span class=\"keyword\">typename</span> REAL></div>\n-<div class=\"line\"><a id=\"l00649\" name=\"l00649\"></a><span class=\"lineno\"> 649</span><span class=\"keyword\">template</span> <<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U> <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<REAL>::update</a>(T <span class=\"keyword\">const</span> &srcValues, U &dstValues,</div>\n-<div class=\"line\"><a id=\"l00651\" name=\"l00651\"></a><span class=\"lineno\"> 651</span> std::vector<REAL> <span class=\"keyword\">const</span> &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 = &_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 = &_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 = &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 > 0) {</div>\n-<div class=\"line\"><a id=\"l00658\" name=\"l00658\"></a><span class=\"lineno\"> 658</span> assert(start < (<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 < 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 < 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 < *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> <<span class=\"keyword\">typename</span> REAL></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<REAL>::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<(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> <<span class=\"keyword\">typename</span> REAL></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<REAL>::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> <<span class=\"keyword\">typename</span> REAL></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<REAL>::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> <<span class=\"keyword\">typename</span> REAL></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<REAL>::shrinkToFit</a>() {</div>\n-<div class=\"line\"><a id=\"l00707\" name=\"l00707\"></a><span class=\"lineno\"> 707</span> std::vector<int>(_sizes).swap(_sizes);</div>\n-<div class=\"line\"><a id=\"l00708\" name=\"l00708\"></a><span class=\"lineno\"> 708</span> std::vector<Index>(_indices).swap(_indices);</div>\n-<div class=\"line\"><a id=\"l00709\" name=\"l00709\"></a><span class=\"lineno\"> 709</span> std::vector<REAL>(_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> <<span class=\"keyword\">typename</span> REAL></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<REAL>::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> <<span class=\"keyword\">typename</span> REAL></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<REAL></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<REAL>::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()) && i<(<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<REAL></a>(<span class=\"keyword\">const_cast<</span><span class=\"keywordtype\">int</span>*<span class=\"keyword\">></span>(&_sizes[i]),</div>\n-<div class=\"line\"><a id=\"l00728\" name=\"l00728\"></a><span class=\"lineno\"> 728</span> <span class=\"keyword\">const_cast<</span><a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a>*<span class=\"keyword\">></span>(&_indices[ofs]),</div>\n-<div class=\"line\"><a id=\"l00729\" name=\"l00729\"></a><span class=\"lineno\"> 729</span> <span class=\"keyword\">const_cast<</span>REAL*<span class=\"keyword\">></span>(&_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> <<span class=\"keyword\">typename</span> REAL></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<REAL></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<REAL>::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> <<span class=\"keyword\">typename</span> REAL></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<REAL>::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<REAL>::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> <<span class=\"keyword\">typename</span> REAL></div>\n-<div class=\"line\"><a id=\"l00748\" name=\"l00748\"></a><span class=\"lineno\"> 748</span><span class=\"keyword\">inline</span> LimitStencilReal<REAL></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<REAL>::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->GetOffsets().empty()) && i<(<span class=\"keywordtype\">int</span>)this->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->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() && !_dvWeights.empty() &&</div>\n-<div class=\"line\"><a id=\"l00755\" name=\"l00755\"></a><span class=\"lineno\"> 755</span> !_duuWeights.empty() && !_duvWeights.empty() && !_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<REAL></a>(</div>\n-<div class=\"line\"><a id=\"l00757\" name=\"l00757\"></a><span class=\"lineno\"> 757</span> <span class=\"keyword\">const_cast<</span><span class=\"keywordtype\">int</span> *<span class=\"keyword\">></span>(&this->GetSizes()[i]),</div>\n-<div class=\"line\"><a id=\"l00758\" name=\"l00758\"></a><span class=\"lineno\"> 758</span> <span class=\"keyword\">const_cast<</span><a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> *<span class=\"keyword\">></span>(&this->GetControlIndices()[ofs]),</div>\n-<div class=\"line\"><a id=\"l00759\" name=\"l00759\"></a><span class=\"lineno\"> 759</span> <span class=\"keyword\">const_cast<</span>REAL *<span class=\"keyword\">></span>(&this->GetWeights()[ofs]),</div>\n-<div class=\"line\"><a id=\"l00760\" name=\"l00760\"></a><span class=\"lineno\"> 760</span> <span class=\"keyword\">const_cast<</span>REAL *<span class=\"keyword\">></span>(&GetDuWeights()[ofs]),</div>\n-<div class=\"line\"><a id=\"l00761\" name=\"l00761\"></a><span class=\"lineno\"> 761</span> <span class=\"keyword\">const_cast<</span>REAL *<span class=\"keyword\">></span>(&GetDvWeights()[ofs]),</div>\n-<div class=\"line\"><a id=\"l00762\" name=\"l00762\"></a><span class=\"lineno\"> 762</span> <span class=\"keyword\">const_cast<</span>REAL *<span class=\"keyword\">></span>(&GetDuuWeights()[ofs]),</div>\n-<div class=\"line\"><a id=\"l00763\" name=\"l00763\"></a><span class=\"lineno\"> 763</span> <span class=\"keyword\">const_cast<</span>REAL *<span class=\"keyword\">></span>(&GetDuvWeights()[ofs]),</div>\n-<div class=\"line\"><a id=\"l00764\" name=\"l00764\"></a><span class=\"lineno\"> 764</span> <span class=\"keyword\">const_cast<</span>REAL *<span class=\"keyword\">></span>(&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() && !_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<REAL></a>(</div>\n-<div class=\"line\"><a id=\"l00767\" name=\"l00767\"></a><span class=\"lineno\"> 767</span> <span class=\"keyword\">const_cast<</span><span class=\"keywordtype\">int</span> *<span class=\"keyword\">></span>(&this->GetSizes()[i]),</div>\n-<div class=\"line\"><a id=\"l00768\" name=\"l00768\"></a><span class=\"lineno\"> 768</span> <span class=\"keyword\">const_cast<</span><a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> *<span class=\"keyword\">></span>(&this->GetControlIndices()[ofs]),</div>\n-<div class=\"line\"><a id=\"l00769\" name=\"l00769\"></a><span class=\"lineno\"> 769</span> <span class=\"keyword\">const_cast<</span>REAL *<span class=\"keyword\">></span>(&this->GetWeights()[ofs]),</div>\n-<div class=\"line\"><a id=\"l00770\" name=\"l00770\"></a><span class=\"lineno\"> 770</span> <span class=\"keyword\">const_cast<</span>REAL *<span class=\"keyword\">></span>(&GetDuWeights()[ofs]),</div>\n-<div class=\"line\"><a id=\"l00771\" name=\"l00771\"></a><span class=\"lineno\"> 771</span> <span class=\"keyword\">const_cast<</span>REAL *<span class=\"keyword\">></span>(&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<REAL></a>(</div>\n-<div class=\"line\"><a id=\"l00774\" name=\"l00774\"></a><span class=\"lineno\"> 774</span> <span class=\"keyword\">const_cast<</span><span class=\"keywordtype\">int</span> *<span class=\"keyword\">></span>(&this->GetSizes()[i]),</div>\n-<div class=\"line\"><a id=\"l00775\" name=\"l00775\"></a><span class=\"lineno\"> 775</span> <span class=\"keyword\">const_cast<</span><a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> *<span class=\"keyword\">></span>(&this->GetControlIndices()[ofs]),</div>\n-<div class=\"line\"><a id=\"l00776\" name=\"l00776\"></a><span class=\"lineno\"> 776</span> <span class=\"keyword\">const_cast<</span>REAL *<span class=\"keyword\">></span>(&this->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> <<span class=\"keyword\">typename</span> REAL></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<REAL></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<REAL>::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 &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 &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< float > 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< int > _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 &srcBase, int numBase, T2 const &srcRef, U &dstValues, std::vector< REAL > const &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 &srcBase, int numBase, T2 const &srcRef, U &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< Index > const & 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< REAL > 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 &srcValues, U &dstValues, std::vector< REAL > const &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< int > const & 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< Index > const & 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< REAL > 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< Index > _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< REAL > _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< REAL > const & 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< int > const &offsets, std::vector< int > const &sizes, std::vector< int > const &sources, std::vector< REAL > const &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< Index > _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 &srcValues, U &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< int > const &offsets, std::vector< int > const &sizes, std::vector< int > const &sources, std::vector< float > const &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< float > 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 &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< float > 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< REAL > const & 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< REAL > 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< REAL > const & 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< REAL > const & 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 &srcValues, U &uderivs, U &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< REAL > 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< int > const &offsets, std::vector< int > const &sizes, std::vector< int > const &sources, std::vector< REAL > const &weights, std::vector< REAL > const &duWeights, std::vector< REAL > const &dvWeights, std::vector< REAL > const &duuWeights, std::vector< REAL > const &duvWeights, std::vector< REAL > const &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 &srcValues, U &uuderivs, U &uvderivs, U &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< REAL > const & 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 &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#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< REAL > const & 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 &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#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< float > 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< int > const &offsets, std::vector< int > const &sizes, std::vector< int > const &sources, std::vector< float > const &weights, std::vector< float > const &duWeights, std::vector< float > const &dvWeights, std::vector< float > const &duuWeights, std::vector< float > const &duvWeights, std::vector< float > const &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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 &srcDesc, float *dst, BufferDescriptor const &dstDesc, float *dstDu, BufferDescriptor const &dstDuDesc, float *dstDv, BufferDescriptor const &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 &srcDesc, float *dst, BufferDescriptor const &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> |\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> |\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 "../version.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00773_source.html\">../far/patchDescriptor.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00755_source.html\">../far/patchParam.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00758_source.html\">../far/stencilTable.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00734_source.html\">../sdc/options.h</a>"</code><br />\n-<code>#include <vector></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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00993.html\">PatchTable</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00997.html\">PatchTable::PatchHandle</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </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 </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 &srcDesc, float *dst, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &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\"> </td></tr>\n+<tr class=\"memitem:a907dc53421460557871ddc35f77751f5\" id=\"r_a907dc53421460557871ddc35f77751f5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void </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 &srcDesc, float *dst, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &dstDesc, float *dstDu, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &dstDuDesc, float *dstDv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &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\"> </td></tr>\n+<tr class=\"memitem:a44a05502feb5015035bc81b93cffb99c\" id=\"r_a44a05502feb5015035bc81b93cffb99c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void </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 &srcDesc, float *dst, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &dstDesc, float *dstDu, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &dstDuDesc, float *dstDv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &dstDvDesc, float *dstDuu, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &dstDuuDesc, float *dstDuv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &dstDuvDesc, float *dstDvv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 "../far/patchDescriptor.h"</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../far/patchParam.h"</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"preprocessor\">#include "../far/stencilTable.h"</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 "../sdc/options.h"</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 <vector></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> &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> &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> &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> &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> &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> &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> & 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> &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> &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> &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> &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> &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> &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> &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> & 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> & 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> & 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> <<span class=\"keyword\">typename</span> REAL></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<REAL></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> <<span class=\"keyword\">typename</span> REAL> <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> <<span class=\"keyword\">class</span> T> <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> <<span class=\"keyword\">typename</span> REAL></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<REAL></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> <<span class=\"keyword\">typename</span> REAL> <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> <<span class=\"keyword\">class</span> T> <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> <<span class=\"keyword\">typename</span> REAL></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<REAL></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> <<span class=\"keyword\">typename</span> REAL> <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> <<span class=\"keyword\">class</span> T> <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<unsigned int></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> & 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<Index> <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> & <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> & 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> & 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> & 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> & 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<Index> <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> & <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> & <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<Index> <span class=\"keyword\">const</span> &<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<float> <span class=\"keyword\">const</span> &<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<unsigned int> <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> & <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> <<span class=\"keyword\">typename</span> REAL></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> & 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> & 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> & 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> <<span class=\"keyword\">typename</span> REAL></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> & 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> & 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> & 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> <<span class=\"keyword\">typename</span> REAL></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> & 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> & 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> & 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<PatchArray> 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 & 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> & 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 "vertex" 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<Index> patchValues;</div>\n-<div class=\"line\"><a id=\"l00624\" name=\"l00624\"></a><span class=\"lineno\"> 624</span> std::vector<PatchParam> 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<FVarPatchChannel> 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 & 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> & 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<float> float_type;</div>\n-<div class=\"line\"><a id=\"l00657\" name=\"l00657\"></a><span class=\"lineno\"> 657</span> <span class=\"keyword\">typedef</span> StencilTableReal<double> 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> <<span class=\"keyword\">typename</span> REAL> StencilTableReal<REAL> * 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<Index> _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<Index> _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<StencilTablePtr> _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\">// 'single-crease' 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<Index> _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<float> _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> <> <span class=\"keyword\">inline</span> StencilTableReal<float> *</div>\n-<div class=\"line\"><a id=\"l00743\" name=\"l00743\"></a><span class=\"lineno\"> 743</span>PatchTable::StencilTablePtr::Get<float>()<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> <> <span class=\"keyword\">inline</span> StencilTableReal<double> *</div>\n-<div class=\"line\"><a id=\"l00746\" name=\"l00746\"></a><span class=\"lineno\"> 746</span>PatchTable::StencilTablePtr::Get<double>()<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> <> <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<float>()<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> <> <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<float>()<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> <> <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<float>()<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> <> <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<double>()<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> <> <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<double>()<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> <> <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<double>()<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<float>());</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<</span><a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">></span>(_localPointStencils.Get<<span class=\"keywordtype\">float</span>>());</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<float>());</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<</span><a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">></span>(</div>\n-<div class=\"line\"><a id=\"l00786\" name=\"l00786\"></a><span class=\"lineno\"> 786</span> _localPointVaryingStencils.Get<<span class=\"keywordtype\">float</span>>());</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<float>());</div>\n-<div class=\"line\"><a id=\"l00791\" name=\"l00791\"></a><span class=\"lineno\"> 791</span> <span class=\"keywordflow\">if</span> (channel >= 0 && channel < (<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<</span><a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">></span>(</div>\n-<div class=\"line\"><a id=\"l00793\" name=\"l00793\"></a><span class=\"lineno\"> 793</span> _localPointFaceVaryingStencils[channel].Get<<span class=\"keywordtype\">float</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=\"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> <<span class=\"keyword\">typename</span> REAL></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<REAL></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<REAL>());</div>\n-<div class=\"line\"><a id=\"l00802\" name=\"l00802\"></a><span class=\"lineno\"> 802</span> <span class=\"keywordflow\">return</span> _localPointStencils.Get<REAL>();</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> <<span class=\"keyword\">typename</span> REAL></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<REAL></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<REAL>());</div>\n-<div class=\"line\"><a id=\"l00808\" name=\"l00808\"></a><span class=\"lineno\"> 808</span> <span class=\"keywordflow\">return</span> _localPointVaryingStencils.Get<REAL>();</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> <<span class=\"keyword\">typename</span> REAL></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<REAL></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<REAL>());</div>\n-<div class=\"line\"><a id=\"l00814\" name=\"l00814\"></a><span class=\"lineno\"> 814</span> <span class=\"keywordflow\">if</span> (channel >= 0 && channel < (<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<REAL>();</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> <<span class=\"keyword\">class</span> T></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<float>());</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<<span class=\"keywordtype\">float</span>>()->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> <<span class=\"keyword\">class</span> T></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<float>());</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<<span class=\"keywordtype\">float</span>>()->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> <<span class=\"keyword\">class</span> T></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<float>());</div>\n-<div class=\"line\"><a id=\"l00846\" name=\"l00846\"></a><span class=\"lineno\"> 846</span> <span class=\"keywordflow\">if</span> (channel >= 0 && channel < (<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<<span class=\"keywordtype\">float</span>>()->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> & 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<float>(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> & 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<double>(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> & 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<float>(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> & 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<double>(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> & 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<float>(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> & 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<double>(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< PatchParam > 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< PatchParam > 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< PatchArray > 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 & 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 &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< REAL > 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< float > const & 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< Index > 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 &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 &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 & 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 & 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 &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 &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 &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 &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< Index > 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 & 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 &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< unsigned int > 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 &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< REAL > 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 &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< Index > const & 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 &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< unsigned int > 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 &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< REAL > 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 &srcDesc, float *dst, BufferDescriptor const &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> |\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 "../version.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a01492_source.html\">../sdc/types.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00734_source.html\">../sdc/options.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a01486_source.html\">../far/types.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00782_source.html\">../far/topologyLevel.h</a>"</code><br />\n-<code>#include <vector></code><br />\n+<code>#include <string.h></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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01121.html\">TopologyRefiner</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01125.html\">TopologyRefiner::UniformOptions</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01129.html\">TopologyRefiner::AdaptiveOptions</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01141.html\">BufferDescriptor</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00909\" id=\"r_a00909\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 "../sdc/types.h"</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"preprocessor\">#include "../sdc/options.h"</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../far/types.h"</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"preprocessor\">#include "../far/topologyLevel.h"</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 "../version.h"</span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span><span class=\"preprocessor\">#include <string.h></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 <vector></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> <<span class=\"keyword\">typename</span> REAL> <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> <<span class=\"keyword\">class</span> MESH> <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\">// <------------- stride = 13 --------------></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> > 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> > 0) &&</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> <= <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> & <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> &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> &&</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> &&</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> &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-><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 & 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 & 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 & 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 & 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 & 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> <<span class=\"keyword\">class</span> MESH></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> <<span class=\"keyword\">typename</span> REAL></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> & 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 & <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> & <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 & <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> & <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 & operator=(TopologyRefiner <span class=\"keyword\">const</span> &) { <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& selector,</div>\n-<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\"> 248</span> internal::FeatureMask <span class=\"keyword\">const</span> & 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& 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> & 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 & 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 & 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<Vtr::internal::Level *> _levels;</div>\n-<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\"> 286</span> std::vector<Vtr::internal::Refinement *> _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<TopologyLevel> _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]->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]->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 &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 & 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 & 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 & 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 & 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 & 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 &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 &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> |\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 "../version.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00764_source.html\">../far/topologyRefiner.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00749_source.html\">../far/error.h</a>"</code><br />\n-<code>#include <cassert></code><br />\n+<code>#include "<a class=\"el\" href=\"a00842_source.html\">../far/patchTable.h</a>"</code><br />\n+<code>#include "../osd/nonCopyable.h"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00722_source.html\">../osd/opengl.h</a>"</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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01133.html\">TopologyRefinerFactoryBase</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01117.html\">TopologyRefinerFactory< MESH ></a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01137.html\">TopologyRefinerFactory< MESH >::Options</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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  </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 "../far/topologyRefiner.h"</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"preprocessor\">#include "../far/error.h"</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 <cassert></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 "../version.h"</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 "../far/patchTable.h"</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../osd/nonCopyable.h"</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"preprocessor\">#include "../osd/opengl.h"</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<GLLegacyGregoryPatchTable> {</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>& 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>& 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>& 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>& 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> <<span class=\"keyword\">class</span> MESH></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>& 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> & 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>& newRefiner, MESH <span class=\"keyword\">const</span>& 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>& newRefiner, MESH <span class=\"keyword\">const</span>& 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>& newRefiner, MESH <span class=\"keyword\">const</span>& 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>& newRefiner, MESH <span class=\"keyword\">const</span>& 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>& 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & newRefiner, <span class=\"keywordtype\">int</span> numValues, <a class=\"code hl_class\" href=\"a01337.html\">Sdc::Options</a> <span class=\"keyword\">const</span>& 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> & 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>& refiner, MESH <span class=\"keyword\">const</span>& 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> <<span class=\"keyword\">class</span> MESH></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<MESH>::Create</a>(MESH <span class=\"keyword\">const</span>& 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'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> <<span class=\"keyword\">class</span> MESH></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<MESH>::Create</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> & 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> <<span class=\"keyword\">class</span> MESH></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<MESH>::populateBaseLevel</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>& refiner, MESH <span class=\"keyword\">const</span>& 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<</span><a class=\"code hl_typedef\" href=\"a01133.html#a896a964625491e084b3d776acd10f053\">TopologyCallback</a><span class=\"keyword\">></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 = &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> <<span class=\"keyword\">class</span> MESH></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<MESH>::setNumBaseFaces</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> & 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]->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> <<span class=\"keyword\">class</span> MESH></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<MESH>::setNumBaseEdges</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> & 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]->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> <<span class=\"keyword\">class</span> MESH></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<MESH>::setNumBaseVertices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> & 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]->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> <<span class=\"keyword\">class</span> MESH></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<MESH>::getNumBaseFaces</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> & 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]->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> <<span class=\"keyword\">class</span> MESH></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<MESH>::getNumBaseEdges</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> & 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]->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> <<span class=\"keyword\">class</span> MESH></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<MESH>::getNumBaseVertices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> & 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]->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> <<span class=\"keyword\">class</span> MESH></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<MESH>::setNumBaseFaceVertices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> & 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]->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> <<span class=\"keyword\">class</span> MESH></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<MESH>::setNumBaseEdgeFaces</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> & 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]->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> <<span class=\"keyword\">class</span> MESH></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<MESH>::setNumBaseVertexFaces</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> & 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]->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> <<span class=\"keyword\">class</span> MESH></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<MESH>::setNumBaseVertexEdges</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> & 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]->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> <<span class=\"keyword\">class</span> MESH></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<MESH>::getBaseFaceVertices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> & 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]->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> <<span class=\"keyword\">class</span> MESH></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<MESH>::getBaseFaceEdges</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> & 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]->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> <<span class=\"keyword\">class</span> MESH></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<MESH>::getBaseEdgeVertices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> & 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]->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> <<span class=\"keyword\">class</span> MESH></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<MESH>::getBaseEdgeFaces</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> & 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]->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> <<span class=\"keyword\">class</span> MESH></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<MESH>::getBaseVertexFaces</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> & 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]->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> <<span class=\"keyword\">class</span> MESH></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<MESH>::getBaseVertexEdges</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> & 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]->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> <<span class=\"keyword\">class</span> MESH></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<MESH>::getBaseEdgeFaceLocalIndices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> & 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]->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> <<span class=\"keyword\">class</span> MESH></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<MESH>::getBaseVertexFaceLocalIndices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> & 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]->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> <<span class=\"keyword\">class</span> MESH></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<MESH>::getBaseVertexEdgeLocalIndices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> & 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]->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> <<span class=\"keyword\">class</span> MESH></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<MESH>::findBaseEdge</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> & 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]->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> <<span class=\"keyword\">class</span> MESH></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<MESH>::populateBaseLocalIndices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> & newRefiner) {</div>\n-<div class=\"line\"><a id=\"l00528\" name=\"l00528\"></a><span class=\"lineno\"> 528</span> newRefiner._levels[0]->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> <<span class=\"keyword\">class</span> MESH></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<MESH>::setBaseEdgeNonManifold</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> & 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]->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> <<span class=\"keyword\">class</span> MESH></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<MESH>::setBaseVertexNonManifold</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> & 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]->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> <<span class=\"keyword\">class</span> MESH></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<MESH>::setBaseEdgeSharpness</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> & 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]->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> <<span class=\"keyword\">class</span> MESH></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<MESH>::setBaseVertexSharpness</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> & 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]->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> <<span class=\"keyword\">class</span> MESH></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<MESH>::setBaseFaceHole</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> & 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]->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> <<span class=\"keyword\">class</span> MESH></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<MESH>::createBaseFVarChannel</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> & 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]->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> <<span class=\"keyword\">class</span> MESH></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<MESH>::createBaseFVarChannel</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> & newRefiner, <span class=\"keywordtype\">int</span> numValues, <a class=\"code hl_class\" href=\"a01337.html\">Sdc::Options</a> <span class=\"keyword\">const</span>& 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]->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> <<span class=\"keyword\">class</span> MESH></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<MESH>::getBaseFaceFVarValues</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> & 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]->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> <<span class=\"keyword\">class</span> MESH></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<MESH>::resizeComponentTopology</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>& <span class=\"comment\">/* refiner */</span>, MESH <span class=\"keyword\">const</span>& <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\">"Failure in TopologyRefinerFactory<>::resizeComponentTopology() -- no specialization provided."</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& 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& 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& 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& 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& 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& 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& 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> <<span class=\"keyword\">class</span> MESH></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<MESH>::assignComponentTopology</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>& <span class=\"comment\">/* refiner */</span>, MESH <span class=\"keyword\">const</span>& <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\">"Failure in TopologyRefinerFactory<>::assignComponentTopology() -- no specialization provided."</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& 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& 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& 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& 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& 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& 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 "local indices" 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 "local index" 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& 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& 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& 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& 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& 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& 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> <<span class=\"keyword\">class</span> MESH></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<MESH>::assignFaceVaryingTopology</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>& <span class=\"comment\">/* refiner */</span>, MESH <span class=\"keyword\">const</span>& <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& 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& 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> <<span class=\"keyword\">class</span> MESH></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<MESH>::assignComponentTags</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>& <span class=\"comment\">/* refiner */</span>, MESH <span class=\"keyword\">const</span>& <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& 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& 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& 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> <<span class=\"keyword\">class</span> MESH></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<MESH>::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>& <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 &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 &newRefiner, MESH const &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 &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 &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 &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 &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 &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 &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 &refiner, MESH const &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 &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 &newRefiner, MESH const &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 &newRefiner, MESH const &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 &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 &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 &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 &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 &newRefiner, MESH const &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 &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 &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 &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 &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 &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 &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 &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 &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 &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 &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 &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 &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 &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 &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 &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 &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 &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 &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 &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 &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 &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 &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> |\n-<a href=\"#namespaces\">Namespaces</a> |\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 "../version.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a01486_source.html\">../far/types.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a01492_source.html\">../sdc/types.h</a>"</code><br />\n-<code>#include <vector></code><br />\n+<code>#include <cstddef></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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00973.html\">PatchDescriptor</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01161.html\">CpuD3D11VertexBuffer</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </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>< <a class=\"el\" href=\"a00973.html\">PatchDescriptor</a> > </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 "../far/types.h"</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../sdc/types.h"</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 <vector></span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span><span class=\"preprocessor\">#include <cstddef></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> & 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> & <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> & 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 > <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-><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-><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-><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<PatchDescriptor></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 < </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<PatchDescriptor></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 < </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 < 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< PatchDescriptor > 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 &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 & operator=(PatchDescriptor const &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<</a></div><div class=\"ttdeci\">bool operator<(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< PatchDescriptor > 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> |\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 "../version.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00764_source.html\">../far/topologyRefiner.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00761_source.html\">../far/patchTable.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00857_source.html\">../far/patchDescriptor.h</a>"</code><br />\n+<code>#include "../osd/nonCopyable.h"</code><br />\n+<code>#include "<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00698_source.html\">../osd/mtlCommon.h</a>"</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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01017.html\">PatchTableFactory</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01021.html\">PatchTableFactory::Options</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01025.html\">PatchTableFactory::PatchFaceTag</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </td><td class=\"mdescRight\">Obsolete internal struct not intended for public use – 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  </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n <tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 "../far/topologyRefiner.h"</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../far/patchTable.h"</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 "../far/patchDescriptor.h"</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"preprocessor\">#include "../osd/nonCopyable.h"</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../osd/types.h"</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"preprocessor\">#include "../osd/mtlCommon.h"</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<MTLPatchTable> {</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<MTLBuffer> <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><<span class=\"keyword\">typename</span> DEVICE_CONTEXT></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> &<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<MTLBuffer> <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<MTLBuffer> <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> &<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<MTLBuffer> <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> &<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<MTLBuffer> <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<MTLBuffer> <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<MTLBuffer> <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<MTLBuffer> <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<MTLBuffer> <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<PatchArrayVector> <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<id<MTLBuffer>> <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<id<MTLBuffer>> <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 & 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 & 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 & 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> <<span class=\"keyword\">typename</span> REAL> <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> <<span class=\"keyword\">typename</span> REAL> <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> &&</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> & 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<PatchFaceTag> <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> <> <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> PatchTableFactory::Options::SetPatchPrecision<float>() {</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> <> <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> PatchTableFactory::Options::SetFVarPatchPrecision<float>() {</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> <> <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> PatchTableFactory::Options::SetPatchPrecision<double>() {</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> <> <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> PatchTableFactory::Options::SetFVarPatchPrecision<double>() {</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< PatchFaceTag > 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 &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< PatchArray > 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 & 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< MTLBuffer > 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< id< MTLBuffer > > _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< MTLBuffer > 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< MTLBuffer > 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< MTLBuffer > 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< MTLBuffer > 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 & 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< MTLBuffer > _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< id< MTLBuffer > > _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< PatchArrayVector > _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< MTLBuffer > _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< MTLBuffer > 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 & 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< MTLBuffer > _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> |\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 "../version.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00761_source.html\">../far/patchTable.h</a>"</code><br />\n-<code>#include <cassert></code><br />\n+<code>#include "../osd/nonCopyable.h"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00722_source.html\">../osd/opengl.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>"</code><br />\n+<code>#include <vector></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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00977.html\">PatchMap</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </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  </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n <tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 "../far/patchTable.h"</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 <cassert></span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"preprocessor\">#include "../osd/nonCopyable.h"</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../osd/opengl.h"</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"preprocessor\">#include "../osd/types.h"</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 <vector></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<GLPatchTable> {</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> & 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> & 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> & 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> &<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> &<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 "quadrant" 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<QuadNode> 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> <<span class=\"keyword\">class</span> T></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> & median, T & u, T & v);</div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"> 107</span> <span class=\"keyword\">template</span> <<span class=\"keyword\">class</span> T></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> & median, T & u, T & v, <span class=\"keywordtype\">bool</span> & 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> &<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<Handle> _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<QuadNode> _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'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> <<span class=\"keyword\">class</span> T></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> & median, T & u, T & 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 >= 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<PatchArrayVector> <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<GLuint> <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<GLuint> <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<GLuint> <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<GLuint> <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 >= 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 << 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> <<span class=\"keyword\">class</span> T></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> & median, T & u, T & v, <span class=\"keywordtype\">bool</span> & 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 >= 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 >= 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) >= 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 < 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 < 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) < 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 < _minPatchFace) || (faceid > _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 = &_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->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>=0.0) && (u<=1.0) && (v>=0.0) && (v<=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 <= _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->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->children[quadrant].isLeaf) {</div>\n-<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\"> 224</span> <span class=\"keywordflow\">return</span> &_handles[node->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 = &_quadtree[node->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 &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< PatchArray > 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< GLuint > _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 & 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< GLuint > _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< GLuint > _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 & 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< GLuint > _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< PatchArrayVector > _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 & 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> |\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 "../version.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00695_source.html\">../vtr/level.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00674_source.html\">../vtr/refinement.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a01486_source.html\">../far/types.h</a>"</code><br />\n-<code>#include <vector></code><br />\n+<code>#include "<a class=\"el\" href=\"a00764_source.html\">../osd/bufferDescriptor.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>"</code><br />\n+<code>#include <cstddef></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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01113.html\">TopologyLevel</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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  </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 "../vtr/level.h"</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"preprocessor\">#include "../vtr/refinement.h"</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../far/types.h"</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 <vector></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->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->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->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->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->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 "../version.h"</span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span><span class=\"preprocessor\">#include "../osd/bufferDescriptor.h"</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"preprocessor\">#include "../osd/types.h"</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 <cstddef></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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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->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->BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"> 86</span> dstBuffer->BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"> 87</span> &stencilTable->GetSizes()[0],</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"> 88</span> &stencilTable->GetOffsets()[0],</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"> 89</span> &stencilTable->GetControlIndices()[0],</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"> 90</span> &stencilTable->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->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->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->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->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->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->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->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->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->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->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->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> &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> &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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->print((children && _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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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> &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> &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->BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\"> 181</span> dstBuffer->BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\"> 182</span> duBuffer->BindCpuBuffer(), duDesc,</div>\n+<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\"> 183</span> dvBuffer->BindCpuBuffer(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\"> 184</span> &stencilTable->GetSizes()[0],</div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"> 185</span> &stencilTable->GetOffsets()[0],</div>\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\"> 186</span> &stencilTable->GetControlIndices()[0],</div>\n+<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\"> 187</span> &stencilTable->GetWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"> 188</span> &stencilTable->GetDuWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\"> 189</span> &stencilTable->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->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> &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> &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> &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> &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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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> &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> &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> &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> &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> &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->BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\"> 319</span> dstBuffer->BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\"> 320</span> duBuffer->BindCpuBuffer(), duDesc,</div>\n+<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\"> 321</span> dvBuffer->BindCpuBuffer(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\"> 322</span> duuBuffer->BindCpuBuffer(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\"> 323</span> duvBuffer->BindCpuBuffer(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\"> 324</span> dvvBuffer->BindCpuBuffer(), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\"> 325</span> &stencilTable->GetSizes()[0],</div>\n+<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\"> 326</span> &stencilTable->GetOffsets()[0],</div>\n+<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\"> 327</span> &stencilTable->GetControlIndices()[0],</div>\n+<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\"> 328</span> &stencilTable->GetWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\"> 329</span> &stencilTable->GetDuWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\"> 330</span> &stencilTable->GetDvWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\"> 331</span> &stencilTable->GetDuuWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\"> 332</span> &stencilTable->GetDuvWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\"> 333</span> &stencilTable->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->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> &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> &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> &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> &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> &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> &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> &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> <<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></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> &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> &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->BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\"> 467</span> dstBuffer->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->BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l00470\" name=\"l00470\"></a><span class=\"lineno\"> 470</span> patchTable->GetPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00471\" name=\"l00471\"></a><span class=\"lineno\"> 471</span> patchTable->GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00472\" name=\"l00472\"></a><span class=\"lineno\"> 472</span> patchTable->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> <<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></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> &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> &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> &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> &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'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<PatchCoord> )</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->BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00537\" name=\"l00537\"></a><span class=\"lineno\"> 537</span> dstBuffer->BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00538\" name=\"l00538\"></a><span class=\"lineno\"> 538</span> duBuffer->BindCpuBuffer(), duDesc,</div>\n+<div class=\"line\"><a id=\"l00539\" name=\"l00539\"></a><span class=\"lineno\"> 539</span> dvBuffer->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->BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l00542\" name=\"l00542\"></a><span class=\"lineno\"> 542</span> patchTable->GetPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00543\" name=\"l00543\"></a><span class=\"lineno\"> 543</span> patchTable->GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00544\" name=\"l00544\"></a><span class=\"lineno\"> 544</span> patchTable->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> <<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></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> &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> &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> &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> &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> &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> &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> &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'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<PatchCoord> )</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->BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00630\" name=\"l00630\"></a><span class=\"lineno\"> 630</span> dstBuffer->BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00631\" name=\"l00631\"></a><span class=\"lineno\"> 631</span> duBuffer->BindCpuBuffer(), duDesc,</div>\n+<div class=\"line\"><a id=\"l00632\" name=\"l00632\"></a><span class=\"lineno\"> 632</span> dvBuffer->BindCpuBuffer(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l00633\" name=\"l00633\"></a><span class=\"lineno\"> 633</span> duuBuffer->BindCpuBuffer(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l00634\" name=\"l00634\"></a><span class=\"lineno\"> 634</span> duvBuffer->BindCpuBuffer(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l00635\" name=\"l00635\"></a><span class=\"lineno\"> 635</span> dvvBuffer->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->BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l00638\" name=\"l00638\"></a><span class=\"lineno\"> 638</span> patchTable->GetPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00639\" name=\"l00639\"></a><span class=\"lineno\"> 639</span> patchTable->GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00640\" name=\"l00640\"></a><span class=\"lineno\"> 640</span> patchTable->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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> <<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></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> &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> &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->BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00836\" name=\"l00836\"></a><span class=\"lineno\"> 836</span> dstBuffer->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->BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l00839\" name=\"l00839\"></a><span class=\"lineno\"> 839</span> patchTable->GetVaryingPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00840\" name=\"l00840\"></a><span class=\"lineno\"> 840</span> patchTable->GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00841\" name=\"l00841\"></a><span class=\"lineno\"> 841</span> patchTable->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> <<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></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> &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> &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> &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> &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->BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00901\" name=\"l00901\"></a><span class=\"lineno\"> 901</span> dstBuffer->BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00902\" name=\"l00902\"></a><span class=\"lineno\"> 902</span> duBuffer->BindCpuBuffer(), duDesc,</div>\n+<div class=\"line\"><a id=\"l00903\" name=\"l00903\"></a><span class=\"lineno\"> 903</span> dvBuffer->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->BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l00906\" name=\"l00906\"></a><span class=\"lineno\"> 906</span> patchTable->GetVaryingPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00907\" name=\"l00907\"></a><span class=\"lineno\"> 907</span> patchTable->GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00908\" name=\"l00908\"></a><span class=\"lineno\"> 908</span> patchTable->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> <<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></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> &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> &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> &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> &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> &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> &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> &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->BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00989\" name=\"l00989\"></a><span class=\"lineno\"> 989</span> dstBuffer->BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00990\" name=\"l00990\"></a><span class=\"lineno\"> 990</span> duBuffer->BindCpuBuffer(), duDesc,</div>\n+<div class=\"line\"><a id=\"l00991\" name=\"l00991\"></a><span class=\"lineno\"> 991</span> dvBuffer->BindCpuBuffer(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l00992\" name=\"l00992\"></a><span class=\"lineno\"> 992</span> duuBuffer->BindCpuBuffer(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l00993\" name=\"l00993\"></a><span class=\"lineno\"> 993</span> duvBuffer->BindCpuBuffer(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l00994\" name=\"l00994\"></a><span class=\"lineno\"> 994</span> dvvBuffer->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->BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l00997\" name=\"l00997\"></a><span class=\"lineno\"> 997</span> patchTable->GetVaryingPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00998\" name=\"l00998\"></a><span class=\"lineno\"> 998</span> patchTable->GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00999\" name=\"l00999\"></a><span class=\"lineno\"> 999</span> patchTable->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> <<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></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> &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> &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->BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01048\" name=\"l01048\"></a><span class=\"lineno\"> 1048</span> dstBuffer->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->BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l01051\" name=\"l01051\"></a><span class=\"lineno\"> 1051</span> patchTable->GetFVarPatchArrayBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01052\" name=\"l01052\"></a><span class=\"lineno\"> 1052</span> patchTable->GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01053\" name=\"l01053\"></a><span class=\"lineno\"> 1053</span> patchTable->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> <<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></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> &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> &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> &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> &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->BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01116\" name=\"l01116\"></a><span class=\"lineno\"> 1116</span> dstBuffer->BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01117\" name=\"l01117\"></a><span class=\"lineno\"> 1117</span> duBuffer->BindCpuBuffer(), duDesc,</div>\n+<div class=\"line\"><a id=\"l01118\" name=\"l01118\"></a><span class=\"lineno\"> 1118</span> dvBuffer->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->BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l01121\" name=\"l01121\"></a><span class=\"lineno\"> 1121</span> patchTable->GetFVarPatchArrayBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01122\" name=\"l01122\"></a><span class=\"lineno\"> 1122</span> patchTable->GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01123\" name=\"l01123\"></a><span class=\"lineno\"> 1123</span> patchTable->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> <<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></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> &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> &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> &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> &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> &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> &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> &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->BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01207\" name=\"l01207\"></a><span class=\"lineno\"> 1207</span> dstBuffer->BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01208\" name=\"l01208\"></a><span class=\"lineno\"> 1208</span> duBuffer->BindCpuBuffer(), duDesc,</div>\n+<div class=\"line\"><a id=\"l01209\" name=\"l01209\"></a><span class=\"lineno\"> 1209</span> dvBuffer->BindCpuBuffer(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l01210\" name=\"l01210\"></a><span class=\"lineno\"> 1210</span> duuBuffer->BindCpuBuffer(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l01211\" name=\"l01211\"></a><span class=\"lineno\"> 1211</span> duvBuffer->BindCpuBuffer(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l01212\" name=\"l01212\"></a><span class=\"lineno\"> 1212</span> dvvBuffer->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->BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l01215\" name=\"l01215\"></a><span class=\"lineno\"> 1215</span> patchTable->GetFVarPatchArrayBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01216\" name=\"l01216\"></a><span class=\"lineno\"> 1216</span> patchTable->GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01217\" name=\"l01217\"></a><span class=\"lineno\"> 1217</span> patchTable->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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, float *dst, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const &duDesc, float *dv, BufferDescriptor const &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 &srcDesc, float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const &duDesc, float *dv, BufferDescriptor const &dvDesc, float *duu, BufferDescriptor const &duuDesc, float *duv, BufferDescriptor const &duvDesc, float *dvv, BufferDescriptor const &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 &srcDesc, float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const &duDesc, float *dv, BufferDescriptor const &dvDesc, float *duu, BufferDescriptor const &duuDesc, float *duv, BufferDescriptor const &duvDesc, float *dvv, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const &duDesc, float *dv, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, float *dst, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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> |\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 "../version.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00764_source.html\">../far/topologyRefiner.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00767_source.html\">../far/topologyRefinerFactory.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00749_source.html\">../far/error.h</a>"</code><br />\n-<code>#include <cassert></code><br />\n+<code>#include "<a class=\"el\" href=\"a00755_source.html\">../osd/opencl.h</a>"</code><br />\n+<code>#include "../osd/nonCopyable.h"</code><br />\n+<code>#include "<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>"</code><br />\n+<code>#include <vector></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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01105.html\">TopologyDescriptor</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01153.html\">CLPatchTable</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n <tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 "../far/topologyRefiner.h"</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"preprocessor\">#include "../far/topologyRefinerFactory.h"</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../far/error.h"</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 <cassert></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 "../version.h"</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 "../osd/opencl.h"</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../osd/nonCopyable.h"</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"preprocessor\">#include "../osd/types.h"</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 <vector></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<CLPatchTable> {</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> <<span class=\"keyword\">typename</span> DEVICE_CONTEXT></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->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<TopologyDescriptor></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> <></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<TopologyDescriptor>::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> & refiner, <a class=\"code hl_struct\" href=\"a01105.html\">TopologyDescriptor</a> <span class=\"keyword\">const</span> & 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> <></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<TopologyDescriptor>::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> & refiner, <a class=\"code hl_struct\" href=\"a01105.html\">TopologyDescriptor</a> <span class=\"keyword\">const</span> & 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> <></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<TopologyDescriptor>::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> & refiner, <a class=\"code hl_struct\" href=\"a01105.html\">TopologyDescriptor</a> <span class=\"keyword\">const</span> & 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> <></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<TopologyDescriptor>::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> & refiner, <a class=\"code hl_struct\" href=\"a01105.html\">TopologyDescriptor</a> <span class=\"keyword\">const</span> & 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<cl_mem> <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<cl_mem> <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<cl_mem> <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> <></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<TopologyDescriptor>::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> & 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 &newRefiner, MESH const &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 &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 &newRefiner, MESH const &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 &newRefiner, MESH const &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 &newRefiner, MESH const &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< cl_mem > _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< cl_mem > _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< cl_mem > _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> |\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 "../version.h"</code><br />\n-<code>#include "../osd/nonCopyable.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00842_source.html\">../osd/opengl.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>"</code><br />\n-<code>#include <vector></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  </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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01213.html\">D3D11VertexBuffer</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n <tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 "../osd/nonCopyable.h"</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../osd/opengl.h"</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"preprocessor\">#include "../osd/types.h"</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 <vector></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<GLPatchTable> {</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> &<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> &<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> &<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<PatchArrayVector> <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<GLuint> <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<GLuint> <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<GLuint> <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<GLuint> <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< PatchArray > 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< GLuint > _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 & 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< GLuint > _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< GLuint > _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 & 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< GLuint > _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< PatchArrayVector > _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 & 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> |\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 "../version.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00842_source.html\">../osd/opengl.h</a>"</code><br />\n+<code>#include <vector></code><br />\n+<code>#include "<a class=\"el\" href=\"a00857_source.html\">../far/patchDescriptor.h</a>"</code><br />\n+<code>#include "../osd/nonCopyable.h"</code><br />\n <code>#include "<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00866_source.html\">../osd/bufferDescriptor.h</a>"</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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01249.html\">GLStencilTableTBO</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01173.html\">CpuPatchTable</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 "../osd/opengl.h"</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../osd/types.h"</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"preprocessor\">#include "../osd/bufferDescriptor.h"</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 <vector></span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../far/patchDescriptor.h"</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"preprocessor\">#include "../osd/nonCopyable.h"</span></div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span><span class=\"preprocessor\">#include "../osd/types.h"</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 <vector></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> <<span class=\"keyword\">typename</span> DEVICE_CONTEXT></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> &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> &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> &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> &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->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> &<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> &<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> &<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> &<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> &<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> &<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> &<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> &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> &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> &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> &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> &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> &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> &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> &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-><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> &<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<int> <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<int> <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< PatchArrayVector > <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< std::vector<int> > <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< PatchParamVector > <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> <<span class=\"keyword\">typename</span> DEVICE_CONTEXT></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> &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> &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> &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> &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> &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> &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> &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->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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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-><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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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-><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-><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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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> &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> &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-><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-><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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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> &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> &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> &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> &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> &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-><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-><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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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->BindVBO(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00463\" name=\"l00463\"></a><span class=\"lineno\"> 463</span> dstBuffer->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->GetSizesTexture(),</div>\n-<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\"> 467</span> stencilTable->GetOffsetsTexture(),</div>\n-<div class=\"line\"><a id=\"l00468\" name=\"l00468\"></a><span class=\"lineno\"> 468</span> stencilTable->GetIndicesTexture(),</div>\n-<div class=\"line\"><a id=\"l00469\" name=\"l00469\"></a><span class=\"lineno\"> 469</span> stencilTable->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->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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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> &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> &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->BindVBO(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00514\" name=\"l00514\"></a><span class=\"lineno\"> 514</span> dstBuffer->BindVBO(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\"> 515</span> duBuffer->BindVBO(), duDesc,</div>\n-<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\"> 516</span> dvBuffer->BindVBO(), dvDesc,</div>\n-<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\"> 517</span> stencilTable->GetSizesTexture(),</div>\n-<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\"> 518</span> stencilTable->GetOffsetsTexture(),</div>\n-<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\"> 519</span> stencilTable->GetIndicesTexture(),</div>\n-<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\"> 520</span> stencilTable->GetWeightsTexture(),</div>\n-<div class=\"line\"><a id=\"l00521\" name=\"l00521\"></a><span class=\"lineno\"> 521</span> stencilTable->GetDuWeightsTexture(),</div>\n-<div class=\"line\"><a id=\"l00522\" name=\"l00522\"></a><span class=\"lineno\"> 522</span> stencilTable->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->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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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> &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> &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> &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> &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> &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->BindVBO(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00586\" name=\"l00586\"></a><span class=\"lineno\"> 586</span> dstBuffer->BindVBO(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00587\" name=\"l00587\"></a><span class=\"lineno\"> 587</span> duBuffer->BindVBO(), duDesc,</div>\n-<div class=\"line\"><a id=\"l00588\" name=\"l00588\"></a><span class=\"lineno\"> 588</span> dvBuffer->BindVBO(), dvDesc,</div>\n-<div class=\"line\"><a id=\"l00589\" name=\"l00589\"></a><span class=\"lineno\"> 589</span> duuBuffer->BindVBO(), duuDesc,</div>\n-<div class=\"line\"><a id=\"l00590\" name=\"l00590\"></a><span class=\"lineno\"> 590</span> duvBuffer->BindVBO(), duvDesc,</div>\n-<div class=\"line\"><a id=\"l00591\" name=\"l00591\"></a><span class=\"lineno\"> 591</span> dvvBuffer->BindVBO(), dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00592\" name=\"l00592\"></a><span class=\"lineno\"> 592</span> stencilTable->GetSizesTexture(),</div>\n-<div class=\"line\"><a id=\"l00593\" name=\"l00593\"></a><span class=\"lineno\"> 593</span> stencilTable->GetOffsetsTexture(),</div>\n-<div class=\"line\"><a id=\"l00594\" name=\"l00594\"></a><span class=\"lineno\"> 594</span> stencilTable->GetIndicesTexture(),</div>\n-<div class=\"line\"><a id=\"l00595\" name=\"l00595\"></a><span class=\"lineno\"> 595</span> stencilTable->GetWeightsTexture(),</div>\n-<div class=\"line\"><a id=\"l00596\" name=\"l00596\"></a><span class=\"lineno\"> 596</span> stencilTable->GetDuWeightsTexture(),</div>\n-<div class=\"line\"><a id=\"l00597\" name=\"l00597\"></a><span class=\"lineno\"> 597</span> stencilTable->GetDvWeightsTexture(),</div>\n-<div class=\"line\"><a id=\"l00598\" name=\"l00598\"></a><span class=\"lineno\"> 598</span> stencilTable->GetDuuWeightsTexture(),</div>\n-<div class=\"line\"><a id=\"l00599\" name=\"l00599\"></a><span class=\"lineno\"> 599</span> stencilTable->GetDuvWeightsTexture(),</div>\n-<div class=\"line\"><a id=\"l00600\" name=\"l00600\"></a><span class=\"lineno\"> 600</span> stencilTable->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->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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> <<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></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> &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> &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-><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-><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> <<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></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> &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> &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> &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> &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-><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-><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> <<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></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> &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> &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> &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> &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> &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> &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> &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-><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-><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> <<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></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> &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> &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->BindVBO(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01024\" name=\"l01024\"></a><span class=\"lineno\"> 1024</span> dstBuffer->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->BindVBO(),</div>\n-<div class=\"line\"><a id=\"l01029\" name=\"l01029\"></a><span class=\"lineno\"> 1029</span> patchTable->GetPatchArrays(),</div>\n-<div class=\"line\"><a id=\"l01030\" name=\"l01030\"></a><span class=\"lineno\"> 1030</span> patchTable->GetPatchIndexTextureBuffer(),</div>\n-<div class=\"line\"><a id=\"l01031\" name=\"l01031\"></a><span class=\"lineno\"> 1031</span> patchTable->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> <<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></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> &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> &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> &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> &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->BindVBO(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01080\" name=\"l01080\"></a><span class=\"lineno\"> 1080</span> dstBuffer->BindVBO(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01081\" name=\"l01081\"></a><span class=\"lineno\"> 1081</span> duBuffer->BindVBO(), duDesc,</div>\n-<div class=\"line\"><a id=\"l01082\" name=\"l01082\"></a><span class=\"lineno\"> 1082</span> dvBuffer->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->BindVBO(),</div>\n-<div class=\"line\"><a id=\"l01085\" name=\"l01085\"></a><span class=\"lineno\"> 1085</span> patchTable->GetPatchArrays(),</div>\n-<div class=\"line\"><a id=\"l01086\" name=\"l01086\"></a><span class=\"lineno\"> 1086</span> patchTable->GetPatchIndexTextureBuffer(),</div>\n-<div class=\"line\"><a id=\"l01087\" name=\"l01087\"></a><span class=\"lineno\"> 1087</span> patchTable->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> <<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></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> &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> &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> &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> &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> &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> &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> &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->BindVBO(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01157\" name=\"l01157\"></a><span class=\"lineno\"> 1157</span> dstBuffer->BindVBO(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01158\" name=\"l01158\"></a><span class=\"lineno\"> 1158</span> duBuffer->BindVBO(), duDesc,</div>\n-<div class=\"line\"><a id=\"l01159\" name=\"l01159\"></a><span class=\"lineno\"> 1159</span> dvBuffer->BindVBO(), dvDesc,</div>\n-<div class=\"line\"><a id=\"l01160\" name=\"l01160\"></a><span class=\"lineno\"> 1160</span> duuBuffer->BindVBO(), duuDesc,</div>\n-<div class=\"line\"><a id=\"l01161\" name=\"l01161\"></a><span class=\"lineno\"> 1161</span> duvBuffer->BindVBO(), duvDesc,</div>\n-<div class=\"line\"><a id=\"l01162\" name=\"l01162\"></a><span class=\"lineno\"> 1162</span> dvvBuffer->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->BindVBO(),</div>\n-<div class=\"line\"><a id=\"l01165\" name=\"l01165\"></a><span class=\"lineno\"> 1165</span> patchTable->GetPatchArrays(),</div>\n-<div class=\"line\"><a id=\"l01166\" name=\"l01166\"></a><span class=\"lineno\"> 1166</span> patchTable->GetPatchIndexTextureBuffer(),</div>\n-<div class=\"line\"><a id=\"l01167\" name=\"l01167\"></a><span class=\"lineno\"> 1167</span> patchTable->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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> <<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></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> &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> &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-><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-><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> <<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></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> &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> &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->BindVBO(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01295\" name=\"l01295\"></a><span class=\"lineno\"> 1295</span> dstBuffer->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->BindVBO(),</div>\n-<div class=\"line\"><a id=\"l01300\" name=\"l01300\"></a><span class=\"lineno\"> 1300</span> patchTable->GetVaryingPatchArrays(),</div>\n-<div class=\"line\"><a id=\"l01301\" name=\"l01301\"></a><span class=\"lineno\"> 1301</span> patchTable->GetVaryingPatchIndexTextureBuffer(),</div>\n-<div class=\"line\"><a id=\"l01302\" name=\"l01302\"></a><span class=\"lineno\"> 1302</span> patchTable->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> <<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></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> &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> &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> &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> &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-><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-><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> <<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></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> &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> &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> &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> &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->BindVBO(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01438\" name=\"l01438\"></a><span class=\"lineno\"> 1438</span> dstBuffer->BindVBO(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01439\" name=\"l01439\"></a><span class=\"lineno\"> 1439</span> duBuffer->BindVBO(), duDesc,</div>\n-<div class=\"line\"><a id=\"l01440\" name=\"l01440\"></a><span class=\"lineno\"> 1440</span> dvBuffer->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->BindVBO(),</div>\n-<div class=\"line\"><a id=\"l01443\" name=\"l01443\"></a><span class=\"lineno\"> 1443</span> patchTable->GetVaryingPatchArrays(),</div>\n-<div class=\"line\"><a id=\"l01444\" name=\"l01444\"></a><span class=\"lineno\"> 1444</span> patchTable->GetVaryingPatchIndexTextureBuffer(),</div>\n-<div class=\"line\"><a id=\"l01445\" name=\"l01445\"></a><span class=\"lineno\"> 1445</span> patchTable->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> <<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></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> &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> &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> &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> &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> &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> &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> &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-><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-><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> <<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></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> &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> &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> &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> &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> &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> &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> &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->BindVBO(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01630\" name=\"l01630\"></a><span class=\"lineno\"> 1630</span> dstBuffer->BindVBO(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01631\" name=\"l01631\"></a><span class=\"lineno\"> 1631</span> duBuffer->BindVBO(), duDesc,</div>\n-<div class=\"line\"><a id=\"l01632\" name=\"l01632\"></a><span class=\"lineno\"> 1632</span> dvBuffer->BindVBO(), dvDesc,</div>\n-<div class=\"line\"><a id=\"l01633\" name=\"l01633\"></a><span class=\"lineno\"> 1633</span> duuBuffer->BindVBO(), duuDesc,</div>\n-<div class=\"line\"><a id=\"l01634\" name=\"l01634\"></a><span class=\"lineno\"> 1634</span> duvBuffer->BindVBO(), duvDesc,</div>\n-<div class=\"line\"><a id=\"l01635\" name=\"l01635\"></a><span class=\"lineno\"> 1635</span> dvvBuffer->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->BindVBO(),</div>\n-<div class=\"line\"><a id=\"l01638\" name=\"l01638\"></a><span class=\"lineno\"> 1638</span> patchTable->GetVaryingPatchArrays(),</div>\n-<div class=\"line\"><a id=\"l01639\" name=\"l01639\"></a><span class=\"lineno\"> 1639</span> patchTable->GetVaryingPatchIndexTextureBuffer(),</div>\n-<div class=\"line\"><a id=\"l01640\" name=\"l01640\"></a><span class=\"lineno\"> 1640</span> patchTable->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> <<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></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> &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> &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-><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-><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> <<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></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> &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> &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->BindVBO(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01751\" name=\"l01751\"></a><span class=\"lineno\"> 1751</span> dstBuffer->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->BindVBO(),</div>\n-<div class=\"line\"><a id=\"l01756\" name=\"l01756\"></a><span class=\"lineno\"> 1756</span> patchTable->GetFVarPatchArrays(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01757\" name=\"l01757\"></a><span class=\"lineno\"> 1757</span> patchTable->GetFVarPatchIndexTextureBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01758\" name=\"l01758\"></a><span class=\"lineno\"> 1758</span> patchTable->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> <<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></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> &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> &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> &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> &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-><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-><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> <<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></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> &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> &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> &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> &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->BindVBO(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01900\" name=\"l01900\"></a><span class=\"lineno\"> 1900</span> dstBuffer->BindVBO(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01901\" name=\"l01901\"></a><span class=\"lineno\"> 1901</span> duBuffer->BindVBO(), duDesc,</div>\n-<div class=\"line\"><a id=\"l01902\" name=\"l01902\"></a><span class=\"lineno\"> 1902</span> dvBuffer->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->BindVBO(),</div>\n-<div class=\"line\"><a id=\"l01905\" name=\"l01905\"></a><span class=\"lineno\"> 1905</span> patchTable->GetFVarPatchArrays(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01906\" name=\"l01906\"></a><span class=\"lineno\"> 1906</span> patchTable->GetFVarPatchIndexTextureBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01907\" name=\"l01907\"></a><span class=\"lineno\"> 1907</span> patchTable->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> <<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></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> &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> &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> &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> &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> &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> &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> &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-><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-><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> <<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></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> &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> &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> &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> &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> &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> &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> &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->BindVBO(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l02098\" name=\"l02098\"></a><span class=\"lineno\"> 2098</span> dstBuffer->BindVBO(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l02099\" name=\"l02099\"></a><span class=\"lineno\"> 2099</span> duBuffer->BindVBO(), duDesc,</div>\n-<div class=\"line\"><a id=\"l02100\" name=\"l02100\"></a><span class=\"lineno\"> 2100</span> dvBuffer->BindVBO(), dvDesc,</div>\n-<div class=\"line\"><a id=\"l02101\" name=\"l02101\"></a><span class=\"lineno\"> 2101</span> duuBuffer->BindVBO(), duuDesc,</div>\n-<div class=\"line\"><a id=\"l02102\" name=\"l02102\"></a><span class=\"lineno\"> 2102</span> duvBuffer->BindVBO(), duvDesc,</div>\n-<div class=\"line\"><a id=\"l02103\" name=\"l02103\"></a><span class=\"lineno\"> 2103</span> dvvBuffer->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->BindVBO(),</div>\n-<div class=\"line\"><a id=\"l02106\" name=\"l02106\"></a><span class=\"lineno\"> 2106</span> patchTable->GetFVarPatchArrays(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l02107\" name=\"l02107\"></a><span class=\"lineno\"> 2107</span> patchTable->GetFVarPatchIndexTextureBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l02108\" name=\"l02108\"></a><span class=\"lineno\"> 2108</span> patchTable->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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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< PatchParam > 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< PatchArray > 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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, GLuint dstBuffer, BufferDescriptor const &dstDesc, GLuint duBuffer, BufferDescriptor const &duDesc, GLuint dvBuffer, BufferDescriptor const &dvDesc, GLuint duuBuffer, BufferDescriptor const &duuDesc, GLuint duvBuffer, BufferDescriptor const &duvDesc, GLuint dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords, GLuint patchCoordsBuffer, const PatchArrayVector &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, BufferDescriptor const &duuDesc, BufferDescriptor const &duvDesc, BufferDescriptor const &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 &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, GLuint dstBuffer, BufferDescriptor const &dstDesc, GLuint duBuffer, BufferDescriptor const &duDesc, GLuint dvBuffer, BufferDescriptor const &dvDesc, GLuint duuBuffer, BufferDescriptor const &duuDesc, GLuint duvBuffer, BufferDescriptor const &duvDesc, GLuint dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, BufferDescriptor const &duuDesc, BufferDescriptor const &duvDesc, BufferDescriptor const &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 &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, GLuint dstBuffer, BufferDescriptor const &dstDesc, GLuint duBuffer, BufferDescriptor const &duDesc, GLuint dvBuffer, BufferDescriptor const &dvDesc, int numPatchCoords, GLuint patchCoordsBuffer, const PatchArrayVector &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 &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, BufferDescriptor const &duuDesc, BufferDescriptor const &duvDesc, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, GLuint dstBuffer, BufferDescriptor const &dstDesc, GLuint duBuffer, BufferDescriptor const &duDesc, GLuint dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc=BufferDescriptor(), BufferDescriptor const &dvDesc=BufferDescriptor(), BufferDescriptor const &duuDesc=BufferDescriptor(), BufferDescriptor const &duvDesc=BufferDescriptor(), BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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< int > _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< PatchParamVector > _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< std::vector< int > > _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< int > _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< PatchArrayVector > _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> |\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 "../version.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00773_source.html\">../far/patchDescriptor.h</a>"</code><br />\n-<code>#include <string></code><br />\n+<code>#include "<a class=\"el\" href=\"a01492_source.html\">../sdc/types.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00869_source.html\">../sdc/crease.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00860_source.html\">../sdc/options.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a01495_source.html\">../vtr/types.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00815_source.html\">../vtr/level.h</a>"</code><br />\n+<code>#include <vector></code><br />\n+<code>#include <cassert></code><br />\n+<code>#include <cstring></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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01265.html\">HLSLPatchShaderSource</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 "../far/patchDescriptor.h"</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 <string></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 "../version.h"</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 "../sdc/types.h"</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"preprocessor\">#include "../sdc/crease.h"</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../sdc/options.h"</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"preprocessor\">#include "../vtr/types.h"</span></div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span><span class=\"preprocessor\">#include "../vtr/level.h"</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 <vector></span></div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span><span class=\"preprocessor\">#include <cassert></span></div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span><span class=\"preprocessor\">#include <cstring></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 "face-varying channel" 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 "values" and "face-values". The</span></div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"> 53</span><span class=\"comment\">// "values" 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'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'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 && !_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>, &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(&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<ValueTag> ConstValueTagArray;</div>\n+<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\"> 151</span> <span class=\"keyword\">typedef</span> Vtr::Array<ValueTag> 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 "end faces" 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<CreaseEndPair> ConstCreaseEndPairArray;</div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\"> 164</span> <span class=\"keyword\">typedef</span> Vtr::Array<CreaseEndPair> 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>& 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>& 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>& 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<Sibling>& 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> & _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<Index> _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<ETag> _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<Sibling> _vertSiblingCounts;</div>\n+<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\"> 285</span> std::vector<int> _vertSiblingOffsets;</div>\n+<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\"> 286</span> std::vector<Sibling> _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<Index> _vertValueIndices;</div>\n+<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\"> 290</span> std::vector<ValueTag> _vertValueTags;</div>\n+<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\"> 291</span> std::vector<CreaseEndPair> _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>(&_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>(&_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(&_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(&_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>(&_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>(&_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(&_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(&_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(&_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(&_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() > 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->_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->_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->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->isCrease() || this->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->_infIrregular && !this->_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->_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->_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->_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< LocalIndex > 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< LocalIndex > 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< Index > 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< Index > 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> |\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> |\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 "../version.h"</code><br />\n+<code>#include <cassert></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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01353.html\">ConstArray< TYPE ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01357.html\">Array< TYPE ></a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </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 </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 &srcDesc, float *dst, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &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\"> </td></tr>\n-<tr class=\"memitem:a907dc53421460557871ddc35f77751f5\" id=\"r_a907dc53421460557871ddc35f77751f5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void </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 &srcDesc, float *dst, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &dstDesc, float *dstDu, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &dstDuDesc, float *dstDv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &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\"> </td></tr>\n-<tr class=\"memitem:a44a05502feb5015035bc81b93cffb99c\" id=\"r_a44a05502feb5015035bc81b93cffb99c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void </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 &srcDesc, float *dst, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &dstDesc, float *dstDu, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &dstDuDesc, float *dstDv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &dstDvDesc, float *dstDuu, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &dstDuuDesc, float *dstDuv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &dstDuvDesc, float *dstDvv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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> &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> &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> &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> &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> &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> &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 "../version.h"</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 <cassert></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'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<>, 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> <<span class=\"keyword\">typename</span> TYPE></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> &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> &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> &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> &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> &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> &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> &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>& <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& <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 &srcDesc, float *dst, BufferDescriptor const &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>>=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\">"FindIndexIn4Tuple() did not find expected value!"</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<<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> <<span class=\"keyword\">typename</span> TYPE></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><TYPE> {</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>& <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& <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><TYPE>() { }</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><TYPE>(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<TYPE>::_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<</span><a class=\"code hl_typedef\" href=\"a01357.html#a9025ff89fc9afe7d9054abb58123bbda\">reference</a><span class=\"keyword\">></span>(<a class=\"code hl_class\" href=\"a01353.html\">ConstArray<TYPE>::_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<</span><a class=\"code hl_typedef\" href=\"a01357.html#adfa2f8bb0c1215f3b0ef976f122faf0d\">iterator</a><span class=\"keyword\">></span>(<a class=\"code hl_class\" href=\"a01353.html\">ConstArray<TYPE>::_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<</span><a class=\"code hl_typedef\" href=\"a01357.html#adfa2f8bb0c1215f3b0ef976f122faf0d\">iterator</a><span class=\"keyword\">></span>(<a class=\"code hl_class\" href=\"a01353.html\">ConstArray<TYPE>::_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<TYPE>::_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 & 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 & 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 & 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 & 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> |\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 "../version.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00866_source.html\">../osd/bufferDescriptor.h</a>"</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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01197.html\">D3D11StencilTable</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 "../osd/bufferDescriptor.h"</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 "../version.h"</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> <<span class=\"keyword\">typename</span> DEVICE_CONTEXT></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->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> <<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></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<TYPE,SIZE,POD_TYPE> &) { }</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"> 78</span> StackBuffer& operator=(<span class=\"keyword\">const</span> StackBuffer<TYPE,SIZE,POD_TYPE> &) { <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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> <<span class=\"keyword\">typename</span> TYPE, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> SIZE, <span class=\"keywordtype\">bool</span> POD_TYPE></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<TYPE,SIZE,POD_TYPE>::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\">// "suitably aligned" 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<</span><span class=\"keywordtype\">char</span>*<span class=\"keyword\">></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<</span>TYPE*<span class=\"keyword\">></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> <<span class=\"keyword\">typename</span> TYPE, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> SIZE, <span class=\"keywordtype\">bool</span> POD_TYPE></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<TYPE,SIZE,POD_TYPE>::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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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-><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-><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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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->BindD3D11UAV(deviceContext), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\"> 187</span> dstBuffer->BindD3D11UAV(deviceContext), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"> 188</span> stencilTable->GetSizesSRV(),</div>\n-<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\"> 189</span> stencilTable->GetOffsetsSRV(),</div>\n-<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\"> 190</span> stencilTable->GetIndicesSRV(),</div>\n-<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\"> 191</span> stencilTable->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->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> &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> &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> &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> &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 &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, BufferDescriptor const &duuDesc, BufferDescriptor const &duvDesc, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, BufferDescriptor const &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 &srcDesc, ID3D11UnorderedAccessView *dstUAV, BufferDescriptor const &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<</span>TYPE*<span class=\"keyword\">></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> <<span class=\"keyword\">typename</span> TYPE, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> SIZE, <span class=\"keywordtype\">bool</span> POD_TYPE></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<TYPE,SIZE,POD_TYPE>::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 < _size; ++i) {</div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"> 134</span> (void) <span class=\"keyword\">new</span> (&_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> <<span class=\"keyword\">typename</span> TYPE, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> SIZE, <span class=\"keywordtype\">bool</span> POD_TYPE></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<TYPE,SIZE,POD_TYPE>::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 < _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> <<span class=\"keyword\">typename</span> TYPE, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> SIZE, <span class=\"keywordtype\">bool</span> POD_TYPE></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<TYPE,SIZE,POD_TYPE>::StackBuffer() :</div>\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\"> 152</span> _data(reinterpret_cast<TYPE*>(_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> <<span class=\"keyword\">typename</span> TYPE, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> SIZE, <span class=\"keywordtype\">bool</span> POD_TYPE></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<TYPE,SIZE,POD_TYPE>::StackBuffer(size_type size) :</div>\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\"> 162</span> _data(reinterpret_cast<TYPE*>(_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 > 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> <<span class=\"keyword\">typename</span> TYPE, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> SIZE, <span class=\"keywordtype\">bool</span> POD_TYPE></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<TYPE,SIZE,POD_TYPE>::~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> <<span class=\"keyword\">typename</span> TYPE, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> SIZE, <span class=\"keywordtype\">bool</span> POD_TYPE></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<TYPE,SIZE,POD_TYPE>::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 > _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> <<span class=\"keyword\">typename</span> TYPE, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> SIZE, <span class=\"keywordtype\">bool</span> POD_TYPE></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<TYPE,SIZE,POD_TYPE>::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 > _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> |\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 "../version.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00866_source.html\">../osd/bufferDescriptor.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>"</code><br />\n-<code>#include <cstddef></code><br />\n+<code>#include "<a class=\"el\" href=\"a01492_source.html\">../sdc/types.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00860_source.html\">../sdc/options.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a01495_source.html\">../vtr/types.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00815_source.html\">../vtr/level.h</a>"</code><br />\n+<code>#include <vector></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  </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span><span class=\"preprocessor\">#include "../osd/bufferDescriptor.h"</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"preprocessor\">#include "../osd/types.h"</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 <cstddef></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 "../version.h"</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 "../sdc/types.h"</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"preprocessor\">#include "../sdc/options.h"</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../vtr/types.h"</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"preprocessor\">#include "../vtr/level.h"</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 <vector></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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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> & parent, Level & child, Sdc::Options <span class=\"keyword\">const</span>& 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>& 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>& 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& 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->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->BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"> 86</span> dstBuffer->BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"> 87</span> &stencilTable->GetSizes()[0],</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"> 88</span> &stencilTable->GetOffsets()[0],</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"> 89</span> &stencilTable->GetControlIndices()[0],</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"> 90</span> &stencilTable->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->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> &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> &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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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> &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> &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->BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\"> 181</span> dstBuffer->BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\"> 182</span> duBuffer->BindCpuBuffer(), duDesc,</div>\n-<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\"> 183</span> dvBuffer->BindCpuBuffer(), dvDesc,</div>\n-<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\"> 184</span> &stencilTable->GetSizes()[0],</div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"> 185</span> &stencilTable->GetOffsets()[0],</div>\n-<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\"> 186</span> &stencilTable->GetControlIndices()[0],</div>\n-<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\"> 187</span> &stencilTable->GetWeights()[0],</div>\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"> 188</span> &stencilTable->GetDuWeights()[0],</div>\n-<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\"> 189</span> &stencilTable->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->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> &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> &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> &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> &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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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> &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> &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> &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> &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> &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->BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\"> 319</span> dstBuffer->BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\"> 320</span> duBuffer->BindCpuBuffer(), duDesc,</div>\n-<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\"> 321</span> dvBuffer->BindCpuBuffer(), dvDesc,</div>\n-<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\"> 322</span> duuBuffer->BindCpuBuffer(), duuDesc,</div>\n-<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\"> 323</span> duvBuffer->BindCpuBuffer(), duvDesc,</div>\n-<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\"> 324</span> dvvBuffer->BindCpuBuffer(), dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\"> 325</span> &stencilTable->GetSizes()[0],</div>\n-<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\"> 326</span> &stencilTable->GetOffsets()[0],</div>\n-<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\"> 327</span> &stencilTable->GetControlIndices()[0],</div>\n-<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\"> 328</span> &stencilTable->GetWeights()[0],</div>\n-<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\"> 329</span> &stencilTable->GetDuWeights()[0],</div>\n-<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\"> 330</span> &stencilTable->GetDvWeights()[0],</div>\n-<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\"> 331</span> &stencilTable->GetDuuWeights()[0],</div>\n-<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\"> 332</span> &stencilTable->GetDuvWeights()[0],</div>\n-<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\"> 333</span> &stencilTable->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->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> &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> &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> &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> &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> &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> &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> &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> & 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\">// "sparse": 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\">// "minimal topology": 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 "full topology" 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'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 "transitional" 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 "transitional" 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 > 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> & 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> & 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> & 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 & 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 & 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 & 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> & 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> & 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> & 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 & 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 & 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 & 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>& 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 "Array" 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<ChildTag> _childFaceTag;</div>\n+<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\"> 394</span> std::vector<ChildTag> _childEdgeTag;</div>\n+<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\"> 395</span> std::vector<ChildTag> _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<SparseTag> _parentFaceTag;</div>\n+<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\"> 401</span> std::vector<SparseTag> _parentEdgeTag;</div>\n+<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\"> 402</span> std::vector<SparseTag> _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<FVarRefinement*> _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>(&_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>(&_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> <<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></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> &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> &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->BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\"> 467</span> dstBuffer->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->BindCpuBuffer(),</div>\n-<div class=\"line\"><a id=\"l00470\" name=\"l00470\"></a><span class=\"lineno\"> 470</span> patchTable->GetPatchArrayBuffer(),</div>\n-<div class=\"line\"><a id=\"l00471\" name=\"l00471\"></a><span class=\"lineno\"> 471</span> patchTable->GetPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l00472\" name=\"l00472\"></a><span class=\"lineno\"> 472</span> patchTable->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> <<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></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> &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> &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> &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> &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'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<PatchCoord> )</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->BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00537\" name=\"l00537\"></a><span class=\"lineno\"> 537</span> dstBuffer->BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00538\" name=\"l00538\"></a><span class=\"lineno\"> 538</span> duBuffer->BindCpuBuffer(), duDesc,</div>\n-<div class=\"line\"><a id=\"l00539\" name=\"l00539\"></a><span class=\"lineno\"> 539</span> dvBuffer->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->BindCpuBuffer(),</div>\n-<div class=\"line\"><a id=\"l00542\" name=\"l00542\"></a><span class=\"lineno\"> 542</span> patchTable->GetPatchArrayBuffer(),</div>\n-<div class=\"line\"><a id=\"l00543\" name=\"l00543\"></a><span class=\"lineno\"> 543</span> patchTable->GetPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l00544\" name=\"l00544\"></a><span class=\"lineno\"> 544</span> patchTable->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> <<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></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> &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> &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> &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> &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> &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> &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> &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'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<PatchCoord> )</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->BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00630\" name=\"l00630\"></a><span class=\"lineno\"> 630</span> dstBuffer->BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00631\" name=\"l00631\"></a><span class=\"lineno\"> 631</span> duBuffer->BindCpuBuffer(), duDesc,</div>\n-<div class=\"line\"><a id=\"l00632\" name=\"l00632\"></a><span class=\"lineno\"> 632</span> dvBuffer->BindCpuBuffer(), dvDesc,</div>\n-<div class=\"line\"><a id=\"l00633\" name=\"l00633\"></a><span class=\"lineno\"> 633</span> duuBuffer->BindCpuBuffer(), duuDesc,</div>\n-<div class=\"line\"><a id=\"l00634\" name=\"l00634\"></a><span class=\"lineno\"> 634</span> duvBuffer->BindCpuBuffer(), duvDesc,</div>\n-<div class=\"line\"><a id=\"l00635\" name=\"l00635\"></a><span class=\"lineno\"> 635</span> dvvBuffer->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->BindCpuBuffer(),</div>\n-<div class=\"line\"><a id=\"l00638\" name=\"l00638\"></a><span class=\"lineno\"> 638</span> patchTable->GetPatchArrayBuffer(),</div>\n-<div class=\"line\"><a id=\"l00639\" name=\"l00639\"></a><span class=\"lineno\"> 639</span> patchTable->GetPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l00640\" name=\"l00640\"></a><span class=\"lineno\"> 640</span> patchTable->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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> &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> <<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></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> &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> &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->BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00836\" name=\"l00836\"></a><span class=\"lineno\"> 836</span> dstBuffer->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->BindCpuBuffer(),</div>\n-<div class=\"line\"><a id=\"l00839\" name=\"l00839\"></a><span class=\"lineno\"> 839</span> patchTable->GetVaryingPatchArrayBuffer(),</div>\n-<div class=\"line\"><a id=\"l00840\" name=\"l00840\"></a><span class=\"lineno\"> 840</span> patchTable->GetVaryingPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l00841\" name=\"l00841\"></a><span class=\"lineno\"> 841</span> patchTable->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> <<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></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> &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> &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> &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> &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->BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00901\" name=\"l00901\"></a><span class=\"lineno\"> 901</span> dstBuffer->BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00902\" name=\"l00902\"></a><span class=\"lineno\"> 902</span> duBuffer->BindCpuBuffer(), duDesc,</div>\n-<div class=\"line\"><a id=\"l00903\" name=\"l00903\"></a><span class=\"lineno\"> 903</span> dvBuffer->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->BindCpuBuffer(),</div>\n-<div class=\"line\"><a id=\"l00906\" name=\"l00906\"></a><span class=\"lineno\"> 906</span> patchTable->GetVaryingPatchArrayBuffer(),</div>\n-<div class=\"line\"><a id=\"l00907\" name=\"l00907\"></a><span class=\"lineno\"> 907</span> patchTable->GetVaryingPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l00908\" name=\"l00908\"></a><span class=\"lineno\"> 908</span> patchTable->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> <<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></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> &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> &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> &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> &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> &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> &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> &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->BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00989\" name=\"l00989\"></a><span class=\"lineno\"> 989</span> dstBuffer->BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00990\" name=\"l00990\"></a><span class=\"lineno\"> 990</span> duBuffer->BindCpuBuffer(), duDesc,</div>\n-<div class=\"line\"><a id=\"l00991\" name=\"l00991\"></a><span class=\"lineno\"> 991</span> dvBuffer->BindCpuBuffer(), dvDesc,</div>\n-<div class=\"line\"><a id=\"l00992\" name=\"l00992\"></a><span class=\"lineno\"> 992</span> duuBuffer->BindCpuBuffer(), duuDesc,</div>\n-<div class=\"line\"><a id=\"l00993\" name=\"l00993\"></a><span class=\"lineno\"> 993</span> duvBuffer->BindCpuBuffer(), duvDesc,</div>\n-<div class=\"line\"><a id=\"l00994\" name=\"l00994\"></a><span class=\"lineno\"> 994</span> dvvBuffer->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->BindCpuBuffer(),</div>\n-<div class=\"line\"><a id=\"l00997\" name=\"l00997\"></a><span class=\"lineno\"> 997</span> patchTable->GetVaryingPatchArrayBuffer(),</div>\n-<div class=\"line\"><a id=\"l00998\" name=\"l00998\"></a><span class=\"lineno\"> 998</span> patchTable->GetVaryingPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l00999\" name=\"l00999\"></a><span class=\"lineno\"> 999</span> patchTable->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> <<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></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> &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> &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->BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01048\" name=\"l01048\"></a><span class=\"lineno\"> 1048</span> dstBuffer->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->BindCpuBuffer(),</div>\n-<div class=\"line\"><a id=\"l01051\" name=\"l01051\"></a><span class=\"lineno\"> 1051</span> patchTable->GetFVarPatchArrayBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01052\" name=\"l01052\"></a><span class=\"lineno\"> 1052</span> patchTable->GetFVarPatchIndexBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01053\" name=\"l01053\"></a><span class=\"lineno\"> 1053</span> patchTable->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> <<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></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> &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> &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> &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> &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->BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01116\" name=\"l01116\"></a><span class=\"lineno\"> 1116</span> dstBuffer->BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01117\" name=\"l01117\"></a><span class=\"lineno\"> 1117</span> duBuffer->BindCpuBuffer(), duDesc,</div>\n-<div class=\"line\"><a id=\"l01118\" name=\"l01118\"></a><span class=\"lineno\"> 1118</span> dvBuffer->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->BindCpuBuffer(),</div>\n-<div class=\"line\"><a id=\"l01121\" name=\"l01121\"></a><span class=\"lineno\"> 1121</span> patchTable->GetFVarPatchArrayBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01122\" name=\"l01122\"></a><span class=\"lineno\"> 1122</span> patchTable->GetFVarPatchIndexBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01123\" name=\"l01123\"></a><span class=\"lineno\"> 1123</span> patchTable->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> <<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></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> &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> &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> &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> &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> &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> &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> &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->BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01207\" name=\"l01207\"></a><span class=\"lineno\"> 1207</span> dstBuffer->BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01208\" name=\"l01208\"></a><span class=\"lineno\"> 1208</span> duBuffer->BindCpuBuffer(), duDesc,</div>\n-<div class=\"line\"><a id=\"l01209\" name=\"l01209\"></a><span class=\"lineno\"> 1209</span> dvBuffer->BindCpuBuffer(), dvDesc,</div>\n-<div class=\"line\"><a id=\"l01210\" name=\"l01210\"></a><span class=\"lineno\"> 1210</span> duuBuffer->BindCpuBuffer(), duuDesc,</div>\n-<div class=\"line\"><a id=\"l01211\" name=\"l01211\"></a><span class=\"lineno\"> 1211</span> duvBuffer->BindCpuBuffer(), duvDesc,</div>\n-<div class=\"line\"><a id=\"l01212\" name=\"l01212\"></a><span class=\"lineno\"> 1212</span> dvvBuffer->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->BindCpuBuffer(),</div>\n-<div class=\"line\"><a id=\"l01215\" name=\"l01215\"></a><span class=\"lineno\"> 1215</span> patchTable->GetFVarPatchArrayBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01216\" name=\"l01216\"></a><span class=\"lineno\"> 1216</span> patchTable->GetFVarPatchIndexBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01217\" name=\"l01217\"></a><span class=\"lineno\"> 1217</span> patchTable->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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, float *dst, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const &duDesc, float *dv, BufferDescriptor const &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 &srcDesc, float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const &duDesc, float *dv, BufferDescriptor const &dvDesc, float *duu, BufferDescriptor const &duuDesc, float *duv, BufferDescriptor const &duvDesc, float *dvv, BufferDescriptor const &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 &srcDesc, float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const &duDesc, float *dv, BufferDescriptor const &dvDesc, float *duu, BufferDescriptor const &duuDesc, float *duv, BufferDescriptor const &duvDesc, float *dvv, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const &duDesc, float *dv, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, float *dst, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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>(&_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>(&_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>(&_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>(&_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< Index > 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< Index > 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< Index > 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> |\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 "../version.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00866_source.html\">../osd/bufferDescriptor.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00824_source.html\">../osd/mtlCommon.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a01492_source.html\">../sdc/types.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00869_source.html\">../sdc/crease.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a01495_source.html\">../vtr/types.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00803_source.html\">../vtr/refinement.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00794_source.html\">../vtr/fvarLevel.h</a>"</code><br />\n+<code>#include <vector></code><br />\n+<code>#include <cassert></code><br />\n+<code>#include <cstring></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  </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\"> </td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 "../osd/types.h"</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../osd/bufferDescriptor.h"</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"preprocessor\">#include "../osd/mtlCommon.h"</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 "../version.h"</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 "../sdc/types.h"</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"preprocessor\">#include "../sdc/crease.h"</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../vtr/types.h"</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"preprocessor\">#include "../vtr/refinement.h"</span></div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span><span class=\"preprocessor\">#include "../vtr/fvarLevel.h"</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 <vector></span></div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span><span class=\"preprocessor\">#include <cassert></span></div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span><span class=\"preprocessor\">#include <cstring></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><<span class=\"keyword\">typename</span> STENCIL_TABLE, <span class=\"keyword\">typename</span> DEVICE_CONTEXT></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<MTLBuffer> <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<MTLBuffer> <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<MTLBuffer> <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<MTLBuffer> <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<MTLBuffer> <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<MTLBuffer> <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<MTLBuffer> <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<MTLBuffer> <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<MTLBuffer> <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 "channel". 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>& refinement, FVarLevel& parent, FVarLevel& 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<MTLBuffer> _sizesBuffer;</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"> 79</span> id<MTLBuffer> _offsetsBuffer;</div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"> 80</span> id<MTLBuffer> _indicesBuffer;</div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"> 81</span> id<MTLBuffer> _weightsBuffer;</div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"> 82</span> id<MTLBuffer> _duWeightsBuffer;</div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"> 83</span> id<MTLBuffer> _dvWeightsBuffer;</div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"> 84</span> id<MTLBuffer> _duuWeightsBuffer;</div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"> 85</span> id<MTLBuffer> _duvWeightsBuffer;</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"> 86</span> id<MTLBuffer> _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> & _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> &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> &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> &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> &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> & _parentLevel;</div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"> 97</span> FVarLevel <span class=\"keyword\">const</span> & _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> & _childLevel;</div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"> 100</span> FVarLevel & _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> &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> &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> &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> &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> &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> &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> &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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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-><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-><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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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> &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> &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-><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-><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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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> &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> &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> &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> &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> &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-><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-><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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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->BindMTLBuffer(context), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\"> 383</span> dstBuffer->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->GetSizesBuffer(),</div>\n-<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\"> 387</span> stencilTable->GetOffsetsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\"> 388</span> stencilTable->GetIndicesBuffer(),</div>\n-<div class=\"line\"><a id=\"l00389\" name=\"l00389\"></a><span class=\"lineno\"> 389</span> stencilTable->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->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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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> &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> &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->BindMTLBuffer(context), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00439\" name=\"l00439\"></a><span class=\"lineno\"> 439</span> dstBuffer->BindMTLBuffer(context), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00440\" name=\"l00440\"></a><span class=\"lineno\"> 440</span> duBuffer->BindMTLBuffer(context), duDesc,</div>\n-<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\"> 441</span> dvBuffer->BindMTLBuffer(context), dvDesc,</div>\n-<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\"> 442</span> stencilTable->GetSizesBuffer(),</div>\n-<div class=\"line\"><a id=\"l00443\" name=\"l00443\"></a><span class=\"lineno\"> 443</span> stencilTable->GetOffsetsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\"> 444</span> stencilTable->GetIndicesBuffer(),</div>\n-<div class=\"line\"><a id=\"l00445\" name=\"l00445\"></a><span class=\"lineno\"> 445</span> stencilTable->GetWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\"> 446</span> stencilTable->GetDuWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00447\" name=\"l00447\"></a><span class=\"lineno\"> 447</span> stencilTable->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->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> <<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE></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> &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> &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> &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> &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> &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> &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> &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->BindMTLBuffer(context), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\"> 516</span> dstBuffer->BindMTLBuffer(context), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\"> 517</span> duBuffer->BindMTLBuffer(context), duDesc,</div>\n-<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\"> 518</span> dvBuffer->BindMTLBuffer(context), dvDesc,</div>\n-<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\"> 519</span> duuBuffer->BindMTLBuffer(context), duuDesc,</div>\n-<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\"> 520</span> duvBuffer->BindMTLBuffer(context), duvDesc,</div>\n-<div class=\"line\"><a id=\"l00521\" name=\"l00521\"></a><span class=\"lineno\"> 521</span> dvvBuffer->BindMTLBuffer(context), dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00522\" name=\"l00522\"></a><span class=\"lineno\"> 522</span> stencilTable->GetSizesBuffer(),</div>\n-<div class=\"line\"><a id=\"l00523\" name=\"l00523\"></a><span class=\"lineno\"> 523</span> stencilTable->GetOffsetsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00524\" name=\"l00524\"></a><span class=\"lineno\"> 524</span> stencilTable->GetIndicesBuffer(),</div>\n-<div class=\"line\"><a id=\"l00525\" name=\"l00525\"></a><span class=\"lineno\"> 525</span> stencilTable->GetWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00526\" name=\"l00526\"></a><span class=\"lineno\"> 526</span> stencilTable->GetDuWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00527\" name=\"l00527\"></a><span class=\"lineno\"> 527</span> stencilTable->GetDvWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00528\" name=\"l00528\"></a><span class=\"lineno\"> 528</span> stencilTable->GetDuuWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00529\" name=\"l00529\"></a><span class=\"lineno\"> 529</span> stencilTable->GetDuvWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00530\" name=\"l00530\"></a><span class=\"lineno\"> 530</span> stencilTable->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->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<MTLBuffer> srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &srcDesc,</div>\n-<div class=\"line\"><a id=\"l00575\" name=\"l00575\"></a><span class=\"lineno\"> 575</span> id<MTLBuffer> dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &dstDesc,</div>\n-<div class=\"line\"><a id=\"l00576\" name=\"l00576\"></a><span class=\"lineno\"> 576</span> id<MTLBuffer> duBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &duDesc,</div>\n-<div class=\"line\"><a id=\"l00577\" name=\"l00577\"></a><span class=\"lineno\"> 577</span> id<MTLBuffer> dvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &dvDesc,</div>\n-<div class=\"line\"><a id=\"l00578\" name=\"l00578\"></a><span class=\"lineno\"> 578</span> id<MTLBuffer> sizesBuffer,</div>\n-<div class=\"line\"><a id=\"l00579\" name=\"l00579\"></a><span class=\"lineno\"> 579</span> id<MTLBuffer> offsetsBuffer,</div>\n-<div class=\"line\"><a id=\"l00580\" name=\"l00580\"></a><span class=\"lineno\"> 580</span> id<MTLBuffer> indicesBuffer,</div>\n-<div class=\"line\"><a id=\"l00581\" name=\"l00581\"></a><span class=\"lineno\"> 581</span> id<MTLBuffer> weightsBuffer,</div>\n-<div class=\"line\"><a id=\"l00582\" name=\"l00582\"></a><span class=\"lineno\"> 582</span> id<MTLBuffer> duWeightsBuffer,</div>\n-<div class=\"line\"><a id=\"l00583\" name=\"l00583\"></a><span class=\"lineno\"> 583</span> id<MTLBuffer> 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<MTLBuffer> srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &srcDesc,</div>\n-<div class=\"line\"><a id=\"l00645\" name=\"l00645\"></a><span class=\"lineno\"> 645</span> id<MTLBuffer> dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &dstDesc,</div>\n-<div class=\"line\"><a id=\"l00646\" name=\"l00646\"></a><span class=\"lineno\"> 646</span> id<MTLBuffer> duBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &duDesc,</div>\n-<div class=\"line\"><a id=\"l00647\" name=\"l00647\"></a><span class=\"lineno\"> 647</span> id<MTLBuffer> dvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &dvDesc,</div>\n-<div class=\"line\"><a id=\"l00648\" name=\"l00648\"></a><span class=\"lineno\"> 648</span> id<MTLBuffer> duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &duuDesc,</div>\n-<div class=\"line\"><a id=\"l00649\" name=\"l00649\"></a><span class=\"lineno\"> 649</span> id<MTLBuffer> duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &duvDesc,</div>\n-<div class=\"line\"><a id=\"l00650\" name=\"l00650\"></a><span class=\"lineno\"> 650</span> id<MTLBuffer> dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00651\" name=\"l00651\"></a><span class=\"lineno\"> 651</span> id<MTLBuffer> sizesBuffer,</div>\n-<div class=\"line\"><a id=\"l00652\" name=\"l00652\"></a><span class=\"lineno\"> 652</span> id<MTLBuffer> offsetsBuffer,</div>\n-<div class=\"line\"><a id=\"l00653\" name=\"l00653\"></a><span class=\"lineno\"> 653</span> id<MTLBuffer> indicesBuffer,</div>\n-<div class=\"line\"><a id=\"l00654\" name=\"l00654\"></a><span class=\"lineno\"> 654</span> id<MTLBuffer> weightsBuffer,</div>\n-<div class=\"line\"><a id=\"l00655\" name=\"l00655\"></a><span class=\"lineno\"> 655</span> id<MTLBuffer> duWeightsBuffer,</div>\n-<div class=\"line\"><a id=\"l00656\" name=\"l00656\"></a><span class=\"lineno\"> 656</span> id<MTLBuffer> dvWeightsBuffer,</div>\n-<div class=\"line\"><a id=\"l00657\" name=\"l00657\"></a><span class=\"lineno\"> 657</span> id<MTLBuffer> duuWeightsBuffer,</div>\n-<div class=\"line\"><a id=\"l00658\" name=\"l00658\"></a><span class=\"lineno\"> 658</span> id<MTLBuffer> duvWeightsBuffer,</div>\n-<div class=\"line\"><a id=\"l00659\" name=\"l00659\"></a><span class=\"lineno\"> 659</span> id<MTLBuffer> 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> <<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></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> &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> &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-><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-><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> <<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></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> &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> &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> &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> &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-><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-><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> <<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></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> &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> &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> &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> &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> &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> &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> &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-><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-><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> <<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></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> &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> &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->BindMTLBuffer(context), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00975\" name=\"l00975\"></a><span class=\"lineno\"> 975</span> dstBuffer->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->BindMTLBuffer(context),</div>\n-<div class=\"line\"><a id=\"l00980\" name=\"l00980\"></a><span class=\"lineno\"> 980</span> patchTable->GetPatchArrays(),</div>\n-<div class=\"line\"><a id=\"l00981\" name=\"l00981\"></a><span class=\"lineno\"> 981</span> patchTable->GetPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l00982\" name=\"l00982\"></a><span class=\"lineno\"> 982</span> patchTable->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> <<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></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> &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> &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> &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> &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->BindMTLBuffer(context), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01036\" name=\"l01036\"></a><span class=\"lineno\"> 1036</span> dstBuffer->BindMTLBuffer(context), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01037\" name=\"l01037\"></a><span class=\"lineno\"> 1037</span> duBuffer->BindMTLBuffer(context), duDesc,</div>\n-<div class=\"line\"><a id=\"l01038\" name=\"l01038\"></a><span class=\"lineno\"> 1038</span> dvBuffer->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->BindMTLBuffer(context),</div>\n-<div class=\"line\"><a id=\"l01041\" name=\"l01041\"></a><span class=\"lineno\"> 1041</span> patchTable->GetPatchArrays(),</div>\n-<div class=\"line\"><a id=\"l01042\" name=\"l01042\"></a><span class=\"lineno\"> 1042</span> patchTable->GetPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l01043\" name=\"l01043\"></a><span class=\"lineno\"> 1043</span> patchTable->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> <<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></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> &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> &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> &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> &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> &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> &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> &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->BindMTLBuffer(context), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01118\" name=\"l01118\"></a><span class=\"lineno\"> 1118</span> dstBuffer->BindMTLBuffer(context), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01119\" name=\"l01119\"></a><span class=\"lineno\"> 1119</span> duBuffer->BindMTLBuffer(context), duDesc,</div>\n-<div class=\"line\"><a id=\"l01120\" name=\"l01120\"></a><span class=\"lineno\"> 1120</span> dvBuffer->BindMTLBuffer(context), dvDesc,</div>\n-<div class=\"line\"><a id=\"l01121\" name=\"l01121\"></a><span class=\"lineno\"> 1121</span> duuBuffer->BindMTLBuffer(context), duuDesc,</div>\n-<div class=\"line\"><a id=\"l01122\" name=\"l01122\"></a><span class=\"lineno\"> 1122</span> duvBuffer->BindMTLBuffer(context), duvDesc,</div>\n-<div class=\"line\"><a id=\"l01123\" name=\"l01123\"></a><span class=\"lineno\"> 1123</span> dvvBuffer->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->BindMTLBuffer(context),</div>\n-<div class=\"line\"><a id=\"l01126\" name=\"l01126\"></a><span class=\"lineno\"> 1126</span> patchTable->GetPatchArrays(),</div>\n-<div class=\"line\"><a id=\"l01127\" name=\"l01127\"></a><span class=\"lineno\"> 1127</span> patchTable->GetPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l01128\" name=\"l01128\"></a><span class=\"lineno\"> 1128</span> patchTable->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<MTLBuffer> srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &srcDesc,</div>\n-<div class=\"line\"><a id=\"l01133\" name=\"l01133\"></a><span class=\"lineno\"> 1133</span> id<MTLBuffer> dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &dstDesc,</div>\n-<div class=\"line\"><a id=\"l01134\" name=\"l01134\"></a><span class=\"lineno\"> 1134</span> id<MTLBuffer> duBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &duDesc,</div>\n-<div class=\"line\"><a id=\"l01135\" name=\"l01135\"></a><span class=\"lineno\"> 1135</span> id<MTLBuffer> dvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &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<MTLBuffer> 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> &patchArrays,</div>\n-<div class=\"line\"><a id=\"l01139\" name=\"l01139\"></a><span class=\"lineno\"> 1139</span> id<MTLBuffer> patchIndexBuffer,</div>\n-<div class=\"line\"><a id=\"l01140\" name=\"l01140\"></a><span class=\"lineno\"> 1140</span> id<MTLBuffer> 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<MTLBuffer> srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &srcDesc,</div>\n-<div class=\"line\"><a id=\"l01144\" name=\"l01144\"></a><span class=\"lineno\"> 1144</span> id<MTLBuffer> dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &dstDesc,</div>\n-<div class=\"line\"><a id=\"l01145\" name=\"l01145\"></a><span class=\"lineno\"> 1145</span> id<MTLBuffer> duBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &duDesc,</div>\n-<div class=\"line\"><a id=\"l01146\" name=\"l01146\"></a><span class=\"lineno\"> 1146</span> id<MTLBuffer> dvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &dvDesc,</div>\n-<div class=\"line\"><a id=\"l01147\" name=\"l01147\"></a><span class=\"lineno\"> 1147</span> id<MTLBuffer> duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &duuDesc,</div>\n-<div class=\"line\"><a id=\"l01148\" name=\"l01148\"></a><span class=\"lineno\"> 1148</span> id<MTLBuffer> duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &duvDesc,</div>\n-<div class=\"line\"><a id=\"l01149\" name=\"l01149\"></a><span class=\"lineno\"> 1149</span> id<MTLBuffer> dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &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<MTLBuffer> 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> &patchArrays,</div>\n-<div class=\"line\"><a id=\"l01153\" name=\"l01153\"></a><span class=\"lineno\"> 1153</span> id<MTLBuffer> patchIndexBuffer,</div>\n-<div class=\"line\"><a id=\"l01154\" name=\"l01154\"></a><span class=\"lineno\"> 1154</span> id<MTLBuffer> 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> <<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></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> &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> &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-><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-><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> <<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></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> &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> &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->BindMTLBuffer(deviceContext), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01266\" name=\"l01266\"></a><span class=\"lineno\"> 1266</span> dstBuffer->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->BindMTLBuffer(deviceContext),</div>\n-<div class=\"line\"><a id=\"l01271\" name=\"l01271\"></a><span class=\"lineno\"> 1271</span> patchTable->GetVaryingPatchArrays(),</div>\n-<div class=\"line\"><a id=\"l01272\" name=\"l01272\"></a><span class=\"lineno\"> 1272</span> patchTable->GetVaryingPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l01273\" name=\"l01273\"></a><span class=\"lineno\"> 1273</span> patchTable->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> <<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></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> &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> &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> &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> &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-><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-><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> <<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></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> &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> &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> &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> &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->BindMTLBuffer(deviceContext), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01418\" name=\"l01418\"></a><span class=\"lineno\"> 1418</span> dstBuffer->BindMTLBuffer(deviceContext), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01419\" name=\"l01419\"></a><span class=\"lineno\"> 1419</span> duBuffer->BindMTLBuffer(deviceContext), duDesc,</div>\n-<div class=\"line\"><a id=\"l01420\" name=\"l01420\"></a><span class=\"lineno\"> 1420</span> dvBuffer->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->BindMTLBuffer(deviceContext),</div>\n-<div class=\"line\"><a id=\"l01423\" name=\"l01423\"></a><span class=\"lineno\"> 1423</span> patchTable->GetVaryingPatchArrays(),</div>\n-<div class=\"line\"><a id=\"l01424\" name=\"l01424\"></a><span class=\"lineno\"> 1424</span> patchTable->GetVaryingPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l01425\" name=\"l01425\"></a><span class=\"lineno\"> 1425</span> patchTable->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> <<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></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> &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> &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> &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> &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> &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> &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> &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-><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-><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> <<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></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> &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> &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> &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> &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> &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> &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> &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->BindMTLBuffer(deviceContext), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01620\" name=\"l01620\"></a><span class=\"lineno\"> 1620</span> dstBuffer->BindMTLBuffer(deviceContext), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01621\" name=\"l01621\"></a><span class=\"lineno\"> 1621</span> duBuffer->BindMTLBuffer(deviceContext), duDesc,</div>\n-<div class=\"line\"><a id=\"l01622\" name=\"l01622\"></a><span class=\"lineno\"> 1622</span> dvBuffer->BindMTLBuffer(deviceContext), dvDesc,</div>\n-<div class=\"line\"><a id=\"l01623\" name=\"l01623\"></a><span class=\"lineno\"> 1623</span> duuBuffer->BindMTLBuffer(deviceContext), duuDesc,</div>\n-<div class=\"line\"><a id=\"l01624\" name=\"l01624\"></a><span class=\"lineno\"> 1624</span> duvBuffer->BindMTLBuffer(deviceContext), duvDesc,</div>\n-<div class=\"line\"><a id=\"l01625\" name=\"l01625\"></a><span class=\"lineno\"> 1625</span> dvvBuffer->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->BindMTLBuffer(deviceContext),</div>\n-<div class=\"line\"><a id=\"l01628\" name=\"l01628\"></a><span class=\"lineno\"> 1628</span> patchTable->GetVaryingPatchArrays(),</div>\n-<div class=\"line\"><a id=\"l01629\" name=\"l01629\"></a><span class=\"lineno\"> 1629</span> patchTable->GetVaryingPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l01630\" name=\"l01630\"></a><span class=\"lineno\"> 1630</span> patchTable->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> <<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></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> &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> &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-><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-><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> <<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></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> &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> &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->BindMTLBuffer(deviceContext), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01752\" name=\"l01752\"></a><span class=\"lineno\"> 1752</span> dstBuffer->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->BindMTLBuffer(deviceContext),</div>\n-<div class=\"line\"><a id=\"l01757\" name=\"l01757\"></a><span class=\"lineno\"> 1757</span> patchTable->GetFVarPatchArrays(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01758\" name=\"l01758\"></a><span class=\"lineno\"> 1758</span> patchTable->GetFVarPatchIndexBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01759\" name=\"l01759\"></a><span class=\"lineno\"> 1759</span> patchTable->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> <<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></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> &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> &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> &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> &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-><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-><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> <<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></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> &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> &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> &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> &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->BindMTLBuffer(deviceContext), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01912\" name=\"l01912\"></a><span class=\"lineno\"> 1912</span> dstBuffer->BindMTLBuffer(deviceContext), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01913\" name=\"l01913\"></a><span class=\"lineno\"> 1913</span> duBuffer->BindMTLBuffer(deviceContext), duDesc,</div>\n-<div class=\"line\"><a id=\"l01914\" name=\"l01914\"></a><span class=\"lineno\"> 1914</span> dvBuffer->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->BindMTLBuffer(deviceContext),</div>\n-<div class=\"line\"><a id=\"l01917\" name=\"l01917\"></a><span class=\"lineno\"> 1917</span> patchTable->GetFVarPatchArrays(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01918\" name=\"l01918\"></a><span class=\"lineno\"> 1918</span> patchTable->GetFVarPatchIndexBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01919\" name=\"l01919\"></a><span class=\"lineno\"> 1919</span> patchTable->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> <<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></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> &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> &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> &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> &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> &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> &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> &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-><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-><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> <<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></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> &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> &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> &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> &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> &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> &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> &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->BindMTLBuffer(deviceContext), srcDesc,</div>\n-<div class=\"line\"><a id=\"l02121\" name=\"l02121\"></a><span class=\"lineno\"> 2121</span> dstBuffer->BindMTLBuffer(deviceContext), dstDesc,</div>\n-<div class=\"line\"><a id=\"l02122\" name=\"l02122\"></a><span class=\"lineno\"> 2122</span> duBuffer->BindMTLBuffer(deviceContext), duDesc,</div>\n-<div class=\"line\"><a id=\"l02123\" name=\"l02123\"></a><span class=\"lineno\"> 2123</span> dvBuffer->BindMTLBuffer(deviceContext), dvDesc,</div>\n-<div class=\"line\"><a id=\"l02124\" name=\"l02124\"></a><span class=\"lineno\"> 2124</span> duuBuffer->BindMTLBuffer(deviceContext), duuDesc,</div>\n-<div class=\"line\"><a id=\"l02125\" name=\"l02125\"></a><span class=\"lineno\"> 2125</span> duvBuffer->BindMTLBuffer(deviceContext), duvDesc,</div>\n-<div class=\"line\"><a id=\"l02126\" name=\"l02126\"></a><span class=\"lineno\"> 2126</span> dvvBuffer->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->BindMTLBuffer(deviceContext),</div>\n-<div class=\"line\"><a id=\"l02129\" name=\"l02129\"></a><span class=\"lineno\"> 2129</span> patchTable->GetFVarPatchArrays(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l02130\" name=\"l02130\"></a><span class=\"lineno\"> 2130</span> patchTable->GetFVarPatchIndexBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l02131\" name=\"l02131\"></a><span class=\"lineno\"> 2131</span> patchTable->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> &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> &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> &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> &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> &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> &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> &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<MTLLibrary> _computeLibrary;</div>\n-<div class=\"line\"><a id=\"l02153\" name=\"l02153\"></a><span class=\"lineno\"> 2153</span> id<MTLComputePipelineState> _evalStencils;</div>\n-<div class=\"line\"><a id=\"l02154\" name=\"l02154\"></a><span class=\"lineno\"> 2154</span> id<MTLComputePipelineState> _evalPatches;</div>\n-<div class=\"line\"><a id=\"l02155\" name=\"l02155\"></a><span class=\"lineno\"> 2155</span> id<MTLBuffer> _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< PatchArray > 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< MTLBuffer > 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< MTLBuffer > 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< MTLBuffer > 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< MTLBuffer > 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< MTLBuffer > 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< MTLBuffer > 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< MTLBuffer > 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< MTLBuffer > 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< MTLBuffer > 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< MTLBuffer > srcBuffer, BufferDescriptor const &srcDesc, id< MTLBuffer > dstBuffer, BufferDescriptor const &dstDesc, id< MTLBuffer > duBuffer, BufferDescriptor const &duDesc, id< MTLBuffer > dvBuffer, BufferDescriptor const &dvDesc, id< MTLBuffer > duuBuffer, BufferDescriptor const &duuDesc, id< MTLBuffer > duvBuffer, BufferDescriptor const &duvDesc, id< MTLBuffer > dvvBuffer, BufferDescriptor const &dvvDesc, id< MTLBuffer > sizesBuffer, id< MTLBuffer > offsetsBuffer, id< MTLBuffer > indicesBuffer, id< MTLBuffer > weightsBuffer, id< MTLBuffer > duWeightsBuffer, id< MTLBuffer > dvWeightsBuffer, id< MTLBuffer > duuWeightsBuffer, id< MTLBuffer > duvWeightsBuffer, id< MTLBuffer > 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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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< MTLBuffer > srcBuffer, BufferDescriptor const &srcDesc, id< MTLBuffer > dstBuffer, BufferDescriptor const &dstDesc, id< MTLBuffer > duBuffer, BufferDescriptor const &duDesc, id< MTLBuffer > dvBuffer, BufferDescriptor const &dvDesc, id< MTLBuffer > duuBuffer, BufferDescriptor const &duuDesc, id< MTLBuffer > duvBuffer, BufferDescriptor const &duvDesc, id< MTLBuffer > dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords, id< MTLBuffer > patchCoordsBuffer, const PatchArrayVector &patchArrays, id< MTLBuffer > patchIndexBuffer, id< MTLBuffer > 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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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< MTLBuffer > srcBuffer, BufferDescriptor const &srcDesc, id< MTLBuffer > dstBuffer, BufferDescriptor const &dstDesc, id< MTLBuffer > duBuffer, BufferDescriptor const &duDesc, id< MTLBuffer > dvBuffer, BufferDescriptor const &dvDesc, id< MTLBuffer > sizesBuffer, id< MTLBuffer > offsetsBuffer, id< MTLBuffer > indicesBuffer, id< MTLBuffer > weightsBuffer, id< MTLBuffer > duWeightsBuffer, id< MTLBuffer > 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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &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 &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &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 &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &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 &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, BufferDescriptor const &duuDesc, BufferDescriptor const &duvDesc, BufferDescriptor const &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 &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, BufferDescriptor const &duuDesc, BufferDescriptor const &duvDesc, BufferDescriptor const &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< MTLBuffer > srcBuffer, BufferDescriptor const &srcDesc, id< MTLBuffer > dstBuffer, BufferDescriptor const &dstDesc, id< MTLBuffer > duBuffer, BufferDescriptor const &duDesc, id< MTLBuffer > dvBuffer, BufferDescriptor const &dvDesc, int numPatchCoords, id< MTLBuffer > patchCoordsBuffer, const PatchArrayVector &patchArrays, id< MTLBuffer > patchIndexBuffer, id< MTLBuffer > 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 "source" rather than "sibling":</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<LocalIndex> _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> |\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 "../version.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00773_source.html\">../far/patchDescriptor.h</a>"</code><br />\n-<code>#include "../osd/nonCopyable.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00824_source.html\">../osd/mtlCommon.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a01495_source.html\">../vtr/types.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00803_source.html\">../vtr/refinement.h</a>"</code><br />\n+<code>#include <vector></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  </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span><span class=\"preprocessor\">#include "../far/patchDescriptor.h"</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"preprocessor\">#include "../osd/nonCopyable.h"</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../osd/types.h"</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"preprocessor\">#include "../osd/mtlCommon.h"</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 "../version.h"</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 "../vtr/types.h"</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"preprocessor\">#include "../vtr/refinement.h"</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 <vector></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<MTLPatchTable> {</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<MTLBuffer> <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><<span class=\"keyword\">typename</span> DEVICE_CONTEXT></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 "selection" 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 "selection" 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> &<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<MTLBuffer> <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<MTLBuffer> <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> &<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<MTLBuffer> <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& refine) : _refine(&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& refine) { _refine = &refine; }</div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"> 64</span> Refinement& 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> &<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<MTLBuffer> <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<MTLBuffer> <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<MTLBuffer> <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<MTLBuffer> <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->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->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->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<MTLBuffer> <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<PatchArrayVector> <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<id<MTLBuffer>> <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<id<MTLBuffer>> <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->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->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->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< PatchArray > 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 & 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< MTLBuffer > 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< id< MTLBuffer > > _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< MTLBuffer > 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< MTLBuffer > 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< MTLBuffer > 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< MTLBuffer > 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 & 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< MTLBuffer > _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< id< MTLBuffer > > _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< PatchArrayVector > _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< MTLBuffer > _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< MTLBuffer > 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 & 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< MTLBuffer > _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> |\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 "../version.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00872_source.html\">../osd/mesh.h</a>"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00809_source.html\">../osd/mtlPatchTable.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a01492_source.html\">../sdc/types.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00869_source.html\">../sdc/crease.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a01495_source.html\">../vtr/types.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00800_source.html\">../vtr/stackBuffer.h</a>"</code><br />\n+<code>#include <vector></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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </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>< <a class=\"el\" href=\"a01305.html\">MTLPatchTable</a> > </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"> 29</span><span class=\"preprocessor\">#include "../osd/mesh.h"</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"preprocessor\">#include "../osd/mtlPatchTable.h"</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 "../version.h"</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 "../sdc/types.h"</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"preprocessor\">#include "../sdc/crease.h"</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../vtr/types.h"</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"preprocessor\">#include "../vtr/stackBuffer.h"</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 <vector></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<MTLPatchTable></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< MTLPatchTable > 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. <typename FACE, VERTEX, etc.></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'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 <typename FACE>, 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 <typename FACE>:</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 <typename EDGE>, 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>& level) : _level(&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 <typename EDGE>:</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->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->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>&, <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->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 < eFaces.size(); ++i) {</div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"> 93</span> vertsPerFace[i] = _level->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 <typename VERTEX>, 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>& parent, Level <span class=\"keyword\">const</span>& child) : _parent(&parent), _child(&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->getVertexEdges(_pIndex).size();</div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"> 117</span> _fCount = _parent->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 <typename VERT>:</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->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->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 < _eCount; ++i) {</div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"> 128</span> pSharpness[i] = _parent->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>&)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _child->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>& 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<float,16> 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< Index > 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> |\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 "../version.h"</code><br />\n+<code>#include "<a class=\"el\" href=\"a01492_source.html\">../sdc/types.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00869_source.html\">../sdc/crease.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00860_source.html\">../sdc/options.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a01495_source.html\">../vtr/types.h</a>"</code><br />\n+<code>#include <algorithm></code><br />\n <code>#include <vector></code><br />\n-<code>#include "<a class=\"el\" href=\"a00773_source.html\">../far/patchDescriptor.h</a>"</code><br />\n-<code>#include "../osd/nonCopyable.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>"</code><br />\n+<code>#include <cassert></code><br />\n+<code>#include <cstring></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  </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 <vector></span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../far/patchDescriptor.h"</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"preprocessor\">#include "../osd/nonCopyable.h"</span></div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span><span class=\"preprocessor\">#include "../osd/types.h"</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 "../version.h"</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 "../sdc/types.h"</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"preprocessor\">#include "../sdc/crease.h"</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../sdc/options.h"</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"preprocessor\">#include "../vtr/types.h"</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 <algorithm></span></div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span><span class=\"preprocessor\">#include <vector></span></div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"> 36</span><span class=\"preprocessor\">#include <cassert></span></div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"> 37</span><span class=\"preprocessor\">#include <cstring></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<D3D11PatchTable> {</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><<span class=\"keyword\">typename</span> DEVICE_CONTEXT></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->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> &<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< PatchArray > 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 & 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 "complete" 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 "depth" 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 "incomplete" 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 "incident an irregular face" 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 "no full regular ring" 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>, &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(&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>, &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(&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 "span" 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 "origin" and a "size" 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 "unassigned" 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 > 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 "contained by" 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\">// "local index", 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 "local index" 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'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 & 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> & 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> & 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> & 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> & 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 & 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 & 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 & 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'd (the result then referred to as a "composite" 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 "composite" 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> & 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 "patch points" 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> & 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>& 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>& 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>& 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\">// "resize" 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 "trim" 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 "depth" 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 "max valence",</span></div>\n+<div class=\"line\"><a id=\"l00502\" name=\"l00502\"></a><span class=\"lineno\"> 502</span> <span class=\"comment\">// the "max edge faces" 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 "child" 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<Index> _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<Index> _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<Index> _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<FTag> _faceTags; <span class=\"comment\">// 1 per face: includes "hole" 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<Index> _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<Index> _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<Index> _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<LocalIndex> _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<float> _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<ETag> _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<Index> _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<Index> _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<LocalIndex> _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<Index> _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<Index> _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<LocalIndex> _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<float> _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<VTag> _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<FVarLevel*> _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>(&_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>(&_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 = &_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>(&_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>(&_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>(&_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>( (&_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>( (&_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>( (&_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>( (&_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 = &_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>( (&_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>( (&_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>( (&_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>( (&_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 = &_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>(&_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>(&_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>(&_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>(&_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>(&_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>(&_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 = &_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>&</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>&</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>*) &_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>0) {</div>\n+<div class=\"line\"><a id=\"l00825\" name=\"l00825\"></a><span class=\"lineno\"> 825</span> std::memset((<span class=\"keywordtype\">void</span>*) &_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>*) &_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't 'share'</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<</span><a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> *<span class=\"keyword\">></span>(&_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< LocalIndex > 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< LocalIndex > 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< Index > 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< Index > 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> |\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 "../version.h"</code><br />\n+<code>#include "<a class=\"el\" href=\"a01486_source.html\">../far/types.h</a>"</code><br />\n+<code>#include <cassert></code><br />\n+<code>#include <cstring></code><br />\n <code>#include <vector></code><br />\n-<code>#include "<a class=\"el\" href=\"a00773_source.html\">../far/patchDescriptor.h</a>"</code><br />\n-<code>#include "../osd/nonCopyable.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>"</code><br />\n+<code>#include <iostream></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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01173.html\">CpuPatchTable</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01053.html\">StencilReal< REAL ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01057.html\">Stencil</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01061.html\">StencilTableReal< REAL ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01065.html\">StencilTable</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01069.html\">LimitStencilReal< REAL ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01073.html\">LimitStencil</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01077.html\">LimitStencilTableReal< REAL ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01081.html\">LimitStencilTable</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n <tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 <vector></span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../far/patchDescriptor.h"</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"preprocessor\">#include "../osd/nonCopyable.h"</span></div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span><span class=\"preprocessor\">#include "../osd/types.h"</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 <vector></span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"preprocessor\">#include "../far/types.h"</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 <cassert></span></div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"> 33</span><span class=\"preprocessor\">#include <cstring></span></div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"> 34</span><span class=\"preprocessor\">#include <vector></span></div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"> 35</span><span class=\"preprocessor\">#include <iostream></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> <<span class=\"keyword\">typename</span> REAL> <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> <<span class=\"keyword\">typename</span> REAL> <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> <<span class=\"keyword\">typename</span> REAL></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> &<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> &<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> & 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> &<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> &<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> &<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> &<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> &<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> &<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<int> <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<int> <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< PatchArrayVector > <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< std::vector<int> > <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< PatchParamVector > <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< PatchParam > 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< PatchArray > 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< int > _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< PatchParamVector > _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< std::vector< int > > _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< int > _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< PatchArrayVector > _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><REAL>;</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><REAL>;</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><float> {</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<float></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> & 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> <<span class=\"keyword\">typename</span> REAL></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<int> <span class=\"keyword\">const</span>& offsets,</div>\n+<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\"> 145</span> std::vector<int> <span class=\"keyword\">const</span>& sizes,</div>\n+<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\"> 146</span> std::vector<int> <span class=\"keyword\">const</span>& sources,</div>\n+<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\"> 147</span> std::vector<REAL> <span class=\"keyword\">const</span>& 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<REAL></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<int> <span class=\"keyword\">const</span> & <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<Index> <span class=\"keyword\">const</span> & <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<Index> <span class=\"keyword\">const</span> & <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<REAL> <span class=\"keyword\">const</span> & <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<REAL></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> <<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U></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> &srcValues, U &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-><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> <<span class=\"keyword\">class</span> T1, <span class=\"keyword\">class</span> T2, <span class=\"keyword\">class</span> U></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> &srcBase, <span class=\"keywordtype\">int</span> numBase, T2 <span class=\"keyword\">const</span> &srcRef,</div>\n+<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\"> 211</span> U &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-><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> <<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U></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-><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> <<span class=\"keyword\">class</span> T1, <span class=\"keyword\">class</span> T2, <span class=\"keyword\">class</span> U></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-><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> <<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U></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> &srcValues, U &dstValues,</div>\n+<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\"> 234</span> std::vector<REAL> <span class=\"keyword\">const</span> & 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> <<span class=\"keyword\">class</span> T1, <span class=\"keyword\">class</span> T2, <span class=\"keyword\">class</span> U></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> &srcBase, <span class=\"keywordtype\">int</span> numBase, T2 <span class=\"keyword\">const</span> &srcRef, U &dstValues,</div>\n+<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\"> 237</span> std::vector<REAL> <span class=\"keyword\">const</span> & 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><REAL>;</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<int> <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<Index> <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<REAL> <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><float> {</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<float></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<int> <span class=\"keyword\">const</span>& offsets,</div>\n+<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\"> 290</span> std::vector<int> <span class=\"keyword\">const</span>& sizes,</div>\n+<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\"> 291</span> std::vector<int> <span class=\"keyword\">const</span>& sources,</div>\n+<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\"> 292</span> std::vector<float> <span class=\"keyword\">const</span>& 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> <<span class=\"keyword\">typename</span> REAL></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><REAL> {</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><REAL>(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-><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-><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-><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-><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><REAL>;</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><REAL>;</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><float> {</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<float></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> & 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> <<span class=\"keyword\">typename</span> REAL></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><REAL> {</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<int> <span class=\"keyword\">const</span>& offsets,</div>\n+<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\"> 414</span> std::vector<int> <span class=\"keyword\">const</span>& sizes,</div>\n+<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\"> 415</span> std::vector<int> <span class=\"keyword\">const</span>& sources,</div>\n+<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\"> 416</span> std::vector<REAL> <span class=\"keyword\">const</span>& weights,</div>\n+<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\"> 417</span> std::vector<REAL> <span class=\"keyword\">const</span>& duWeights,</div>\n+<div class=\"line\"><a id=\"l00418\" name=\"l00418\"></a><span class=\"lineno\"> 418</span> std::vector<REAL> <span class=\"keyword\">const</span>& dvWeights,</div>\n+<div class=\"line\"><a id=\"l00419\" name=\"l00419\"></a><span class=\"lineno\"> 419</span> std::vector<REAL> <span class=\"keyword\">const</span>& duuWeights,</div>\n+<div class=\"line\"><a id=\"l00420\" name=\"l00420\"></a><span class=\"lineno\"> 420</span> std::vector<REAL> <span class=\"keyword\">const</span>& duvWeights,</div>\n+<div class=\"line\"><a id=\"l00421\" name=\"l00421\"></a><span class=\"lineno\"> 421</span> std::vector<REAL> <span class=\"keyword\">const</span>& 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<REAL></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<REAL></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<REAL> <span class=\"keyword\">const</span> & <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<REAL> <span class=\"keyword\">const</span> & <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<REAL> <span class=\"keyword\">const</span> & <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<REAL> <span class=\"keyword\">const</span> & <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<REAL> <span class=\"keyword\">const</span> & <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> <<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U></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> & srcValues, U & uderivs, U & 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-><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-><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> <<span class=\"keyword\">class</span> T1, <span class=\"keyword\">class</span> T2, <span class=\"keyword\">class</span> U></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> & srcBase, <span class=\"keywordtype\">int</span> numBase, T2 <span class=\"keyword\">const</span> & srcRef,</div>\n+<div class=\"line\"><a id=\"l00485\" name=\"l00485\"></a><span class=\"lineno\"> 485</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=\"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-><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-><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> <<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U></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-><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-><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> <<span class=\"keyword\">class</span> T1, <span class=\"keyword\">class</span> T2, <span class=\"keyword\">class</span> U></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-><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-><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> <<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U></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> & srcValues,</div>\n+<div class=\"line\"><a id=\"l00529\" name=\"l00529\"></a><span class=\"lineno\"> 529</span> U & uuderivs, U & uvderivs, U & 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-><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-><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-><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> <<span class=\"keyword\">class</span> T1, <span class=\"keyword\">class</span> T2, <span class=\"keyword\">class</span> U></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> & srcBase, <span class=\"keywordtype\">int</span> numBase, T2 <span class=\"keyword\">const</span> & srcRef,</div>\n+<div class=\"line\"><a id=\"l00539\" name=\"l00539\"></a><span class=\"lineno\"> 539</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=\"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-><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-><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-><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> <<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U></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-><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-><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-><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> <<span class=\"keyword\">class</span> T1, <span class=\"keyword\">class</span> T2, <span class=\"keyword\">class</span> U></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-><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-><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-><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><REAL>;</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<REAL> _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><float> {</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<float></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<int> <span class=\"keyword\">const</span>& offsets,</div>\n+<div class=\"line\"><a id=\"l00598\" name=\"l00598\"></a><span class=\"lineno\"> 598</span> std::vector<int> <span class=\"keyword\">const</span>& sizes,</div>\n+<div class=\"line\"><a id=\"l00599\" name=\"l00599\"></a><span class=\"lineno\"> 599</span> std::vector<int> <span class=\"keyword\">const</span>& sources,</div>\n+<div class=\"line\"><a id=\"l00600\" name=\"l00600\"></a><span class=\"lineno\"> 600</span> std::vector<float> <span class=\"keyword\">const</span>& weights,</div>\n+<div class=\"line\"><a id=\"l00601\" name=\"l00601\"></a><span class=\"lineno\"> 601</span> std::vector<float> <span class=\"keyword\">const</span>& duWeights,</div>\n+<div class=\"line\"><a id=\"l00602\" name=\"l00602\"></a><span class=\"lineno\"> 602</span> std::vector<float> <span class=\"keyword\">const</span>& dvWeights,</div>\n+<div class=\"line\"><a id=\"l00603\" name=\"l00603\"></a><span class=\"lineno\"> 603</span> std::vector<float> <span class=\"keyword\">const</span>& duuWeights,</div>\n+<div class=\"line\"><a id=\"l00604\" name=\"l00604\"></a><span class=\"lineno\"> 604</span> std::vector<float> <span class=\"keyword\">const</span>& duvWeights,</div>\n+<div class=\"line\"><a id=\"l00605\" name=\"l00605\"></a><span class=\"lineno\"> 605</span> std::vector<float> <span class=\"keyword\">const</span>& 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> <<span class=\"keyword\">typename</span> REAL></div>\n+<div class=\"line\"><a id=\"l00617\" name=\"l00617\"></a><span class=\"lineno\"> 617</span><span class=\"keyword\">template</span> <<span class=\"keyword\">class</span> T1, <span class=\"keyword\">class</span> T2, <span class=\"keyword\">class</span> U> <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<REAL>::update</a>(T1 <span class=\"keyword\">const</span> &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> &srcRef, U &dstValues,</div>\n+<div class=\"line\"><a id=\"l00620\" name=\"l00620\"></a><span class=\"lineno\"> 620</span> std::vector<REAL> <span class=\"keyword\">const</span> &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 = &_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 = &_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 = &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 > 0) {</div>\n+<div class=\"line\"><a id=\"l00627\" name=\"l00627\"></a><span class=\"lineno\"> 627</span> assert(start < (<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 < 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 < 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 < *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 < 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> <<span class=\"keyword\">typename</span> REAL></div>\n+<div class=\"line\"><a id=\"l00649\" name=\"l00649\"></a><span class=\"lineno\"> 649</span><span class=\"keyword\">template</span> <<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U> <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<REAL>::update</a>(T <span class=\"keyword\">const</span> &srcValues, U &dstValues,</div>\n+<div class=\"line\"><a id=\"l00651\" name=\"l00651\"></a><span class=\"lineno\"> 651</span> std::vector<REAL> <span class=\"keyword\">const</span> &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 = &_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 = &_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 = &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 > 0) {</div>\n+<div class=\"line\"><a id=\"l00658\" name=\"l00658\"></a><span class=\"lineno\"> 658</span> assert(start < (<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 < 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 < 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 < *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> <<span class=\"keyword\">typename</span> REAL></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<REAL>::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<(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> <<span class=\"keyword\">typename</span> REAL></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<REAL>::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> <<span class=\"keyword\">typename</span> REAL></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<REAL>::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> <<span class=\"keyword\">typename</span> REAL></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<REAL>::shrinkToFit</a>() {</div>\n+<div class=\"line\"><a id=\"l00707\" name=\"l00707\"></a><span class=\"lineno\"> 707</span> std::vector<int>(_sizes).swap(_sizes);</div>\n+<div class=\"line\"><a id=\"l00708\" name=\"l00708\"></a><span class=\"lineno\"> 708</span> std::vector<Index>(_indices).swap(_indices);</div>\n+<div class=\"line\"><a id=\"l00709\" name=\"l00709\"></a><span class=\"lineno\"> 709</span> std::vector<REAL>(_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> <<span class=\"keyword\">typename</span> REAL></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<REAL>::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> <<span class=\"keyword\">typename</span> REAL></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<REAL></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<REAL>::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()) && i<(<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<REAL></a>(<span class=\"keyword\">const_cast<</span><span class=\"keywordtype\">int</span>*<span class=\"keyword\">></span>(&_sizes[i]),</div>\n+<div class=\"line\"><a id=\"l00728\" name=\"l00728\"></a><span class=\"lineno\"> 728</span> <span class=\"keyword\">const_cast<</span><a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a>*<span class=\"keyword\">></span>(&_indices[ofs]),</div>\n+<div class=\"line\"><a id=\"l00729\" name=\"l00729\"></a><span class=\"lineno\"> 729</span> <span class=\"keyword\">const_cast<</span>REAL*<span class=\"keyword\">></span>(&_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> <<span class=\"keyword\">typename</span> REAL></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<REAL></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<REAL>::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> <<span class=\"keyword\">typename</span> REAL></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<REAL>::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<REAL>::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> <<span class=\"keyword\">typename</span> REAL></div>\n+<div class=\"line\"><a id=\"l00748\" name=\"l00748\"></a><span class=\"lineno\"> 748</span><span class=\"keyword\">inline</span> LimitStencilReal<REAL></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<REAL>::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->GetOffsets().empty()) && i<(<span class=\"keywordtype\">int</span>)this->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->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() && !_dvWeights.empty() &&</div>\n+<div class=\"line\"><a id=\"l00755\" name=\"l00755\"></a><span class=\"lineno\"> 755</span> !_duuWeights.empty() && !_duvWeights.empty() && !_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<REAL></a>(</div>\n+<div class=\"line\"><a id=\"l00757\" name=\"l00757\"></a><span class=\"lineno\"> 757</span> <span class=\"keyword\">const_cast<</span><span class=\"keywordtype\">int</span> *<span class=\"keyword\">></span>(&this->GetSizes()[i]),</div>\n+<div class=\"line\"><a id=\"l00758\" name=\"l00758\"></a><span class=\"lineno\"> 758</span> <span class=\"keyword\">const_cast<</span><a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> *<span class=\"keyword\">></span>(&this->GetControlIndices()[ofs]),</div>\n+<div class=\"line\"><a id=\"l00759\" name=\"l00759\"></a><span class=\"lineno\"> 759</span> <span class=\"keyword\">const_cast<</span>REAL *<span class=\"keyword\">></span>(&this->GetWeights()[ofs]),</div>\n+<div class=\"line\"><a id=\"l00760\" name=\"l00760\"></a><span class=\"lineno\"> 760</span> <span class=\"keyword\">const_cast<</span>REAL *<span class=\"keyword\">></span>(&GetDuWeights()[ofs]),</div>\n+<div class=\"line\"><a id=\"l00761\" name=\"l00761\"></a><span class=\"lineno\"> 761</span> <span class=\"keyword\">const_cast<</span>REAL *<span class=\"keyword\">></span>(&GetDvWeights()[ofs]),</div>\n+<div class=\"line\"><a id=\"l00762\" name=\"l00762\"></a><span class=\"lineno\"> 762</span> <span class=\"keyword\">const_cast<</span>REAL *<span class=\"keyword\">></span>(&GetDuuWeights()[ofs]),</div>\n+<div class=\"line\"><a id=\"l00763\" name=\"l00763\"></a><span class=\"lineno\"> 763</span> <span class=\"keyword\">const_cast<</span>REAL *<span class=\"keyword\">></span>(&GetDuvWeights()[ofs]),</div>\n+<div class=\"line\"><a id=\"l00764\" name=\"l00764\"></a><span class=\"lineno\"> 764</span> <span class=\"keyword\">const_cast<</span>REAL *<span class=\"keyword\">></span>(&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() && !_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<REAL></a>(</div>\n+<div class=\"line\"><a id=\"l00767\" name=\"l00767\"></a><span class=\"lineno\"> 767</span> <span class=\"keyword\">const_cast<</span><span class=\"keywordtype\">int</span> *<span class=\"keyword\">></span>(&this->GetSizes()[i]),</div>\n+<div class=\"line\"><a id=\"l00768\" name=\"l00768\"></a><span class=\"lineno\"> 768</span> <span class=\"keyword\">const_cast<</span><a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> *<span class=\"keyword\">></span>(&this->GetControlIndices()[ofs]),</div>\n+<div class=\"line\"><a id=\"l00769\" name=\"l00769\"></a><span class=\"lineno\"> 769</span> <span class=\"keyword\">const_cast<</span>REAL *<span class=\"keyword\">></span>(&this->GetWeights()[ofs]),</div>\n+<div class=\"line\"><a id=\"l00770\" name=\"l00770\"></a><span class=\"lineno\"> 770</span> <span class=\"keyword\">const_cast<</span>REAL *<span class=\"keyword\">></span>(&GetDuWeights()[ofs]),</div>\n+<div class=\"line\"><a id=\"l00771\" name=\"l00771\"></a><span class=\"lineno\"> 771</span> <span class=\"keyword\">const_cast<</span>REAL *<span class=\"keyword\">></span>(&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<REAL></a>(</div>\n+<div class=\"line\"><a id=\"l00774\" name=\"l00774\"></a><span class=\"lineno\"> 774</span> <span class=\"keyword\">const_cast<</span><span class=\"keywordtype\">int</span> *<span class=\"keyword\">></span>(&this->GetSizes()[i]),</div>\n+<div class=\"line\"><a id=\"l00775\" name=\"l00775\"></a><span class=\"lineno\"> 775</span> <span class=\"keyword\">const_cast<</span><a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> *<span class=\"keyword\">></span>(&this->GetControlIndices()[ofs]),</div>\n+<div class=\"line\"><a id=\"l00776\" name=\"l00776\"></a><span class=\"lineno\"> 776</span> <span class=\"keyword\">const_cast<</span>REAL *<span class=\"keyword\">></span>(&this->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> <<span class=\"keyword\">typename</span> REAL></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<REAL></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<REAL>::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 &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 &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< float > 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< int > _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 &srcBase, int numBase, T2 const &srcRef, U &dstValues, std::vector< REAL > const &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 &srcBase, int numBase, T2 const &srcRef, U &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< Index > const & 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< REAL > 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 &srcValues, U &dstValues, std::vector< REAL > const &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< int > const & 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< Index > const & 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< REAL > 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< Index > _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< REAL > _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< REAL > const & 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< int > const &offsets, std::vector< int > const &sizes, std::vector< int > const &sources, std::vector< REAL > const &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< Index > _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 &srcValues, U &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< int > const &offsets, std::vector< int > const &sizes, std::vector< int > const &sources, std::vector< float > const &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< float > 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 &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< float > 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< REAL > const & 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< REAL > 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< REAL > const & 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< REAL > const & 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 &srcValues, U &uderivs, U &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< REAL > 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< int > const &offsets, std::vector< int > const &sizes, std::vector< int > const &sources, std::vector< REAL > const &weights, std::vector< REAL > const &duWeights, std::vector< REAL > const &dvWeights, std::vector< REAL > const &duuWeights, std::vector< REAL > const &duvWeights, std::vector< REAL > const &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 &srcValues, U &uuderivs, U &uvderivs, U &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< REAL > const & 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 &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#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< REAL > const & 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 &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#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< float > 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< int > const &offsets, std::vector< int > const &sizes, std::vector< int > const &sources, std::vector< float > const &weights, std::vector< float > const &duWeights, std::vector< float > const &dvWeights, std::vector< float > const &duuWeights, std::vector< float > const &duvWeights, std::vector< float > const &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> |\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 "../version.h"</code><br />\n-<code>#include <cstddef></code><br />\n-<code>#include "<a class=\"el\" href=\"a00842_source.html\">../osd/opengl.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00815_source.html\">../vtr/level.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00803_source.html\">../vtr/refinement.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a01486_source.html\">../far/types.h</a>"</code><br />\n+<code>#include <vector></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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01169.html\">CpuGLVertexBuffer</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01113.html\">TopologyLevel</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 <cstddef></span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../osd/opengl.h"</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 "../version.h"</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 "../vtr/level.h"</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"preprocessor\">#include "../vtr/refinement.h"</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"> 31</span><span class=\"preprocessor\">#include "../far/types.h"</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 <vector></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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->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->print((children && _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> |\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 "../version.h"</code><br />\n-<code>#include <cstddef></code><br />\n+<code>#include "<a class=\"el\" href=\"a00842_source.html\">../far/patchTable.h</a>"</code><br />\n+<code>#include <vector></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  </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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01045.html\">StencilTableFactoryReal< REAL ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01085.html\">StencilTableFactoryReal< REAL >::Options</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01049.html\">LimitStencilTableFactoryReal< REAL ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01089.html\">LimitStencilTableFactoryReal< REAL >::Options</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01093.html\">LimitStencilTableFactoryReal< REAL >::LocationArray</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01097.html\">StencilTableFactory</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01101.html\">LimitStencilTableFactory</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 <cstddef></span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"preprocessor\">#include "../far/patchTable.h"</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<MTLDevice> <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<MTLCommandQueue> <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 <vector></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> <<span class=\"keyword\">typename</span> REAL> <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> <<span class=\"keyword\">typename</span> REAL> <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> <<span class=\"keyword\">typename</span> REAL> <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> <<span class=\"keyword\">typename</span> REAL> <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> <<span class=\"keyword\">typename</span> REAL></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< MTLCommandQueue > 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< MTLDevice > 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<REAL></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> & 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<REAL></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<REAL></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<REAL></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> &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<REAL></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<REAL></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<REAL></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> &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<REAL></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<REAL></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<REAL></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> &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<REAL></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<REAL></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<REAL></a> & 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<REAL></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> &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<REAL></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<REAL></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> <<span class=\"keyword\">typename</span> REAL></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<LocationArray> <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<REAL></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> & 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> & 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<REAL></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><float> {</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<float></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<float></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> & 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<</span><a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">></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<</span><a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">></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<</span><a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a> <span class=\"keyword\">const </span>**<span class=\"keyword\">></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> &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<</span><a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">></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<</span><a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">></span>(baseStencilTable),</div>\n+<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\"> 317</span> <span class=\"keyword\">static_cast<</span><a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">></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> &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<</span><a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">></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<</span><a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">></span>(baseStencilTable),</div>\n+<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\"> 330</span> <span class=\"keyword\">static_cast<</span><a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">></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> &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<</span><a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">></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<</span><a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">></span>(baseStencilTable),</div>\n+<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\"> 344</span> <span class=\"keyword\">static_cast<</span><a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">></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><float> {</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<float></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<float></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> & 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> & 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<</span><a class=\"code hl_class\" href=\"a01081.html\">LimitStencilTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">></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<</span><a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">></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< REAL > const * Create(TopologyRefiner const &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< REAL > const * AppendLocalPointStencilTableFaceVarying(TopologyRefiner const &refiner, StencilTableReal< REAL > const *baseStencilTable, StencilTableReal< REAL > 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< REAL > const * AppendLocalPointStencilTableVarying(TopologyRefiner const &refiner, StencilTableReal< REAL > const *baseStencilTable, StencilTableReal< REAL > 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< REAL > const * AppendLocalPointStencilTable(TopologyRefiner const &refiner, StencilTableReal< REAL > const *baseStencilTable, StencilTableReal< REAL > 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< REAL > const * Create(int numTables, StencilTableReal< REAL > 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< LocationArray > 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< REAL > const * Create(TopologyRefiner const &refiner, LocationArrayVec const &locationArrays, StencilTableReal< REAL > 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 "_offsets" 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 &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 &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 &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 &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 &refiner, LocationArrayVec const &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> |\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 "../version.h"</code><br />\n-<code>#include "<a class=\"el\" href=\"a00773_source.html\">../far/patchDescriptor.h</a>"</code><br />\n-<code>#include <string></code><br />\n+<code>#include "<a class=\"el\" href=\"a00833_source.html\">../far/topologyRefiner.h</a>"</code><br />\n+<code>#include "<a class=\"el\" href=\"a00839_source.html\">../far/error.h</a>"</code><br />\n+<code>#include <cassert></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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01241.html\">GLSLPatchShaderSource</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01133.html\">TopologyRefinerFactoryBase</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01117.html\">TopologyRefinerFactory< MESH ></a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct  </td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01137.html\">TopologyRefinerFactory< MESH >::Options</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\"> </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\"> </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  </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\"> </td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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\"> </td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace  </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  </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\"> </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 "Apache License")</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 "AS IS" 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 "../version.h"</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 "../far/patchDescriptor.h"</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 "../version.h"</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 "../far/topologyRefiner.h"</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"> 30</span><span class=\"preprocessor\">#include "../far/error.h"</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 <string></span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"> 32</span><span class=\"preprocessor\">#include <cassert></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>& 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>& 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>& 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>& 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> <<span class=\"keyword\">class</span> MESH></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>& 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> & 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>& newRefiner, MESH <span class=\"keyword\">const</span>& 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>& newRefiner, MESH <span class=\"keyword\">const</span>& 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>& newRefiner, MESH <span class=\"keyword\">const</span>& 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>& newRefiner, MESH <span class=\"keyword\">const</span>& 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>& 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & 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> & newRefiner, <span class=\"keywordtype\">int</span> numValues, <a class=\"code hl_class\" href=\"a01337.html\">Sdc::Options</a> <span class=\"keyword\">const</span>& 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> & 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>& refiner, MESH <span class=\"keyword\">const</span>& 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> <<span class=\"keyword\">class</span> MESH></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<MESH>::Create</a>(MESH <span class=\"keyword\">const</span>& 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'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> <<span class=\"keyword\">class</span> MESH></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<MESH>::Create</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> & 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> <<span class=\"keyword\">class</span> MESH></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<MESH>::populateBaseLevel</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>& refiner, MESH <span class=\"keyword\">const</span>& 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<</span><a class=\"code hl_typedef\" href=\"a01133.html#a896a964625491e084b3d776acd10f053\">TopologyCallback</a><span class=\"keyword\">></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 = &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> <<span class=\"keyword\">class</span> MESH></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<MESH>::setNumBaseFaces</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> & 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]->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> <<span class=\"keyword\">class</span> MESH></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<MESH>::setNumBaseEdges</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> & 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]->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> <<span class=\"keyword\">class</span> MESH></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<MESH>::setNumBaseVertices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> & 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]->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> <<span class=\"keyword\">class</span> MESH></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<MESH>::getNumBaseFaces</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> & 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]->getNumFaces();</div>\n+<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\"> 438</span>}</div