--- /srv/reproducible-results/rbuild-debian/r-b-build.TX98DHkA/b1/opensubdiv_3.6.0-2_arm64.changes +++ /srv/reproducible-results/rbuild-debian/r-b-build.TX98DHkA/b2/opensubdiv_3.6.0-2_arm64.changes ├── Files │ @@ -1,9 +1,9 @@ │ │ a88868a5b48ceadefede5c46da7eed11 153112 libdevel optional libosd-dev_3.6.0-2_arm64.deb │ - 97c7acf269f42abfa5973406715ad6af 31492928 doc optional libosd-doc_3.6.0-2_all.deb │ + 712dc62ea16ae85ea9bb7c618ca07c1b 31492684 doc optional libosd-doc_3.6.0-2_all.deb │ c17741a18654df1c50283a894d9b0c98 3485616 debug optional libosdcpu3.6.0-dbgsym_3.6.0-2_arm64.deb │ 086963f660f44efe7f94e8bd01529257 303024 libs optional libosdcpu3.6.0_3.6.0-2_arm64.deb │ 2a008d0941cc6b30794fb844c666140e 546684 debug optional libosdgpu3.6.0-dbgsym_3.6.0-2_arm64.deb │ 63442d59c09d5546567788e220af5830 135392 libs optional libosdgpu3.6.0_3.6.0-2_arm64.deb │ b23d5a27d444e998e39a4ae16fab56cf 12170696 debug optional opensubdiv-tools-dbgsym_3.6.0-2_arm64.deb │ d89220edce42ff654004c9f75672038b 582124 graphics optional opensubdiv-tools_3.6.0-2_arm64.deb ├── libosd-doc_3.6.0-2_all.deb │ ├── file list │ │ @@ -1,3 +1,3 @@ │ │ -rw-r--r-- 0 0 0 4 2024-06-17 18:57:37.000000 debian-binary │ │ --rw-r--r-- 0 0 0 25464 2024-06-17 18:57:37.000000 control.tar.xz │ │ --rw-r--r-- 0 0 0 31467272 2024-06-17 18:57:37.000000 data.tar.xz │ │ +-rw-r--r-- 0 0 0 25408 2024-06-17 18:57:37.000000 control.tar.xz │ │ +-rw-r--r-- 0 0 0 31467084 2024-06-17 18:57:37.000000 data.tar.xz │ ├── control.tar.xz │ │ ├── control.tar │ │ │ ├── ./md5sums │ │ │ │ ├── ./md5sums │ │ │ │ │┄ Files differ │ ├── data.tar.xz │ │ ├── data.tar │ │ │ ├── file list │ │ │ │ @@ -27,29 +27,29 @@ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1660 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/css/doxy.css │ │ │ │ -rw-r--r-- 0 root (0) root (0) 27698 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/css/flavor.css │ │ │ │ -rw-r--r-- 0 root (0) root (0) 5321 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/css/pygments.css │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3011 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/css/renderman-university.css │ │ │ │ -rw-r--r-- 0 root (0) root (0) 12971 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/css/rst.css │ │ │ │ -rw-r--r-- 0 root (0) root (0) 14561 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/downloads.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/ │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6576 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00674.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 69 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00674.js │ │ │ │ --rw-r--r-- 0 root (0) root (0) 76687 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00674_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 7385 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00677.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 109 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00677.js │ │ │ │ --rw-r--r-- 0 root (0) root (0) 65516 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00677_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 7385 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00674.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 109 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00674.js │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 65516 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00674_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6576 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00677.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 69 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00677.js │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 76687 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00677_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 7311 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00680.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 195 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00680.js │ │ │ │ -rw-r--r-- 0 root (0) root (0) 27167 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00680_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6558 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00683.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 78 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00683.js │ │ │ │ --rw-r--r-- 0 root (0) root (0) 35228 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00683_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 7504 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00686.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 111 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00686.js │ │ │ │ --rw-r--r-- 0 root (0) root (0) 88831 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00686_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 7504 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00683.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 111 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00683.js │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 88831 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00683_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6558 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00686.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 78 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00686.js │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 35228 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00686_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 7075 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00689.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 120 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00689.js │ │ │ │ -rw-r--r-- 0 root (0) root (0) 75919 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00689_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 7765 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00692.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 150 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00692.js │ │ │ │ -rw-r--r-- 0 root (0) root (0) 40418 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00692_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 6436 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00695.html │ │ │ │ @@ -78,20 +78,20 @@ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 177059 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00719_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 6563 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00722.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 64 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00722.js │ │ │ │ -rw-r--r-- 0 root (0) root (0) 19420 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00722_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 8223 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00725.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 130 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00725.js │ │ │ │ -rw-r--r-- 0 root (0) root (0) 212261 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00725_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 7813 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00728.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 163 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00728.js │ │ │ │ --rw-r--r-- 0 root (0) root (0) 67819 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00728_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 7336 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00731.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 111 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00731.js │ │ │ │ --rw-r--r-- 0 root (0) root (0) 167871 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00731_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 7336 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00728.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 111 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00728.js │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 167871 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00728_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 7813 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00731.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 163 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00731.js │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 67819 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00731_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 6745 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00734.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 103 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00734.js │ │ │ │ -rw-r--r-- 0 root (0) root (0) 42247 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00734_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 8124 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00737.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 314 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00737.js │ │ │ │ -rw-r--r-- 0 root (0) root (0) 50494 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00737_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 7304 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00740.html │ │ │ │ @@ -106,56 +106,56 @@ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 22113 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00749_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 6082 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00752.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 85953 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00752_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 6289 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00755.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 24307 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00755_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 6202 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00758.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 163473 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00758_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6114 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00761.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 29126 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00761_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6267 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00764.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 81483 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00764_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6267 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00761.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 81483 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00761_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6114 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00764.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 29126 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00764_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 6437 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00767.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 121 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00767.js │ │ │ │ -rw-r--r-- 0 root (0) root (0) 46438 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00767_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 7580 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00770.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 130 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00770.js │ │ │ │ -rw-r--r-- 0 root (0) root (0) 135867 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00770_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 6298 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00773.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 60 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00773.js │ │ │ │ -rw-r--r-- 0 root (0) root (0) 38674 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00773_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 5827 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00776.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 100442 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00776_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 6474 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00779.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 59 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00779.js │ │ │ │ -rw-r--r-- 0 root (0) root (0) 53913 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00779_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5753 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00782.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 38297 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00782_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5836 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00785.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 89790 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00785_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5836 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00782.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 89790 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00782_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5753 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00785.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 38297 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00785_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 6807 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00788.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 67 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00788.js │ │ │ │ -rw-r--r-- 0 root (0) root (0) 33910 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00788_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 7125 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00791.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 115 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00791.js │ │ │ │ -rw-r--r-- 0 root (0) root (0) 128979 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00791_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 4478 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00794.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 10583 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00794_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 7174 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00797.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 115 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00797.js │ │ │ │ --rw-r--r-- 0 root (0) root (0) 252040 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00797_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6897 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00800.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 65 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00800.js │ │ │ │ --rw-r--r-- 0 root (0) root (0) 34223 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00800_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6425 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00803.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 67 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00803.js │ │ │ │ --rw-r--r-- 0 root (0) root (0) 23841 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00803_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6161 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00806.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 63 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00806.js │ │ │ │ --rw-r--r-- 0 root (0) root (0) 14083 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00806_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6897 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00797.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 65 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00797.js │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 34223 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00797_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6425 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00800.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 67 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00800.js │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 23841 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00800_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6161 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00803.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 63 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00803.js │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 14083 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00803_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 7174 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00806.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 115 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00806.js │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 252040 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00806_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 6499 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00809.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 69 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00809.js │ │ │ │ -rw-r--r-- 0 root (0) root (0) 21925 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00809_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 6580 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00812.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 99 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00812.js │ │ │ │ -rw-r--r-- 0 root (0) root (0) 12709 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00812_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 6818 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00815.html │ │ │ │ @@ -166,71 +166,71 @@ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 25442 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00818_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 7052 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00821.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 124 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00821.js │ │ │ │ -rw-r--r-- 0 root (0) root (0) 223874 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00821_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 6246 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00824.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 71 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00824.js │ │ │ │ -rw-r--r-- 0 root (0) root (0) 22526 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00824_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6592 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00827.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 101 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00827.js │ │ │ │ --rw-r--r-- 0 root (0) root (0) 12826 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00827_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6509 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00830.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 70 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00830.js │ │ │ │ --rw-r--r-- 0 root (0) root (0) 18296 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00830_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6509 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00827.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 70 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00827.js │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 18296 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00827_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6592 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00830.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 101 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00830.js │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 12826 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00830_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 6358 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00833.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 70 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00833.js │ │ │ │ -rw-r--r-- 0 root (0) root (0) 22933 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00833_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 6766 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00836.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 68 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00836.js │ │ │ │ -rw-r--r-- 0 root (0) root (0) 27921 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00836_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6357 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00839.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 81 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00839.js │ │ │ │ --rw-r--r-- 0 root (0) root (0) 26984 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00839_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 7017 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00842.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 128 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00842.js │ │ │ │ --rw-r--r-- 0 root (0) root (0) 49761 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00842_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 7225 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00845.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 126 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00845.js │ │ │ │ --rw-r--r-- 0 root (0) root (0) 224157 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00845_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6410 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00848.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 73 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00848.js │ │ │ │ --rw-r--r-- 0 root (0) root (0) 22723 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00848_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 7199 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00851.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 121 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00851.js │ │ │ │ --rw-r--r-- 0 root (0) root (0) 239108 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00851_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 7017 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00839.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 128 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00839.js │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 49761 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00839_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6357 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00842.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 81 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00842.js │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 26984 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00842_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6410 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00845.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 73 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00845.js │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 22723 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00845_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 7199 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00848.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 121 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00848.js │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 239108 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00848_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 7225 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00851.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 126 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00851.js │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 224157 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00851_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 6509 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00854.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 70 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00854.js │ │ │ │ -rw-r--r-- 0 root (0) root (0) 18618 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00854_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 6574 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00857.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 98 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00857.js │ │ │ │ -rw-r--r-- 0 root (0) root (0) 12790 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00857_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 6486 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00860.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 67 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00860.js │ │ │ │ -rw-r--r-- 0 root (0) root (0) 19962 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00860_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6745 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00863.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 65 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00863.js │ │ │ │ --rw-r--r-- 0 root (0) root (0) 47052 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00863_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6445 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00866.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 78 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00866.js │ │ │ │ --rw-r--r-- 0 root (0) root (0) 23459 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00866_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6445 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00863.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 78 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00863.js │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 23459 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00863_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6745 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00866.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 65 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00866.js │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 47052 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00866_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 6497 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00869.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 70 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00869.js │ │ │ │ -rw-r--r-- 0 root (0) root (0) 21040 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00869_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 11270 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00872.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 424 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00872.js │ │ │ │ --rw-r--r-- 0 root (0) root (0) 29216 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00872_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6381 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00875.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 61 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00875.js │ │ │ │ --rw-r--r-- 0 root (0) root (0) 111061 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00875_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6381 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00878.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 61 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00878.js │ │ │ │ --rw-r--r-- 0 root (0) root (0) 110976 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00878_source.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 8721 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00881.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 262 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00881.js │ │ │ │ --rw-r--r-- 0 root (0) root (0) 21259 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00881_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6381 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00872.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 61 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00872.js │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 111061 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00872_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 11270 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00875.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 424 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00875.js │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 29216 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00875_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 8721 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00878.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 262 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00878.js │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 21259 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00878_source.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6381 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00881.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 61 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00881.js │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 110976 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00881_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 4474 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00884.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 12883 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00884_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 14201 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00887.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2466 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00887.js │ │ │ │ -rw-r--r-- 0 root (0) root (0) 182425 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00887_source.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 6370 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00890.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 68 2024-06-17 18:57:37.000000 ./usr/share/doc/opensubdiv/doxy_html/a00890.js │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00674.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/bfr/vertexDescriptor.h File Reference │ │ │ │ +OpenSubdiv: opensubdiv/bfr/tessellation.h File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -90,26 +90,29 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
vertexDescriptor.h File Reference
│ │ │ │ +
tessellation.h File Reference
│ │ │ │
│ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ -#include "../vtr/stackBuffer.h"
│ │ │ │ +#include "../bfr/parameterization.h"
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  VertexDescriptor
 Simple class used by subclasses of SurfaceFactory to describe a vertex. More...
class  Tessellation
 Encapsulates a specific tessellation pattern of a Parameterization. More...
 
class  Tessellation::Options
 Options configure a Tessellation to specify the nature of both its results and the structure of the coordinate and facet index arrays that its methods will populate. More...
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -118,13 +121,13 @@ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  OpenSubdiv
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION
 
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,25 +1,30 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -vertexDescriptor.h File Reference │ │ │ │ │ +tessellation.h File Reference │ │ │ │ │ #include "../version.h" │ │ │ │ │ -#include "_._._/_v_t_r_/_s_t_a_c_k_B_u_f_f_e_r_._h" │ │ │ │ │ +#include "_._._/_b_f_r_/_p_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n_._h" │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -class   _V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ -  Simple class used by subclasses of _S_u_r_f_a_c_e_F_a_c_t_o_r_y to describe a vertex. │ │ │ │ │ +class   _T_e_s_s_e_l_l_a_t_i_o_n │ │ │ │ │ +  Encapsulates a specific tessellation pattern of a _P_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n. │ │ │ │ │ _M_o_r_e_._._. │ │ │ │ │   │ │ │ │ │ +class   _T_e_s_s_e_l_l_a_t_i_o_n_:_:_O_p_t_i_o_n_s │ │ │ │ │ + _O_p_t_i_o_n_s configure a _T_e_s_s_e_l_l_a_t_i_o_n to specify the nature of both its │ │ │ │ │ +  results and the structure of the coordinate and facet index arrays that │ │ │ │ │ + its methods will populate. _M_o_r_e_._._. │ │ │ │ │ +  │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r │ │ │ │ │   │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _b_f_r │ │ │ │ │ - * _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h │ │ │ │ │ + * _t_e_s_s_e_l_l_a_t_i_o_n_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00674.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -1,3 +1,4 @@ │ │ │ │ │ var a00674 = [ │ │ │ │ │ - ["VertexDescriptor", "a00969.html", "a00969"] │ │ │ │ │ + ["Tessellation", "a00961.html", "a00961"], │ │ │ │ │ + ["Options", "a00965.html", "a00965"] │ │ │ │ │ ]; │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00674_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/bfr/vertexDescriptor.h Source File │ │ │ │ +OpenSubdiv: opensubdiv/bfr/tessellation.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -92,15 +92,15 @@ │ │ │ │
No Matches
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
vertexDescriptor.h
│ │ │ │ +
tessellation.h
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1//
│ │ │ │
2// Copyright 2021 Pixar
│ │ │ │
3//
│ │ │ │
4// Licensed under the Apache License, Version 2.0 (the "Apache License")
│ │ │ │
5// with the following modification; you may not use this file except in
│ │ │ │ @@ -119,425 +119,281 @@ │ │ │ │
18// Unless required by applicable law or agreed to in writing, software
│ │ │ │
19// distributed under the Apache License with the above modification is
│ │ │ │
20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
│ │ │ │
21// KIND, either express or implied. See the Apache License for the specific
│ │ │ │
22// language governing permissions and limitations under the Apache License.
│ │ │ │
23//
│ │ │ │
24
│ │ │ │ -
25#ifndef OPENSUBDIV3_BFR_VERTEX_DESCRIPTOR_H
│ │ │ │ -
26#define OPENSUBDIV3_BFR_VERTEX_DESCRIPTOR_H
│ │ │ │ +
25#ifndef OPENSUBDIV3_BFR_TESSELLATION_H
│ │ │ │ +
26#define OPENSUBDIV3_BFR_TESSELLATION_H
│ │ │ │
27
│ │ │ │
28#include "../version.h"
│ │ │ │
29
│ │ │ │ -
30#include "../vtr/stackBuffer.h"
│ │ │ │ +
30#include "../bfr/parameterization.h"
│ │ │ │
31
│ │ │ │
32namespace OpenSubdiv {
│ │ │ │
33namespace OPENSUBDIV_VERSION {
│ │ │ │
34
│ │ │ │
35namespace Bfr {
│ │ │ │
36
│ │ │ │ -
50//
│ │ │ │ -
51// WIP - need to migrate some of these comments into Doxygen
│ │ │ │ -
52// - others will be moved to the external documentation
│ │ │ │ -
53//
│ │ │ │ -
54// It is used by subclasses of SurfaceFactory to provide a complete
│ │ │ │ -
55// topological description for each vertex of a face, i.e. invoked via
│ │ │ │ -
56// the virtual method:
│ │ │ │ -
57//
│ │ │ │ -
58// int populateFaceVertexDescriptor(Index baseFace,
│ │ │ │ -
59// int cornerVertex,
│ │ │ │ -
60// VertexDescriptor & v) const;
│ │ │ │ -
61//
│ │ │ │ -
62// Assignment of the full topology can be involved in the presence of
│ │ │ │ -
63// irregular faces, non-manifold topology or creasing around a vertex, but
│ │ │ │ -
64// many cases will be simple. For example, to specify a regular boundary
│ │ │ │ -
65// vertex of a Catmark mesh without any optional sharpness:
│ │ │ │ -
66//
│ │ │ │ -
67// int numIncidentFaces = 2;
│ │ │ │ -
68// bool vertexOnBoundary = true;
│ │ │ │ -
69//
│ │ │ │ -
70// vd.Initialize(numIncidentFaces);
│ │ │ │ -
71// vd.SetManifold(true);
│ │ │ │ -
72// vd.SetBoundary(vertexOnBoundary);
│ │ │ │ -
73// vd.ClearIncidentFaceSizes();
│ │ │ │ -
74// vd.Finalize();
│ │ │ │ -
75//
│ │ │ │ -
76// For a more general example, to assign a vertex of some valence whose
│ │ │ │ -
77// incident faces are of different sizes (e.g. required when triangles
│ │ │ │ -
78// appear around a vertex in an otherwise quad-dominant Catmark mesh):
│ │ │ │ -
79//
│ │ │ │ -
80// int numIncidentFaces = meshVertex.GetNumIncidentFaces();
│ │ │ │ -
81// bool vertexOnBoundary = meshVertex.IsBoundar();
│ │ │ │ -
82//
│ │ │ │ -
83// vd.Initialize(numIncidentFaces);
│ │ │ │ -
84// vd.SetManifold(true);
│ │ │ │ -
85// vd.SetBoundary(vertexOnBoundary);
│ │ │ │ -
86//
│ │ │ │ -
87// for (int i = 0; i < numIncidentFaces; ++i) {
│ │ │ │ -
88// vd.SetIncidentFaceSize(i, meshVertex.GetIncidentFaceSize(i));
│ │ │ │ -
89// }
│ │ │ │ -
90// vd.Finalize();
│ │ │ │ -
91//
│ │ │ │ -
92// These examples specify the incident faces as forming a manifold ring
│ │ │ │ -
93// (or half-ring) around the vertex, i.e. they can be specified as a
│ │ │ │ -
94// continuous, connected sequence in counter-clockwise order (and also
│ │ │ │ -
95// without degeneracies). In the case of a boundary vertex, the first
│ │ │ │ -
96// face must be on the leading edge of the boundary while the last is on
│ │ │ │ -
97// the trailing edge. For an interior vertex, which face is specified
│ │ │ │ -
98// first does not matter (since the set is periodic).
│ │ │ │ -
99//
│ │ │ │ -
100// In both cases, the location of the base face in this sequence -- the
│ │ │ │ -
101// face whose corner vertex is being described here -- must be specified
│ │ │ │ -
102// in the return value to populateFaceVertexDescriptor() (e.g. when a
│ │ │ │ -
103// boundary vertex has 3 incident faces, a return value of 0, 1 or 2
│ │ │ │ -
104// will indicate which is the base face).
│ │ │ │ -
105//
│ │ │ │ -
106// The corresponding methods to specify mesh control vertex indices (or
│ │ │ │ -
107// face-varying indices) complete the specification of the neighborhood:
│ │ │ │ -
108//
│ │ │ │ -
109// int getFaceCornerVertexIndices(Index baseFace, int cornerVertex,
│ │ │ │ -
110// Index vertexIndices[]) const;
│ │ │ │ -
111//
│ │ │ │ -
112// int getFaceCornerFVarValueIndices(Index baseFace, int cornerVertex,
│ │ │ │ -
113// Index fvarValueIndices[],
│ │ │ │ -
114// int fvarChannel) const;
│ │ │ │ -
115//
│ │ │ │ -
116// and are invoked by the Factory when needed.
│ │ │ │ -
117//
│ │ │ │ -
118// For each incident face, the indices for all vertices of that face are
│ │ │ │ -
119// to be specified (not the one-ring or some other subset). These indices
│ │ │ │ -
120// must also be specified in an orientation relative to the vertex, i.e.
│ │ │ │ -
121// for a vertex A and an incident face with face-vertices that may be
│ │ │ │ -
122// stored internally as {D, C, A, B}, they must be specified with A first
│ │ │ │ -
123// as {A, B, C, D}. This may seem a bit cumbersome, but it has clear
│ │ │ │ -
124// advantages when dealing with face-varying indices and unordered faces.
│ │ │ │ -
125//
│ │ │ │ -
126// More compact ways of specifying vertex indices for ordered, manifold
│ │ │ │ -
127// cases may be worth exploring in future, but face-varying indices and
│ │ │ │ -
128// non-manifold (unordered) vertices will always require such a full set,
│ │ │ │ -
129// so both methods will need to co-exist.
│ │ │ │ -
130//
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
132public:
│ │ │ │ -
133 // The full declaration must be enclosed by calls to these methods:
│ │ │ │ -
134 //
│ │ │ │ -
135 // Note that vertex valences or face sizes in excess of those defined
│ │ │ │ -
136 // in Bfr::Limits (typically 16-bits) are not valid. When specifying
│ │ │ │ -
137 // values in excess of these limits, initialization will fail and/or
│ │ │ │ -
138 // the descriptor will be marked invalid and finalization will fail.
│ │ │ │ -
139 //
│ │ │ │ -
140
│ │ │ │ -
142
│ │ │ │ -
149
│ │ │ │ -
151 bool Initialize(int numIncidentFaces);
│ │ │ │ -
152
│ │ │ │ -
154 bool Finalize();
│ │ │ │ -
155
│ │ │ │ -
157 bool IsValid() const;
│ │ │ │ -
159
│ │ │ │ -
160 //
│ │ │ │ -
161 // WIP - need to migrate these comments into Doxygen
│ │ │ │ -
162 //
│ │ │ │ -
163 // Three groups of methods describe the topology around a vertex:
│ │ │ │ -
164 // - simple properties (vertex is a boundary, manifold, etc.)
│ │ │ │ -
165 // - sizes of incident faces (constant or size for each face)
│ │ │ │ -
166 // - sharpness of the vertex and its incident edges (optional)
│ │ │ │ -
167 //
│ │ │ │ -
168
│ │ │ │ -
169 // Manifold and boundary conditions:
│ │ │ │ -
170 //
│ │ │ │ -
171 // The manifold property is a strict condition but preferred for
│ │ │ │ -
172 // efficiency and is usually available from common connected mesh
│ │ │ │ -
173 // representations. When declaring the topology as "manifold",
│ │ │ │ -
174 // the Factory assumes the following:
│ │ │ │ -
175 //
│ │ │ │ -
176 // - all incident faces are "ordered" (counter-clockwise)
│ │ │ │ -
177 // - all incident faces are consistently oriented
│ │ │ │ -
178 // - all incident edges are non-degenerate
│ │ │ │ -
179 //
│ │ │ │ -
180 // If not certain that all of these conditions are met, it is best
│ │ │ │ -
181 // to not declare manifold -- leaving the Factory to make sense of
│ │ │ │ -
182 // the set of incident faces from the face-vertex indices that are
│ │ │ │ -
183 // provided elsewhere.
│ │ │ │ -
184 //
│ │ │ │ -
185
│ │ │ │ -
187
│ │ │ │ -
191
│ │ │ │ -
193 void SetManifold(bool isManifold);
│ │ │ │ -
194
│ │ │ │ -
196 void SetBoundary(bool isOnBoundary);
│ │ │ │ -
197
│ │ │ │ -
199 void SetIncidentFaceSize(int faceIndex, int faceSize);
│ │ │ │ -
200
│ │ │ │ - │ │ │ │ +
│ │ │ │ + │ │ │ │ +
52public:
│ │ │ │ +
│ │ │ │ +
65 class Options {
│ │ │ │ +
66 public:
│ │ │ │ +
│ │ │ │ +
67 Options() : _preserveQuads(false), _facetSize4(false),
│ │ │ │ +
68 _coordStride(0), _facetStride(0) { }
│ │ │ │ +
│ │ │ │ +
69
│ │ │ │ +
72 Options & PreserveQuads(bool on);
│ │ │ │ +
74 bool PreserveQuads() const { return _preserveQuads; }
│ │ │ │ +
75
│ │ │ │ +
78 Options & SetFacetSize(int numIndices);
│ │ │ │ +
79 // @brief Return the number of indices per facet
│ │ │ │ +
80 int GetFacetSize() const { return 3 + (int)_facetSize4; }
│ │ │ │ +
81
│ │ │ │ +
83 Options & SetFacetStride(int stride);
│ │ │ │ +
85 int GetFacetStride() const { return _facetStride; }
│ │ │ │ +
86
│ │ │ │ +
88 Options & SetCoordStride(int stride);
│ │ │ │ +
90 int GetCoordStride() const { return _coordStride; }
│ │ │ │ +
91
│ │ │ │ +
92 private:
│ │ │ │ +
93 unsigned int _preserveQuads : 1;
│ │ │ │ +
94 unsigned int _facetSize4 : 1;
│ │ │ │ +
95
│ │ │ │ +
96 short _coordStride;
│ │ │ │ +
97 short _facetStride;
│ │ │ │ +
98 };
│ │ │ │ +
│ │ │ │ +
99
│ │ │ │ +
100public:
│ │ │ │ +
102
│ │ │ │ +
111
│ │ │ │ +
118 Tessellation(Parameterization const & p, int uniformRate,
│ │ │ │ +
119 Options const & options = Options());
│ │ │ │ +
120
│ │ │ │ +
158 Tessellation(Parameterization const & p, int numRates, int const rates[],
│ │ │ │ +
159 Options const & options = Options());
│ │ │ │ +
160
│ │ │ │ +
162 bool IsValid() const { return _isValid; }
│ │ │ │ +
163
│ │ │ │ +
165 Tessellation() = delete;
│ │ │ │ +
166
│ │ │ │ +
167 Tessellation(Tessellation const &) = delete;
│ │ │ │ + │ │ │ │ + │ │ │ │ +
171
│ │ │ │ +
173
│ │ │ │ +
177
│ │ │ │ +
179 Parameterization GetParameterization() const { return _param; }
│ │ │ │ +
180
│ │ │ │ +
182 int GetFaceSize() const { return _param.GetFaceSize(); }
│ │ │ │ +
183
│ │ │ │ +
185 int GetRates(int rates[]) const;
│ │ │ │ +
186
│ │ │ │ +
188 bool IsUniform() const { return _isUniform; }
│ │ │ │ +
190
│ │ │ │ +
192
│ │ │ │
203
│ │ │ │ -
205 void SetVertexSharpness(float sharpness);
│ │ │ │ +
205 int GetNumCoords() const { return _numInteriorPoints + _numBoundaryPoints; }
│ │ │ │
206
│ │ │ │ - │ │ │ │ +
208 int GetCoordStride() const { return _coordStride; }
│ │ │ │
209
│ │ │ │ -
221 void SetManifoldEdgeSharpness(int edgeIndex, float edgeSharpness);
│ │ │ │ -
222
│ │ │ │ -
238 void SetIncidentFaceEdgeSharpness(int faceIndex, float leadingEdgeSharp,
│ │ │ │ -
239 float trailingEdgeSharp);
│ │ │ │ -
240
│ │ │ │ -
242 void ClearEdgeSharpness();
│ │ │ │ -
244
│ │ │ │ -
246
│ │ │ │ -
251
│ │ │ │ -
253 bool IsManifold() const;
│ │ │ │ -
254
│ │ │ │ -
256 bool IsBoundary() const;
│ │ │ │ -
257
│ │ │ │ -
259 bool HasIncidentFaceSizes() const;
│ │ │ │ -
260
│ │ │ │ -
262 int GetIncidentFaceSize(int faceIndex) const;
│ │ │ │ -
263
│ │ │ │ -
265 bool HasVertexSharpness() const;
│ │ │ │ +
211 int GetNumBoundaryCoords() const { return _numBoundaryPoints; }
│ │ │ │ +
212
│ │ │ │ +
214 int GetNumInteriorCoords() const { return _numInteriorPoints; }
│ │ │ │ +
215
│ │ │ │ +
218 int GetNumEdgeCoords(int edge) const { return _outerRates[edge] - 1; }
│ │ │ │ +
219
│ │ │ │ +
221 template <typename REAL>
│ │ │ │ +
222 int GetCoords(REAL coordTuples[]) const;
│ │ │ │ +
223
│ │ │ │ +
225 template <typename REAL>
│ │ │ │ +
226 int GetBoundaryCoords(REAL coordTuples[]) const;
│ │ │ │ +
227
│ │ │ │ +
229 template <typename REAL>
│ │ │ │ +
230 int GetInteriorCoords(REAL coordTuples[]) const;
│ │ │ │ +
231
│ │ │ │ +
233 template <typename REAL>
│ │ │ │ +
234 int GetVertexCoord(int vertex, REAL coordTuples[]) const;
│ │ │ │ +
235
│ │ │ │ +
238 template <typename REAL>
│ │ │ │ +
239 int GetEdgeCoords(int edge, REAL coordTuples[]) const;
│ │ │ │ +
241
│ │ │ │ +
243
│ │ │ │ +
253
│ │ │ │ +
255 int GetNumFacets() const { return _numFacets; }
│ │ │ │ +
256
│ │ │ │ +
258 int GetFacetSize() const { return _facetSize; }
│ │ │ │ +
259
│ │ │ │ +
261 int GetFacetStride() const { return _facetStride; }
│ │ │ │ +
262
│ │ │ │ +
264 int GetFacets(int facetTuples[]) const;
│ │ │ │
266
│ │ │ │ -
268 float GetVertexSharpness() const;
│ │ │ │ -
269
│ │ │ │ -
271 bool HasEdgeSharpness() const;
│ │ │ │ -
272
│ │ │ │ -
274 float GetManifoldEdgeSharpness(int edgeIndex) const;
│ │ │ │ -
275
│ │ │ │ -
277 void GetIncidentFaceEdgeSharpness(int faceIndex,
│ │ │ │ -
278 float * leadingEdgeSharp, float * trailingEdgeSharp) const;
│ │ │ │ -
280
│ │ │ │ -
281protected:
│ │ │ │ -
283 friend class FaceVertex;
│ │ │ │ -
284
│ │ │ │ -
285 VertexDescriptor() { }
│ │ │ │ - │ │ │ │ -
287
│ │ │ │ -
288 typedef Vtr::internal::StackBuffer<int,8,true> IntBuffer;
│ │ │ │ -
289 typedef Vtr::internal::StackBuffer<float,16,true> FloatBuffer;
│ │ │ │ -
290
│ │ │ │ -
291 void initFaceSizes();
│ │ │ │ -
292 void initEdgeSharpness();
│ │ │ │ -
294
│ │ │ │ -
295protected:
│ │ │ │ -
297 // Member variables assigned through the above interface:
│ │ │ │ -
298 unsigned short _isValid : 1;
│ │ │ │ -
299 unsigned short _isInitialized : 1;
│ │ │ │ -
300 unsigned short _isFinalized : 1;
│ │ │ │ -
301
│ │ │ │ -
302 unsigned short _isManifold : 1;
│ │ │ │ -
303 unsigned short _isBoundary : 1;
│ │ │ │ -
304
│ │ │ │ -
305 unsigned short _hasFaceSizes : 1;
│ │ │ │ -
306 unsigned short _hasEdgeSharpness : 1;
│ │ │ │ -
307
│ │ │ │ -
308 short _numFaces;
│ │ │ │ -
309 float _vertSharpness;
│ │ │ │ -
310
│ │ │ │ -
311 FloatBuffer _faceEdgeSharpness;
│ │ │ │ -
312 IntBuffer _faceSizeOffsets;
│ │ │ │ -
314};
│ │ │ │ -
│ │ │ │ -
315
│ │ │ │ -
316//
│ │ │ │ -
317// Public inline methods for simple assignment:
│ │ │ │ -
318//
│ │ │ │ -
319inline bool
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
321 return _isValid;
│ │ │ │ -
322}
│ │ │ │ -
│ │ │ │ -
323
│ │ │ │ -
324inline void
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
326 _isManifold = isManifold;
│ │ │ │ -
327}
│ │ │ │ -
│ │ │ │ -
328inline bool
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
330 return _isManifold;
│ │ │ │ -
331}
│ │ │ │ -
│ │ │ │ -
332
│ │ │ │ -
333inline void
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
335 _isBoundary = isBoundary;
│ │ │ │ -
336}
│ │ │ │ -
│ │ │ │ -
337inline bool
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
339 return _isBoundary;
│ │ │ │ -
340}
│ │ │ │ -
│ │ │ │ -
341
│ │ │ │ -
342//
│ │ │ │ -
343// Public inline methods involving sizes of incident faces:
│ │ │ │ -
344//
│ │ │ │ -
345inline bool
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
347 return _hasFaceSizes;
│ │ │ │ -
348}
│ │ │ │ -
│ │ │ │ -
349inline void
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
351 _hasFaceSizes = false;
│ │ │ │ -
352}
│ │ │ │ -
│ │ │ │ -
353
│ │ │ │ -
354inline void
│ │ │ │ -
│ │ │ │ -
355VertexDescriptor::SetIncidentFaceSize(int incFaceIndex, int faceSize) {
│ │ │ │ -
356
│ │ │ │ -
357 if (!_hasFaceSizes) initFaceSizes();
│ │ │ │ -
358
│ │ │ │ -
359 _faceSizeOffsets[incFaceIndex] = faceSize;
│ │ │ │ -
360}
│ │ │ │ -
│ │ │ │ -
361inline int
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
363
│ │ │ │ -
364 return _isFinalized ?
│ │ │ │ -
365 (_faceSizeOffsets[incFaceIndex+1] - _faceSizeOffsets[incFaceIndex]) :
│ │ │ │ -
366 _faceSizeOffsets[incFaceIndex];
│ │ │ │ -
367}
│ │ │ │ -
│ │ │ │ -
368
│ │ │ │ -
369//
│ │ │ │ -
370// Public inline methods involving vertex sharpness:
│ │ │ │ -
371//
│ │ │ │ -
372inline bool
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
374 return _vertSharpness > 0.0f;
│ │ │ │ -
375}
│ │ │ │ -
│ │ │ │ -
376inline void
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
378 _vertSharpness = 0.0f;
│ │ │ │ -
379}
│ │ │ │ -
│ │ │ │ -
380
│ │ │ │ -
381inline void
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
383 _vertSharpness = vertSharpness;
│ │ │ │ -
384}
│ │ │ │ -
│ │ │ │ -
385inline float
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
387 return _vertSharpness;
│ │ │ │ -
388}
│ │ │ │ -
│ │ │ │ -
389
│ │ │ │ -
390//
│ │ │ │ -
391// Public inline methods involving vertex sharpness:
│ │ │ │ -
392//
│ │ │ │ -
393inline bool
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
395 return _hasEdgeSharpness;
│ │ │ │ -
396}
│ │ │ │ -
│ │ │ │ -
397inline void
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
399 _hasEdgeSharpness = false;
│ │ │ │ -
400}
│ │ │ │ -
│ │ │ │ -
401
│ │ │ │ -
402inline void
│ │ │ │ -
│ │ │ │ -
403VertexDescriptor::SetManifoldEdgeSharpness(int edgeIndex, float sharpness) {
│ │ │ │ -
404
│ │ │ │ -
405 if (!_hasEdgeSharpness) initEdgeSharpness();
│ │ │ │ -
406
│ │ │ │ -
407 // Assign the leading edge of the face after the edge (even index):
│ │ │ │ -
408 if (edgeIndex < _numFaces) {
│ │ │ │ -
409 _faceEdgeSharpness[2*edgeIndex] = sharpness;
│ │ │ │ -
410 }
│ │ │ │ -
411
│ │ │ │ -
412 // Assign the trailing edge of the face before the edge (odd index):
│ │ │ │ -
413 if (edgeIndex > 0) {
│ │ │ │ -
414 _faceEdgeSharpness[2*edgeIndex-1] = sharpness;
│ │ │ │ -
415 } else if (!IsBoundary()) {
│ │ │ │ -
416 _faceEdgeSharpness[2*_numFaces-1] = sharpness;
│ │ │ │ -
417 }
│ │ │ │ -
418}
│ │ │ │ -
│ │ │ │ -
419inline float
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
421
│ │ │ │ -
422 // All edges are first of the pair (even index) except last of boundary
│ │ │ │ -
423 return _faceEdgeSharpness[2*edgeIndex - (edgeIndex == _numFaces)];
│ │ │ │ -
424}
│ │ │ │ -
│ │ │ │ -
425
│ │ │ │ -
426inline void
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
428 float leadingEdgeSharpness, float trailingEdgeSharpness) {
│ │ │ │ -
429
│ │ │ │ -
430 if (!_hasEdgeSharpness) initEdgeSharpness();
│ │ │ │ -
431
│ │ │ │ -
432 _faceEdgeSharpness[2*faceIndex ] = leadingEdgeSharpness;
│ │ │ │ -
433 _faceEdgeSharpness[2*faceIndex+1] = trailingEdgeSharpness;
│ │ │ │ -
434}
│ │ │ │ -
│ │ │ │ -
435inline void
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
437 float * leadingEdgeSharpness, float * trailingEdgeSharpness) const {
│ │ │ │ -
438
│ │ │ │ -
439 *leadingEdgeSharpness = _faceEdgeSharpness[2*faceIndex];
│ │ │ │ -
440 *trailingEdgeSharpness = _faceEdgeSharpness[2*faceIndex+1];
│ │ │ │ -
441}
│ │ │ │ -
│ │ │ │ -
442
│ │ │ │ -
443} // end namespace Bfr
│ │ │ │ -
444
│ │ │ │ -
445} // end namespace OPENSUBDIV_VERSION
│ │ │ │ -
446using namespace OPENSUBDIV_VERSION;
│ │ │ │ -
447} // end namespace OpenSubdiv
│ │ │ │ -
448
│ │ │ │ -
449#endif /* OPENSUBDIV3_BFR_VERTEX_DESCRIPTOR_H */
│ │ │ │ +
268
│ │ │ │ +
283
│ │ │ │ +
285 void TransformFacetCoordIndices(int facetTuples[], int commonOffset);
│ │ │ │ +
286
│ │ │ │ +
289 void TransformFacetCoordIndices(int facetTuples[],
│ │ │ │ +
290 int const boundaryIndices[],
│ │ │ │ +
291 int interiorOffset);
│ │ │ │ +
292
│ │ │ │ +
294 void TransformFacetCoordIndices(int facetTuples[],
│ │ │ │ +
295 int const boundaryIndices[],
│ │ │ │ +
296 int const interiorIndices[]);
│ │ │ │ +
298
│ │ │ │ +
299private:
│ │ │ │ +
300 // Private initialization methods:
│ │ │ │ +
301 bool validateArguments(Parameterization const & p,
│ │ │ │ +
302 int nRates, int const rates[], Options const & options);
│ │ │ │ +
303
│ │ │ │ +
304 void initialize(Parameterization const & p,
│ │ │ │ +
305 int nRates, int const rates[], Options const & options);
│ │ │ │ +
306
│ │ │ │ +
307 void initializeDefaults();
│ │ │ │ +
308 int initializeRates(int nRates, int const rates[]);
│ │ │ │ +
309 void initializeInventoryForParamTri(int sumOfOuterRates);
│ │ │ │ +
310 void initializeInventoryForParamQuad(int sumOfOuterRates);
│ │ │ │ +
311 void initializeInventoryForParamQPoly(int sumOfOuterRates);
│ │ │ │ +
312
│ │ │ │ +
313private:
│ │ │ │ +
314 // Private members:
│ │ │ │ +
315 Parameterization _param;
│ │ │ │ +
316
│ │ │ │ +
317 unsigned short _isValid : 1;
│ │ │ │ +
318 unsigned short _isUniform : 1;
│ │ │ │ +
319 unsigned short _triangulate : 1;
│ │ │ │ +
320 unsigned short _singleFace : 1;
│ │ │ │ +
321 unsigned short _segmentedFace : 1;
│ │ │ │ +
322 unsigned short _triangleFan : 1;
│ │ │ │ +
323 unsigned short _splitQuad : 1;
│ │ │ │ +
324
│ │ │ │ +
325 short _facetSize;
│ │ │ │ +
326 int _facetStride;
│ │ │ │ +
327 int _coordStride;
│ │ │ │ +
328
│ │ │ │ +
329 int _numGivenRates;
│ │ │ │ +
330 int _numBoundaryPoints;
│ │ │ │ +
331 int _numInteriorPoints;
│ │ │ │ +
332 int _numFacets;
│ │ │ │ +
333
│ │ │ │ +
334 int _innerRates[2];
│ │ │ │ +
335 int* _outerRates;
│ │ │ │ +
336 int _outerRatesLocal[4];
│ │ │ │ +
337};
│ │ │ │ +
│ │ │ │ +
338
│ │ │ │ +
339//
│ │ │ │ +
340// Inline implementations:
│ │ │ │ +
341//
│ │ │ │ + │ │ │ │ +
│ │ │ │ + │ │ │ │ +
344 _preserveQuads = on;
│ │ │ │ +
345 return *this;
│ │ │ │ +
346}
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
│ │ │ │ + │ │ │ │ +
349 _facetSize4 = (numIndices == 4);
│ │ │ │ +
350 return *this;
│ │ │ │ +
351}
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
│ │ │ │ + │ │ │ │ +
354 _facetStride = (short) stride;
│ │ │ │ +
355 return *this;
│ │ │ │ +
356}
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
│ │ │ │ + │ │ │ │ +
359 _coordStride = (short) stride;
│ │ │ │ +
360 return *this;
│ │ │ │ +
361}
│ │ │ │ +
│ │ │ │ +
362
│ │ │ │ +
363template <typename REAL>
│ │ │ │ +
364inline int
│ │ │ │ +
│ │ │ │ +
365Tessellation::GetVertexCoord(int vertex, REAL coord[]) const {
│ │ │ │ +
366 _param.GetVertexCoord(vertex, coord);
│ │ │ │ +
367 return 1;
│ │ │ │ +
368}
│ │ │ │ +
│ │ │ │ +
369
│ │ │ │ +
370template <typename REAL>
│ │ │ │ +
371inline int
│ │ │ │ +
│ │ │ │ +
372Tessellation::GetCoords(REAL coordTuples[]) const {
│ │ │ │ +
373 int nCoords = GetBoundaryCoords(coordTuples);
│ │ │ │ +
374 nCoords += GetInteriorCoords(coordTuples + nCoords * _coordStride);
│ │ │ │ +
375 return nCoords;
│ │ │ │ +
376}
│ │ │ │ +
│ │ │ │ +
377
│ │ │ │ +
378} // end namespace Bfr
│ │ │ │ +
379
│ │ │ │ +
380} // end namespace OPENSUBDIV_VERSION
│ │ │ │ +
381using namespace OPENSUBDIV_VERSION;
│ │ │ │ +
382
│ │ │ │ +
383} // end namespace OpenSubdiv
│ │ │ │ +
384
│ │ │ │ +
385#endif /* OPENSUBDIV3_BFR_TESSELLATION */
│ │ │ │ │ │ │ │ -
Simple class used by subclasses of SurfaceFactory to describe a vertex.
│ │ │ │ -
float GetVertexSharpness() const
Return the sharpness of the vertex.
│ │ │ │ -
bool Finalize()
Terminate the sequence of specifications.
│ │ │ │ -
void SetManifold(bool isManifold)
Declare the vertex neighborhood as manifold (ordered)
│ │ │ │ -
bool Initialize(int numIncidentFaces)
Initialize specification with the number of incident faces.
│ │ │ │ -
bool IsManifold() const
Return if vertex neighborhood is manifold.
│ │ │ │ -
bool HasEdgeSharpness() const
Return if sharpness was assigned to the incident edges.
│ │ │ │ -
int GetIncidentFaceSize(int faceIndex) const
Return the size of an incident face.
│ │ │ │ -
float GetManifoldEdgeSharpness(int edgeIndex) const
Return the sharpness assigned to a manifold edge.
│ │ │ │ -
void SetIncidentFaceEdgeSharpness(int faceIndex, float leadingEdgeSharp, float trailingEdgeSharp)
Assign sharpness to the edges of an incident face.
│ │ │ │ -
bool HasVertexSharpness() const
Return if sharpness was assigned to the vertex.
│ │ │ │ -
void ClearIncidentFaceSizes()
Remove any assigned sizes of incident faces.
│ │ │ │ -
void SetVertexSharpness(float sharpness)
Assign sharpness to the vertex.
│ │ │ │ -
void ClearVertexSharpness()
Remove any sharpness assigned to the vertex.
│ │ │ │ -
void ClearEdgeSharpness()
Remove any sharpness assigned to the incident edges.
│ │ │ │ -
void GetIncidentFaceEdgeSharpness(int faceIndex, float *leadingEdgeSharp, float *trailingEdgeSharp) const
Return the sharpness assigned to edges of an incident face.
│ │ │ │ -
bool IsBoundary() const
Return if vertex neighborhood is on a boundary.
│ │ │ │ -
bool IsValid() const
Return if instance is valid.
│ │ │ │ -
bool HasIncidentFaceSizes() const
Return if the sizes of incident faces are assigned.
│ │ │ │ -
void SetBoundary(bool isOnBoundary)
Declare the vertex neighborhood as being on a boundary.
│ │ │ │ -
void SetIncidentFaceSize(int faceIndex, int faceSize)
Assign the size of an incident face.
│ │ │ │ -
void SetManifoldEdgeSharpness(int edgeIndex, float edgeSharpness)
Assign sharpness to the edge of a manifold neighborhood.
│ │ │ │ +
Simple class defining the 2D parameterization of a face.
│ │ │ │ +
int GetFaceSize() const
Returns the size (number of vertices) of the corresponding face.
│ │ │ │ +
void GetVertexCoord(int vertexIndex, REAL uvCoord[2]) const
Returns the (u,v) coordinate of a given vertex.
│ │ │ │ +
Encapsulates a specific tessellation pattern of a Parameterization.
│ │ │ │ +
int GetFaceSize() const
Return the size of the face.
│ │ │ │ +
int GetNumBoundaryCoords() const
Return the number of boundary coordinates.
│ │ │ │ + │ │ │ │ +
void TransformFacetCoordIndices(int facetTuples[], int const boundaryIndices[], int const interiorIndices[])
Reassign all facet coordinate indices.
│ │ │ │ +
int GetCoordStride() const
Return the number of elements between each coordinate.
│ │ │ │ +
int GetNumEdgeCoords(int edge) const
Return the number of coordinates within a given edge (excluding those at its end vertices)
│ │ │ │ +
int GetInteriorCoords(REAL coordTuples[]) const
Retrieve the coordinates for the boundary.
│ │ │ │ +
int GetFacetStride() const
Return the number of elements between each facet.
│ │ │ │ +
bool IsUniform() const
Return if the pattern is uniform.
│ │ │ │ +
int GetNumCoords() const
Return the number of coordinates in the entire pattern.
│ │ │ │ +
int GetCoords(REAL coordTuples[]) const
Retrieve the coordinates for the entire pattern.
│ │ │ │ +
void TransformFacetCoordIndices(int facetTuples[], int commonOffset)
Apply a common offset to all facet coordinate indices.
│ │ │ │ +
Tessellation(Parameterization const &p, int numRates, int const rates[], Options const &options=Options())
General constructor providing multiple tessellation rates for a non-uniform tessellation.
│ │ │ │ +
Parameterization GetParameterization() const
Return the Parameterization.
│ │ │ │ +
void TransformFacetCoordIndices(int facetTuples[], int const boundaryIndices[], int interiorOffset)
Reassign indices of boundary coordinates while offseting those of interior coordinates.
│ │ │ │ +
int GetFacetSize() const
Return the number of indices assigned to each facet.
│ │ │ │ +
Tessellation()=delete
Default construction is unavailable.
│ │ │ │ +
Tessellation(Parameterization const &p, int uniformRate, Options const &options=Options())
Simple constructor providing a single uniform tessellation rate.
│ │ │ │ +
int GetFacets(int facetTuples[]) const
Retrieve the facet indices for the entire pattern.
│ │ │ │ +
int GetNumFacets() const
Return the number of facets in the entire pattern.
│ │ │ │ +
int GetNumInteriorCoords() const
Return the number of interior coordinates.
│ │ │ │ +
int GetVertexCoord(int vertex, REAL coordTuples[]) const
Retrieve the coordinate for a given vertex of the face.
│ │ │ │ +
int GetBoundaryCoords(REAL coordTuples[]) const
Retrieve the coordinates for the boundary.
│ │ │ │ + │ │ │ │ +
int GetRates(int rates[]) const
Retrieve the rates assigned.
│ │ │ │ +
bool IsValid() const
Return true if correctly initialized.
│ │ │ │ +
Tessellation & operator=(Tessellation const &)=delete
│ │ │ │ +
int GetEdgeCoords(int edge, REAL coordTuples[]) const
Retrieve the coordinates for a given edge of the face (excluding those at its end vertices)
│ │ │ │ +
Options configure a Tessellation to specify the nature of both its results and the structure of the c...
│ │ │ │ + │ │ │ │ +
int GetCoordStride() const
Return the stride between (u,v) pairs.
│ │ │ │ +
Options & SetFacetSize(int numIndices)
Assign the number of indices per facet (must be 3 or 4, default is 3)
│ │ │ │ +
int GetFacetStride() const
Return the stride between facets.
│ │ │ │ + │ │ │ │ +
Options & SetCoordStride(int stride)
Assign the stride between (u,v) pairs (default is 2)
│ │ │ │ +
Options & SetFacetStride(int stride)
Assign the stride between facets (default is facet size)
│ │ │ │ +
bool PreserveQuads() const
Return if preservation of quads is set.
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,12 +1,12 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ -vertexDescriptor.h │ │ │ │ │ +tessellation.h │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// │ │ │ │ │ 2// Copyright 2021 Pixar │ │ │ │ │ 3// │ │ │ │ │ 4// Licensed under the Apache License, Version 2.0 (the "Apache License") │ │ │ │ │ 5// with the following modification; you may not use this file except in │ │ │ │ │ 6// compliance with the Apache License and the following modification to it: │ │ │ │ │ @@ -24,446 +24,367 @@ │ │ │ │ │ 18// Unless required by applicable law or agreed to in writing, software │ │ │ │ │ 19// distributed under the Apache License with the above modification is │ │ │ │ │ 20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY │ │ │ │ │ 21// KIND, either express or implied. See the Apache License for the specific │ │ │ │ │ 22// language governing permissions and limitations under the Apache License. │ │ │ │ │ 23// │ │ │ │ │ 24 │ │ │ │ │ -25#ifndef OPENSUBDIV3_BFR_VERTEX_DESCRIPTOR_H │ │ │ │ │ -26#define OPENSUBDIV3_BFR_VERTEX_DESCRIPTOR_H │ │ │ │ │ +25#ifndef OPENSUBDIV3_BFR_TESSELLATION_H │ │ │ │ │ +26#define OPENSUBDIV3_BFR_TESSELLATION_H │ │ │ │ │ 27 │ │ │ │ │ 28#include "../version.h" │ │ │ │ │ 29 │ │ │ │ │ -30#include "../vtr/stackBuffer.h" │ │ │ │ │ +30#include "../bfr/parameterization.h" │ │ │ │ │ 31 │ │ │ │ │ 32namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ 33namespace OPENSUBDIV_VERSION { │ │ │ │ │ 34 │ │ │ │ │ 35namespace Bfr { │ │ │ │ │ 36 │ │ │ │ │ -50// │ │ │ │ │ -51// WIP - need to migrate some of these comments into Doxygen │ │ │ │ │ -52// - others will be moved to the external documentation │ │ │ │ │ -53// │ │ │ │ │ -54// It is used by subclasses of SurfaceFactory to provide a complete │ │ │ │ │ -55// topological description for each vertex of a face, i.e. invoked via │ │ │ │ │ -56// the virtual method: │ │ │ │ │ -57// │ │ │ │ │ -58// int populateFaceVertexDescriptor(Index baseFace, │ │ │ │ │ -59// int cornerVertex, │ │ │ │ │ -60// VertexDescriptor & v) const; │ │ │ │ │ -61// │ │ │ │ │ -62// Assignment of the full topology can be involved in the presence of │ │ │ │ │ -63// irregular faces, non-manifold topology or creasing around a vertex, but │ │ │ │ │ -64// many cases will be simple. For example, to specify a regular boundary │ │ │ │ │ -65// vertex of a Catmark mesh without any optional sharpness: │ │ │ │ │ -66// │ │ │ │ │ -67// int numIncidentFaces = 2; │ │ │ │ │ -68// bool vertexOnBoundary = true; │ │ │ │ │ -69// │ │ │ │ │ -70// vd.Initialize(numIncidentFaces); │ │ │ │ │ -71// vd.SetManifold(true); │ │ │ │ │ -72// vd.SetBoundary(vertexOnBoundary); │ │ │ │ │ -73// vd.ClearIncidentFaceSizes(); │ │ │ │ │ -74// vd.Finalize(); │ │ │ │ │ -75// │ │ │ │ │ -76// For a more general example, to assign a vertex of some valence whose │ │ │ │ │ -77// incident faces are of different sizes (e.g. required when triangles │ │ │ │ │ -78// appear around a vertex in an otherwise quad-dominant Catmark mesh): │ │ │ │ │ -79// │ │ │ │ │ -80// int numIncidentFaces = meshVertex.GetNumIncidentFaces(); │ │ │ │ │ -81// bool vertexOnBoundary = meshVertex.IsBoundar(); │ │ │ │ │ -82// │ │ │ │ │ -83// vd.Initialize(numIncidentFaces); │ │ │ │ │ -84// vd.SetManifold(true); │ │ │ │ │ -85// vd.SetBoundary(vertexOnBoundary); │ │ │ │ │ -86// │ │ │ │ │ -87// for (int i = 0; i < numIncidentFaces; ++i) { │ │ │ │ │ -88// vd.SetIncidentFaceSize(i, meshVertex.GetIncidentFaceSize(i)); │ │ │ │ │ -89// } │ │ │ │ │ -90// vd.Finalize(); │ │ │ │ │ -91// │ │ │ │ │ -92// These examples specify the incident faces as forming a manifold ring │ │ │ │ │ -93// (or half-ring) around the vertex, i.e. they can be specified as a │ │ │ │ │ -94// continuous, connected sequence in counter-clockwise order (and also │ │ │ │ │ -95// without degeneracies). In the case of a boundary vertex, the first │ │ │ │ │ -96// face must be on the leading edge of the boundary while the last is on │ │ │ │ │ -97// the trailing edge. For an interior vertex, which face is specified │ │ │ │ │ -98// first does not matter (since the set is periodic). │ │ │ │ │ -99// │ │ │ │ │ -100// In both cases, the location of the base face in this sequence -- the │ │ │ │ │ -101// face whose corner vertex is being described here -- must be specified │ │ │ │ │ -102// in the return value to populateFaceVertexDescriptor() (e.g. when a │ │ │ │ │ -103// boundary vertex has 3 incident faces, a return value of 0, 1 or 2 │ │ │ │ │ -104// will indicate which is the base face). │ │ │ │ │ -105// │ │ │ │ │ -106// The corresponding methods to specify mesh control vertex indices (or │ │ │ │ │ -107// face-varying indices) complete the specification of the neighborhood: │ │ │ │ │ -108// │ │ │ │ │ -109// int getFaceCornerVertexIndices(Index baseFace, int cornerVertex, │ │ │ │ │ -110// Index vertexIndices[]) const; │ │ │ │ │ -111// │ │ │ │ │ -112// int getFaceCornerFVarValueIndices(Index baseFace, int cornerVertex, │ │ │ │ │ -113// Index fvarValueIndices[], │ │ │ │ │ -114// int fvarChannel) const; │ │ │ │ │ -115// │ │ │ │ │ -116// and are invoked by the Factory when needed. │ │ │ │ │ -117// │ │ │ │ │ -118// For each incident face, the indices for all vertices of that face are │ │ │ │ │ -119// to be specified (not the one-ring or some other subset). These indices │ │ │ │ │ -120// must also be specified in an orientation relative to the vertex, i.e. │ │ │ │ │ -121// for a vertex A and an incident face with face-vertices that may be │ │ │ │ │ -122// stored internally as {D, C, A, B}, they must be specified with A first │ │ │ │ │ -123// as {A, B, C, D}. This may seem a bit cumbersome, but it has clear │ │ │ │ │ -124// advantages when dealing with face-varying indices and unordered faces. │ │ │ │ │ -125// │ │ │ │ │ -126// More compact ways of specifying vertex indices for ordered, manifold │ │ │ │ │ -127// cases may be worth exploring in future, but face-varying indices and │ │ │ │ │ -128// non-manifold (unordered) vertices will always require such a full set, │ │ │ │ │ -129// so both methods will need to co-exist. │ │ │ │ │ -130// │ │ │ │ │ -_1_3_1class _V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r { │ │ │ │ │ -132public: │ │ │ │ │ -133 // The full declaration must be enclosed by calls to these methods: │ │ │ │ │ -134 // │ │ │ │ │ -135 // Note that vertex valences or face sizes in excess of those defined │ │ │ │ │ -136 // in Bfr::Limits (typically 16-bits) are not valid. When specifying │ │ │ │ │ -137 // values in excess of these limits, initialization will fail and/or │ │ │ │ │ -138 // the descriptor will be marked invalid and finalization will fail. │ │ │ │ │ -139 // │ │ │ │ │ -140 │ │ │ │ │ -142 │ │ │ │ │ -149 │ │ │ │ │ -_1_5_1 bool _I_n_i_t_i_a_l_i_z_e(int numIncidentFaces); │ │ │ │ │ -152 │ │ │ │ │ -_1_5_4 bool _F_i_n_a_l_i_z_e(); │ │ │ │ │ -155 │ │ │ │ │ -157 bool _I_s_V_a_l_i_d() const; │ │ │ │ │ -159 │ │ │ │ │ -160 // │ │ │ │ │ -161 // WIP - need to migrate these comments into Doxygen │ │ │ │ │ -162 // │ │ │ │ │ -163 // Three groups of methods describe the topology around a vertex: │ │ │ │ │ -164 // - simple properties (vertex is a boundary, manifold, etc.) │ │ │ │ │ -165 // - sizes of incident faces (constant or size for each face) │ │ │ │ │ -166 // - sharpness of the vertex and its incident edges (optional) │ │ │ │ │ -167 // │ │ │ │ │ -168 │ │ │ │ │ -169 // Manifold and boundary conditions: │ │ │ │ │ -170 // │ │ │ │ │ -171 // The manifold property is a strict condition but preferred for │ │ │ │ │ -172 // efficiency and is usually available from common connected mesh │ │ │ │ │ -173 // representations. When declaring the topology as "manifold", │ │ │ │ │ -174 // the Factory assumes the following: │ │ │ │ │ -175 // │ │ │ │ │ -176 // - all incident faces are "ordered" (counter-clockwise) │ │ │ │ │ -177 // - all incident faces are consistently oriented │ │ │ │ │ -178 // - all incident edges are non-degenerate │ │ │ │ │ -179 // │ │ │ │ │ -180 // If not certain that all of these conditions are met, it is best │ │ │ │ │ -181 // to not declare manifold -- leaving the Factory to make sense of │ │ │ │ │ -182 // the set of incident faces from the face-vertex indices that are │ │ │ │ │ -183 // provided elsewhere. │ │ │ │ │ -184 // │ │ │ │ │ -185 │ │ │ │ │ -187 │ │ │ │ │ -191 │ │ │ │ │ -193 void _S_e_t_M_a_n_i_f_o_l_d(bool isManifold); │ │ │ │ │ -194 │ │ │ │ │ -196 void _S_e_t_B_o_u_n_d_a_r_y(bool isOnBoundary); │ │ │ │ │ -197 │ │ │ │ │ -199 void _S_e_t_I_n_c_i_d_e_n_t_F_a_c_e_S_i_z_e(int faceIndex, int faceSize); │ │ │ │ │ -200 │ │ │ │ │ -202 void _C_l_e_a_r_I_n_c_i_d_e_n_t_F_a_c_e_S_i_z_e_s(); │ │ │ │ │ +_5_1class _T_e_s_s_e_l_l_a_t_i_o_n { │ │ │ │ │ +52public: │ │ │ │ │ +_6_5 class _O_p_t_i_o_n_s { │ │ │ │ │ +66 public: │ │ │ │ │ +_6_7 _O_p_t_i_o_n_s() : _preserveQuads(false), _facetSize4(false), │ │ │ │ │ +68 _coordStride(0), _facetStride(0) { } │ │ │ │ │ +69 │ │ │ │ │ +72 _O_p_t_i_o_n_s & _P_r_e_s_e_r_v_e_Q_u_a_d_s(bool on); │ │ │ │ │ +_7_4 bool _P_r_e_s_e_r_v_e_Q_u_a_d_s() const { return _preserveQuads; } │ │ │ │ │ +75 │ │ │ │ │ +78 _O_p_t_i_o_n_s & _S_e_t_F_a_c_e_t_S_i_z_e(int numIndices); │ │ │ │ │ +79 // @brief Return the number of indices per facet │ │ │ │ │ +_8_0 int _G_e_t_F_a_c_e_t_S_i_z_e() const { return 3 + (int)_facetSize4; } │ │ │ │ │ +81 │ │ │ │ │ +83 _O_p_t_i_o_n_s & _S_e_t_F_a_c_e_t_S_t_r_i_d_e(int stride); │ │ │ │ │ +_8_5 int _G_e_t_F_a_c_e_t_S_t_r_i_d_e() const { return _facetStride; } │ │ │ │ │ +86 │ │ │ │ │ +88 _O_p_t_i_o_n_s & _S_e_t_C_o_o_r_d_S_t_r_i_d_e(int stride); │ │ │ │ │ +_9_0 int _G_e_t_C_o_o_r_d_S_t_r_i_d_e() const { return _coordStride; } │ │ │ │ │ +91 │ │ │ │ │ +92 private: │ │ │ │ │ +93 unsigned int _preserveQuads : 1; │ │ │ │ │ +94 unsigned int _facetSize4 : 1; │ │ │ │ │ +95 │ │ │ │ │ +96 short _coordStride; │ │ │ │ │ +97 short _facetStride; │ │ │ │ │ +98 }; │ │ │ │ │ +99 │ │ │ │ │ +100public: │ │ │ │ │ +102 │ │ │ │ │ +111 │ │ │ │ │ +_1_1_8 _T_e_s_s_e_l_l_a_t_i_o_n(_P_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n const & p, int uniformRate, │ │ │ │ │ +119 _O_p_t_i_o_n_s const & options = _O_p_t_i_o_n_s()); │ │ │ │ │ +120 │ │ │ │ │ +_1_5_8 _T_e_s_s_e_l_l_a_t_i_o_n(_P_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n const & p, int numRates, int const rates[], │ │ │ │ │ +159 _O_p_t_i_o_n_s const & options = _O_p_t_i_o_n_s()); │ │ │ │ │ +160 │ │ │ │ │ +_1_6_2 bool _I_s_V_a_l_i_d() const { return _isValid; } │ │ │ │ │ +163 │ │ │ │ │ +_1_6_5 _T_e_s_s_e_l_l_a_t_i_o_n() = delete; │ │ │ │ │ +166 │ │ │ │ │ +_1_6_7 _T_e_s_s_e_l_l_a_t_i_o_n(_T_e_s_s_e_l_l_a_t_i_o_n const &) = delete; │ │ │ │ │ +_1_6_8 _T_e_s_s_e_l_l_a_t_i_o_n & _o_p_e_r_a_t_o_r_=(_T_e_s_s_e_l_l_a_t_i_o_n const &) = delete; │ │ │ │ │ +_1_6_9 _~_T_e_s_s_e_l_l_a_t_i_o_n(); │ │ │ │ │ +171 │ │ │ │ │ +173 │ │ │ │ │ +177 │ │ │ │ │ +_1_7_9 _P_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n _G_e_t_P_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n() const { return _param; } │ │ │ │ │ +180 │ │ │ │ │ +_1_8_2 int _G_e_t_F_a_c_e_S_i_z_e() const { return _param._G_e_t_F_a_c_e_S_i_z_e(); } │ │ │ │ │ +183 │ │ │ │ │ +_1_8_5 int _G_e_t_R_a_t_e_s(int rates[]) const; │ │ │ │ │ +186 │ │ │ │ │ +_1_8_8 bool _I_s_U_n_i_f_o_r_m() const { return _isUniform; } │ │ │ │ │ +190 │ │ │ │ │ +192 │ │ │ │ │ 203 │ │ │ │ │ -205 void _S_e_t_V_e_r_t_e_x_S_h_a_r_p_n_e_s_s(float sharpness); │ │ │ │ │ +_2_0_5 int _G_e_t_N_u_m_C_o_o_r_d_s() const { return _numInteriorPoints + _numBoundaryPoints; │ │ │ │ │ +} │ │ │ │ │ 206 │ │ │ │ │ -208 void _C_l_e_a_r_V_e_r_t_e_x_S_h_a_r_p_n_e_s_s(); │ │ │ │ │ +_2_0_8 int _G_e_t_C_o_o_r_d_S_t_r_i_d_e() const { return _coordStride; } │ │ │ │ │ 209 │ │ │ │ │ -221 void _S_e_t_M_a_n_i_f_o_l_d_E_d_g_e_S_h_a_r_p_n_e_s_s(int edgeIndex, float edgeSharpness); │ │ │ │ │ -222 │ │ │ │ │ -238 void _S_e_t_I_n_c_i_d_e_n_t_F_a_c_e_E_d_g_e_S_h_a_r_p_n_e_s_s(int faceIndex, float leadingEdgeSharp, │ │ │ │ │ -239 float trailingEdgeSharp); │ │ │ │ │ -240 │ │ │ │ │ -242 void _C_l_e_a_r_E_d_g_e_S_h_a_r_p_n_e_s_s(); │ │ │ │ │ -244 │ │ │ │ │ -246 │ │ │ │ │ -251 │ │ │ │ │ -253 bool _I_s_M_a_n_i_f_o_l_d() const; │ │ │ │ │ -254 │ │ │ │ │ -256 bool _I_s_B_o_u_n_d_a_r_y() const; │ │ │ │ │ -257 │ │ │ │ │ -259 bool _H_a_s_I_n_c_i_d_e_n_t_F_a_c_e_S_i_z_e_s() const; │ │ │ │ │ -260 │ │ │ │ │ -262 int _G_e_t_I_n_c_i_d_e_n_t_F_a_c_e_S_i_z_e(int faceIndex) const; │ │ │ │ │ -263 │ │ │ │ │ -265 bool _H_a_s_V_e_r_t_e_x_S_h_a_r_p_n_e_s_s() const; │ │ │ │ │ +_2_1_1 int _G_e_t_N_u_m_B_o_u_n_d_a_r_y_C_o_o_r_d_s() const { return _numBoundaryPoints; } │ │ │ │ │ +212 │ │ │ │ │ +_2_1_4 int _G_e_t_N_u_m_I_n_t_e_r_i_o_r_C_o_o_r_d_s() const { return _numInteriorPoints; } │ │ │ │ │ +215 │ │ │ │ │ +_2_1_8 int _G_e_t_N_u_m_E_d_g_e_C_o_o_r_d_s(int edge) const { return _outerRates[edge] - 1; } │ │ │ │ │ +219 │ │ │ │ │ +221 template │ │ │ │ │ +222 int _G_e_t_C_o_o_r_d_s(REAL coordTuples[]) const; │ │ │ │ │ +223 │ │ │ │ │ +225 template │ │ │ │ │ +_2_2_6 int _G_e_t_B_o_u_n_d_a_r_y_C_o_o_r_d_s(REAL coordTuples[]) const; │ │ │ │ │ +227 │ │ │ │ │ +229 template │ │ │ │ │ +_2_3_0 int _G_e_t_I_n_t_e_r_i_o_r_C_o_o_r_d_s(REAL coordTuples[]) const; │ │ │ │ │ +231 │ │ │ │ │ +233 template │ │ │ │ │ +234 int _G_e_t_V_e_r_t_e_x_C_o_o_r_d(int vertex, REAL coordTuples[]) const; │ │ │ │ │ +235 │ │ │ │ │ +238 template │ │ │ │ │ +_2_3_9 int _G_e_t_E_d_g_e_C_o_o_r_d_s(int edge, REAL coordTuples[]) const; │ │ │ │ │ +241 │ │ │ │ │ +243 │ │ │ │ │ +253 │ │ │ │ │ +_2_5_5 int _G_e_t_N_u_m_F_a_c_e_t_s() const { return _numFacets; } │ │ │ │ │ +256 │ │ │ │ │ +_2_5_8 int _G_e_t_F_a_c_e_t_S_i_z_e() const { return _facetSize; } │ │ │ │ │ +259 │ │ │ │ │ +_2_6_1 int _G_e_t_F_a_c_e_t_S_t_r_i_d_e() const { return _facetStride; } │ │ │ │ │ +262 │ │ │ │ │ +_2_6_4 int _G_e_t_F_a_c_e_t_s(int facetTuples[]) const; │ │ │ │ │ 266 │ │ │ │ │ -268 float _G_e_t_V_e_r_t_e_x_S_h_a_r_p_n_e_s_s() const; │ │ │ │ │ -269 │ │ │ │ │ -271 bool _H_a_s_E_d_g_e_S_h_a_r_p_n_e_s_s() const; │ │ │ │ │ -272 │ │ │ │ │ -274 float _G_e_t_M_a_n_i_f_o_l_d_E_d_g_e_S_h_a_r_p_n_e_s_s(int edgeIndex) const; │ │ │ │ │ -275 │ │ │ │ │ -277 void _G_e_t_I_n_c_i_d_e_n_t_F_a_c_e_E_d_g_e_S_h_a_r_p_n_e_s_s(int faceIndex, │ │ │ │ │ -278 float * leadingEdgeSharp, float * trailingEdgeSharp) const; │ │ │ │ │ -280 │ │ │ │ │ -281protected: │ │ │ │ │ -283 friend class FaceVertex; │ │ │ │ │ -284 │ │ │ │ │ -285 _V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r() { } │ │ │ │ │ -286 _~_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r() { } │ │ │ │ │ -287 │ │ │ │ │ -288 typedef Vtr::internal::StackBuffer IntBuffer; │ │ │ │ │ -289 typedef Vtr::internal::StackBuffer FloatBuffer; │ │ │ │ │ -290 │ │ │ │ │ -291 void initFaceSizes(); │ │ │ │ │ -292 void initEdgeSharpness(); │ │ │ │ │ -294 │ │ │ │ │ -295protected: │ │ │ │ │ -297 // Member variables assigned through the above interface: │ │ │ │ │ -298 unsigned short _isValid : 1; │ │ │ │ │ -299 unsigned short _isInitialized : 1; │ │ │ │ │ -300 unsigned short _isFinalized : 1; │ │ │ │ │ -301 │ │ │ │ │ -302 unsigned short _isManifold : 1; │ │ │ │ │ -303 unsigned short _isBoundary : 1; │ │ │ │ │ -304 │ │ │ │ │ -305 unsigned short _hasFaceSizes : 1; │ │ │ │ │ -306 unsigned short _hasEdgeSharpness : 1; │ │ │ │ │ -307 │ │ │ │ │ -308 short _numFaces; │ │ │ │ │ -309 float _vertSharpness; │ │ │ │ │ -310 │ │ │ │ │ -311 FloatBuffer _faceEdgeSharpness; │ │ │ │ │ -312 IntBuffer _faceSizeOffsets; │ │ │ │ │ -314}; │ │ │ │ │ -315 │ │ │ │ │ -316// │ │ │ │ │ -317// Public inline methods for simple assignment: │ │ │ │ │ -318// │ │ │ │ │ -319inline bool │ │ │ │ │ -_3_2_0_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_I_s_V_a_l_i_d() const { │ │ │ │ │ -321 return _isValid; │ │ │ │ │ -322} │ │ │ │ │ -323 │ │ │ │ │ -324inline void │ │ │ │ │ -_3_2_5_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_S_e_t_M_a_n_i_f_o_l_d(bool isManifold) { │ │ │ │ │ -326 _isManifold = isManifold; │ │ │ │ │ -327} │ │ │ │ │ -328inline bool │ │ │ │ │ -_3_2_9_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_I_s_M_a_n_i_f_o_l_d() const { │ │ │ │ │ -330 return _isManifold; │ │ │ │ │ -331} │ │ │ │ │ -332 │ │ │ │ │ -333inline void │ │ │ │ │ -_3_3_4_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_S_e_t_B_o_u_n_d_a_r_y(bool isBoundary) { │ │ │ │ │ -335 _isBoundary = isBoundary; │ │ │ │ │ -336} │ │ │ │ │ -337inline bool │ │ │ │ │ -_3_3_8_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_I_s_B_o_u_n_d_a_r_y() const { │ │ │ │ │ -339 return _isBoundary; │ │ │ │ │ -340} │ │ │ │ │ -341 │ │ │ │ │ -342// │ │ │ │ │ -343// Public inline methods involving sizes of incident faces: │ │ │ │ │ -344// │ │ │ │ │ -345inline bool │ │ │ │ │ -_3_4_6_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_H_a_s_I_n_c_i_d_e_n_t_F_a_c_e_S_i_z_e_s() const { │ │ │ │ │ -347 return _hasFaceSizes; │ │ │ │ │ -348} │ │ │ │ │ -349inline void │ │ │ │ │ -_3_5_0_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_C_l_e_a_r_I_n_c_i_d_e_n_t_F_a_c_e_S_i_z_e_s() { │ │ │ │ │ -351 _hasFaceSizes = false; │ │ │ │ │ -352} │ │ │ │ │ -353 │ │ │ │ │ -354inline void │ │ │ │ │ -_3_5_5_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_S_e_t_I_n_c_i_d_e_n_t_F_a_c_e_S_i_z_e(int incFaceIndex, int faceSize) { │ │ │ │ │ -356 │ │ │ │ │ -357 if (!_hasFaceSizes) initFaceSizes(); │ │ │ │ │ -358 │ │ │ │ │ -359 _faceSizeOffsets[incFaceIndex] = faceSize; │ │ │ │ │ -360} │ │ │ │ │ -361inline int │ │ │ │ │ -_3_6_2_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_G_e_t_I_n_c_i_d_e_n_t_F_a_c_e_S_i_z_e(int incFaceIndex) const { │ │ │ │ │ -363 │ │ │ │ │ -364 return _isFinalized ? │ │ │ │ │ -365 (_faceSizeOffsets[incFaceIndex+1] - _faceSizeOffsets[incFaceIndex]) : │ │ │ │ │ -366 _faceSizeOffsets[incFaceIndex]; │ │ │ │ │ -367} │ │ │ │ │ -368 │ │ │ │ │ -369// │ │ │ │ │ -370// Public inline methods involving vertex sharpness: │ │ │ │ │ -371// │ │ │ │ │ -372inline bool │ │ │ │ │ -_3_7_3_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_H_a_s_V_e_r_t_e_x_S_h_a_r_p_n_e_s_s() const { │ │ │ │ │ -374 return _vertSharpness > 0.0f; │ │ │ │ │ -375} │ │ │ │ │ -376inline void │ │ │ │ │ -_3_7_7_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_C_l_e_a_r_V_e_r_t_e_x_S_h_a_r_p_n_e_s_s() { │ │ │ │ │ -378 _vertSharpness = 0.0f; │ │ │ │ │ -379} │ │ │ │ │ -380 │ │ │ │ │ -381inline void │ │ │ │ │ -_3_8_2_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_S_e_t_V_e_r_t_e_x_S_h_a_r_p_n_e_s_s(float vertSharpness) { │ │ │ │ │ -383 _vertSharpness = vertSharpness; │ │ │ │ │ -384} │ │ │ │ │ -385inline float │ │ │ │ │ -_3_8_6_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_G_e_t_V_e_r_t_e_x_S_h_a_r_p_n_e_s_s() const { │ │ │ │ │ -387 return _vertSharpness; │ │ │ │ │ -388} │ │ │ │ │ -389 │ │ │ │ │ -390// │ │ │ │ │ -391// Public inline methods involving vertex sharpness: │ │ │ │ │ -392// │ │ │ │ │ -393inline bool │ │ │ │ │ -_3_9_4_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_H_a_s_E_d_g_e_S_h_a_r_p_n_e_s_s() const { │ │ │ │ │ -395 return _hasEdgeSharpness; │ │ │ │ │ -396} │ │ │ │ │ -397inline void │ │ │ │ │ -_3_9_8_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_C_l_e_a_r_E_d_g_e_S_h_a_r_p_n_e_s_s() { │ │ │ │ │ -399 _hasEdgeSharpness = false; │ │ │ │ │ -400} │ │ │ │ │ -401 │ │ │ │ │ -402inline void │ │ │ │ │ -_4_0_3_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_S_e_t_M_a_n_i_f_o_l_d_E_d_g_e_S_h_a_r_p_n_e_s_s(int edgeIndex, float sharpness) { │ │ │ │ │ -404 │ │ │ │ │ -405 if (!_hasEdgeSharpness) initEdgeSharpness(); │ │ │ │ │ -406 │ │ │ │ │ -407 // Assign the leading edge of the face after the edge (even index): │ │ │ │ │ -408 if (edgeIndex < _numFaces) { │ │ │ │ │ -409 _faceEdgeSharpness[2*edgeIndex] = sharpness; │ │ │ │ │ -410 } │ │ │ │ │ -411 │ │ │ │ │ -412 // Assign the trailing edge of the face before the edge (odd index): │ │ │ │ │ -413 if (edgeIndex > 0) { │ │ │ │ │ -414 _faceEdgeSharpness[2*edgeIndex-1] = sharpness; │ │ │ │ │ -415 } else if (!_I_s_B_o_u_n_d_a_r_y()) { │ │ │ │ │ -416 _faceEdgeSharpness[2*_numFaces-1] = sharpness; │ │ │ │ │ -417 } │ │ │ │ │ -418} │ │ │ │ │ -419inline float │ │ │ │ │ -_4_2_0_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_G_e_t_M_a_n_i_f_o_l_d_E_d_g_e_S_h_a_r_p_n_e_s_s(int edgeIndex) const { │ │ │ │ │ -421 │ │ │ │ │ -422 // All edges are first of the pair (even index) except last of boundary │ │ │ │ │ -423 return _faceEdgeSharpness[2*edgeIndex - (edgeIndex == _numFaces)]; │ │ │ │ │ -424} │ │ │ │ │ -425 │ │ │ │ │ -426inline void │ │ │ │ │ -_4_2_7_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_S_e_t_I_n_c_i_d_e_n_t_F_a_c_e_E_d_g_e_S_h_a_r_p_n_e_s_s(int faceIndex, │ │ │ │ │ -428 float leadingEdgeSharpness, float trailingEdgeSharpness) { │ │ │ │ │ -429 │ │ │ │ │ -430 if (!_hasEdgeSharpness) initEdgeSharpness(); │ │ │ │ │ -431 │ │ │ │ │ -432 _faceEdgeSharpness[2*faceIndex ] = leadingEdgeSharpness; │ │ │ │ │ -433 _faceEdgeSharpness[2*faceIndex+1] = trailingEdgeSharpness; │ │ │ │ │ -434} │ │ │ │ │ -435inline void │ │ │ │ │ -_4_3_6_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_G_e_t_I_n_c_i_d_e_n_t_F_a_c_e_E_d_g_e_S_h_a_r_p_n_e_s_s(int faceIndex, │ │ │ │ │ -437 float * leadingEdgeSharpness, float * trailingEdgeSharpness) const { │ │ │ │ │ -438 │ │ │ │ │ -439 *leadingEdgeSharpness = _faceEdgeSharpness[2*faceIndex]; │ │ │ │ │ -440 *trailingEdgeSharpness = _faceEdgeSharpness[2*faceIndex+1]; │ │ │ │ │ -441} │ │ │ │ │ -442 │ │ │ │ │ -443} // end namespace Bfr │ │ │ │ │ -444 │ │ │ │ │ -445} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ -446using namespace OPENSUBDIV_VERSION; │ │ │ │ │ -447} // end namespace OpenSubdiv │ │ │ │ │ -448 │ │ │ │ │ -449#endif /* OPENSUBDIV3_BFR_VERTEX_DESCRIPTOR_H */ │ │ │ │ │ +268 │ │ │ │ │ +283 │ │ │ │ │ +_2_8_5 void _T_r_a_n_s_f_o_r_m_F_a_c_e_t_C_o_o_r_d_I_n_d_i_c_e_s(int facetTuples[], int commonOffset); │ │ │ │ │ +286 │ │ │ │ │ +_2_8_9 void _T_r_a_n_s_f_o_r_m_F_a_c_e_t_C_o_o_r_d_I_n_d_i_c_e_s(int facetTuples[], │ │ │ │ │ +290 int const boundaryIndices[], │ │ │ │ │ +291 int interiorOffset); │ │ │ │ │ +292 │ │ │ │ │ +_2_9_4 void _T_r_a_n_s_f_o_r_m_F_a_c_e_t_C_o_o_r_d_I_n_d_i_c_e_s(int facetTuples[], │ │ │ │ │ +295 int const boundaryIndices[], │ │ │ │ │ +296 int const interiorIndices[]); │ │ │ │ │ +298 │ │ │ │ │ +299private: │ │ │ │ │ +300 // Private initialization methods: │ │ │ │ │ +301 bool validateArguments(_P_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n const & p, │ │ │ │ │ +302 int nRates, int const rates[], _O_p_t_i_o_n_s const & options); │ │ │ │ │ +303 │ │ │ │ │ +304 void initialize(_P_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n const & p, │ │ │ │ │ +305 int nRates, int const rates[], _O_p_t_i_o_n_s const & options); │ │ │ │ │ +306 │ │ │ │ │ +307 void initializeDefaults(); │ │ │ │ │ +308 int initializeRates(int nRates, int const rates[]); │ │ │ │ │ +309 void initializeInventoryForParamTri(int sumOfOuterRates); │ │ │ │ │ +310 void initializeInventoryForParamQuad(int sumOfOuterRates); │ │ │ │ │ +311 void initializeInventoryForParamQPoly(int sumOfOuterRates); │ │ │ │ │ +312 │ │ │ │ │ +313private: │ │ │ │ │ +314 // Private members: │ │ │ │ │ +315 _P_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n _param; │ │ │ │ │ +316 │ │ │ │ │ +317 unsigned short _isValid : 1; │ │ │ │ │ +318 unsigned short _isUniform : 1; │ │ │ │ │ +319 unsigned short _triangulate : 1; │ │ │ │ │ +320 unsigned short _singleFace : 1; │ │ │ │ │ +321 unsigned short _segmentedFace : 1; │ │ │ │ │ +322 unsigned short _triangleFan : 1; │ │ │ │ │ +323 unsigned short _splitQuad : 1; │ │ │ │ │ +324 │ │ │ │ │ +325 short _facetSize; │ │ │ │ │ +326 int _facetStride; │ │ │ │ │ +327 int _coordStride; │ │ │ │ │ +328 │ │ │ │ │ +329 int _numGivenRates; │ │ │ │ │ +330 int _numBoundaryPoints; │ │ │ │ │ +331 int _numInteriorPoints; │ │ │ │ │ +332 int _numFacets; │ │ │ │ │ +333 │ │ │ │ │ +334 int _innerRates[2]; │ │ │ │ │ +335 int* _outerRates; │ │ │ │ │ +336 int _outerRatesLocal[4]; │ │ │ │ │ +337}; │ │ │ │ │ +338 │ │ │ │ │ +339// │ │ │ │ │ +340// Inline implementations: │ │ │ │ │ +341// │ │ │ │ │ +342inline _T_e_s_s_e_l_l_a_t_i_o_n_:_:_O_p_t_i_o_n_s & │ │ │ │ │ +_3_4_3_T_e_s_s_e_l_l_a_t_i_o_n_:_:_O_p_t_i_o_n_s_:_:_P_r_e_s_e_r_v_e_Q_u_a_d_s(bool on) { │ │ │ │ │ +344 _preserveQuads = on; │ │ │ │ │ +345 return *this; │ │ │ │ │ +346} │ │ │ │ │ +347inline _T_e_s_s_e_l_l_a_t_i_o_n_:_:_O_p_t_i_o_n_s & │ │ │ │ │ +_3_4_8_T_e_s_s_e_l_l_a_t_i_o_n_:_:_O_p_t_i_o_n_s_:_:_S_e_t_F_a_c_e_t_S_i_z_e(int numIndices) { │ │ │ │ │ +349 _facetSize4 = (numIndices == 4); │ │ │ │ │ +350 return *this; │ │ │ │ │ +351} │ │ │ │ │ +352inline _T_e_s_s_e_l_l_a_t_i_o_n_:_:_O_p_t_i_o_n_s & │ │ │ │ │ +_3_5_3_T_e_s_s_e_l_l_a_t_i_o_n_:_:_O_p_t_i_o_n_s_:_:_S_e_t_F_a_c_e_t_S_t_r_i_d_e(int stride) { │ │ │ │ │ +354 _facetStride = (short) stride; │ │ │ │ │ +355 return *this; │ │ │ │ │ +356} │ │ │ │ │ +357inline _T_e_s_s_e_l_l_a_t_i_o_n_:_:_O_p_t_i_o_n_s & │ │ │ │ │ +_3_5_8_T_e_s_s_e_l_l_a_t_i_o_n_:_:_O_p_t_i_o_n_s_:_:_S_e_t_C_o_o_r_d_S_t_r_i_d_e(int stride) { │ │ │ │ │ +359 _coordStride = (short) stride; │ │ │ │ │ +360 return *this; │ │ │ │ │ +361} │ │ │ │ │ +362 │ │ │ │ │ +363template │ │ │ │ │ +364inline int │ │ │ │ │ +_3_6_5_T_e_s_s_e_l_l_a_t_i_o_n_:_:_G_e_t_V_e_r_t_e_x_C_o_o_r_d(int vertex, REAL coord[]) const { │ │ │ │ │ +366 _param._G_e_t_V_e_r_t_e_x_C_o_o_r_d(vertex, coord); │ │ │ │ │ +367 return 1; │ │ │ │ │ +368} │ │ │ │ │ +369 │ │ │ │ │ +370template │ │ │ │ │ +371inline int │ │ │ │ │ +_3_7_2_T_e_s_s_e_l_l_a_t_i_o_n_:_:_G_e_t_C_o_o_r_d_s(REAL coordTuples[]) const { │ │ │ │ │ +373 int nCoords = _G_e_t_B_o_u_n_d_a_r_y_C_o_o_r_d_s(coordTuples); │ │ │ │ │ +374 nCoords += _G_e_t_I_n_t_e_r_i_o_r_C_o_o_r_d_s(coordTuples + nCoords * _coordStride); │ │ │ │ │ +375 return nCoords; │ │ │ │ │ +376} │ │ │ │ │ +377 │ │ │ │ │ +378} // end namespace Bfr │ │ │ │ │ +379 │ │ │ │ │ +380} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ +381using namespace OPENSUBDIV_VERSION; │ │ │ │ │ +382 │ │ │ │ │ +383} // end namespace OpenSubdiv │ │ │ │ │ +384 │ │ │ │ │ +385#endif /* OPENSUBDIV3_BFR_TESSELLATION */ │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v │ │ │ │ │ DDeeffiinniittiioonn _l_i_m_i_t_s_._h_:_3_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ -Simple class used by subclasses of SurfaceFactory to describe a vertex. │ │ │ │ │ -DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_1_3_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_G_e_t_V_e_r_t_e_x_S_h_a_r_p_n_e_s_s │ │ │ │ │ -float GetVertexSharpness() const │ │ │ │ │ -Return the sharpness of the vertex. │ │ │ │ │ -DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_3_8_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_F_i_n_a_l_i_z_e │ │ │ │ │ -bool Finalize() │ │ │ │ │ -Terminate the sequence of specifications. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_S_e_t_M_a_n_i_f_o_l_d │ │ │ │ │ -void SetManifold(bool isManifold) │ │ │ │ │ -Declare the vertex neighborhood as manifold (ordered) │ │ │ │ │ -DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_3_2_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_I_n_i_t_i_a_l_i_z_e │ │ │ │ │ -bool Initialize(int numIncidentFaces) │ │ │ │ │ -Initialize specification with the number of incident faces. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_I_s_M_a_n_i_f_o_l_d │ │ │ │ │ -bool IsManifold() const │ │ │ │ │ -Return if vertex neighborhood is manifold. │ │ │ │ │ -DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_3_2_9 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_H_a_s_E_d_g_e_S_h_a_r_p_n_e_s_s │ │ │ │ │ -bool HasEdgeSharpness() const │ │ │ │ │ -Return if sharpness was assigned to the incident edges. │ │ │ │ │ -DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_3_9_4 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_G_e_t_I_n_c_i_d_e_n_t_F_a_c_e_S_i_z_e │ │ │ │ │ -int GetIncidentFaceSize(int faceIndex) const │ │ │ │ │ -Return the size of an incident face. │ │ │ │ │ -DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_3_6_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_G_e_t_M_a_n_i_f_o_l_d_E_d_g_e_S_h_a_r_p_n_e_s_s │ │ │ │ │ -float GetManifoldEdgeSharpness(int edgeIndex) const │ │ │ │ │ -Return the sharpness assigned to a manifold edge. │ │ │ │ │ -DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_4_2_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_: │ │ │ │ │ -_S_e_t_I_n_c_i_d_e_n_t_F_a_c_e_E_d_g_e_S_h_a_r_p_n_e_s_s │ │ │ │ │ -void SetIncidentFaceEdgeSharpness(int faceIndex, float leadingEdgeSharp, float │ │ │ │ │ -trailingEdgeSharp) │ │ │ │ │ -Assign sharpness to the edges of an incident face. │ │ │ │ │ -DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_4_2_7 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_H_a_s_V_e_r_t_e_x_S_h_a_r_p_n_e_s_s │ │ │ │ │ -bool HasVertexSharpness() const │ │ │ │ │ -Return if sharpness was assigned to the vertex. │ │ │ │ │ -DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_3_7_3 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_C_l_e_a_r_I_n_c_i_d_e_n_t_F_a_c_e_S_i_z_e_s │ │ │ │ │ -void ClearIncidentFaceSizes() │ │ │ │ │ -Remove any assigned sizes of incident faces. │ │ │ │ │ -DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_3_5_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_S_e_t_V_e_r_t_e_x_S_h_a_r_p_n_e_s_s │ │ │ │ │ -void SetVertexSharpness(float sharpness) │ │ │ │ │ -Assign sharpness to the vertex. │ │ │ │ │ -DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_3_8_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_C_l_e_a_r_V_e_r_t_e_x_S_h_a_r_p_n_e_s_s │ │ │ │ │ -void ClearVertexSharpness() │ │ │ │ │ -Remove any sharpness assigned to the vertex. │ │ │ │ │ -DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_3_7_7 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_C_l_e_a_r_E_d_g_e_S_h_a_r_p_n_e_s_s │ │ │ │ │ -void ClearEdgeSharpness() │ │ │ │ │ -Remove any sharpness assigned to the incident edges. │ │ │ │ │ -DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_3_9_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_: │ │ │ │ │ -_G_e_t_I_n_c_i_d_e_n_t_F_a_c_e_E_d_g_e_S_h_a_r_p_n_e_s_s │ │ │ │ │ -void GetIncidentFaceEdgeSharpness(int faceIndex, float *leadingEdgeSharp, float │ │ │ │ │ -*trailingEdgeSharp) const │ │ │ │ │ -Return the sharpness assigned to edges of an incident face. │ │ │ │ │ -DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_4_3_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_I_s_B_o_u_n_d_a_r_y │ │ │ │ │ -bool IsBoundary() const │ │ │ │ │ -Return if vertex neighborhood is on a boundary. │ │ │ │ │ -DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_3_3_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_I_s_V_a_l_i_d │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_P_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n │ │ │ │ │ +Simple class defining the 2D parameterization of a face. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n_._h_:_5_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_P_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n_:_:_G_e_t_F_a_c_e_S_i_z_e │ │ │ │ │ +int GetFaceSize() const │ │ │ │ │ +Returns the size (number of vertices) of the corresponding face. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n_._h_:_1_0_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_P_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n_:_:_G_e_t_V_e_r_t_e_x_C_o_o_r_d │ │ │ │ │ +void GetVertexCoord(int vertexIndex, REAL uvCoord[2]) const │ │ │ │ │ +Returns the (u,v) coordinate of a given vertex. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n │ │ │ │ │ +Encapsulates a specific tessellation pattern of a Parameterization. │ │ │ │ │ +DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_5_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_G_e_t_F_a_c_e_S_i_z_e │ │ │ │ │ +int GetFaceSize() const │ │ │ │ │ +Return the size of the face. │ │ │ │ │ +DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_1_8_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_G_e_t_N_u_m_B_o_u_n_d_a_r_y_C_o_o_r_d_s │ │ │ │ │ +int GetNumBoundaryCoords() const │ │ │ │ │ +Return the number of boundary coordinates. │ │ │ │ │ +DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_2_1_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_~_T_e_s_s_e_l_l_a_t_i_o_n │ │ │ │ │ +~Tessellation() │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_T_r_a_n_s_f_o_r_m_F_a_c_e_t_C_o_o_r_d_I_n_d_i_c_e_s │ │ │ │ │ +void TransformFacetCoordIndices(int facetTuples[], int const boundaryIndices[], │ │ │ │ │ +int const interiorIndices[]) │ │ │ │ │ +Reassign all facet coordinate indices. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_G_e_t_C_o_o_r_d_S_t_r_i_d_e │ │ │ │ │ +int GetCoordStride() const │ │ │ │ │ +Return the number of elements between each coordinate. │ │ │ │ │ +DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_2_0_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_G_e_t_N_u_m_E_d_g_e_C_o_o_r_d_s │ │ │ │ │ +int GetNumEdgeCoords(int edge) const │ │ │ │ │ +Return the number of coordinates within a given edge (excluding those at its │ │ │ │ │ +end vertices) │ │ │ │ │ +DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_2_1_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_G_e_t_I_n_t_e_r_i_o_r_C_o_o_r_d_s │ │ │ │ │ +int GetInteriorCoords(REAL coordTuples[]) const │ │ │ │ │ +Retrieve the coordinates for the boundary. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_G_e_t_F_a_c_e_t_S_t_r_i_d_e │ │ │ │ │ +int GetFacetStride() const │ │ │ │ │ +Return the number of elements between each facet. │ │ │ │ │ +DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_2_6_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_I_s_U_n_i_f_o_r_m │ │ │ │ │ +bool IsUniform() const │ │ │ │ │ +Return if the pattern is uniform. │ │ │ │ │ +DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_1_8_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_G_e_t_N_u_m_C_o_o_r_d_s │ │ │ │ │ +int GetNumCoords() const │ │ │ │ │ +Return the number of coordinates in the entire pattern. │ │ │ │ │ +DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_2_0_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_G_e_t_C_o_o_r_d_s │ │ │ │ │ +int GetCoords(REAL coordTuples[]) const │ │ │ │ │ +Retrieve the coordinates for the entire pattern. │ │ │ │ │ +DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_3_7_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_T_r_a_n_s_f_o_r_m_F_a_c_e_t_C_o_o_r_d_I_n_d_i_c_e_s │ │ │ │ │ +void TransformFacetCoordIndices(int facetTuples[], int commonOffset) │ │ │ │ │ +Apply a common offset to all facet coordinate indices. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_T_e_s_s_e_l_l_a_t_i_o_n │ │ │ │ │ +Tessellation(Parameterization const &p, int numRates, int const rates[], │ │ │ │ │ +Options const &options=Options()) │ │ │ │ │ +General constructor providing multiple tessellation rates for a non-uniform │ │ │ │ │ +tessellation. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_G_e_t_P_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n │ │ │ │ │ +Parameterization GetParameterization() const │ │ │ │ │ +Return the Parameterization. │ │ │ │ │ +DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_1_7_9 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_T_r_a_n_s_f_o_r_m_F_a_c_e_t_C_o_o_r_d_I_n_d_i_c_e_s │ │ │ │ │ +void TransformFacetCoordIndices(int facetTuples[], int const boundaryIndices[], │ │ │ │ │ +int interiorOffset) │ │ │ │ │ +Reassign indices of boundary coordinates while offseting those of interior │ │ │ │ │ +coordinates. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_G_e_t_F_a_c_e_t_S_i_z_e │ │ │ │ │ +int GetFacetSize() const │ │ │ │ │ +Return the number of indices assigned to each facet. │ │ │ │ │ +DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_2_5_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_T_e_s_s_e_l_l_a_t_i_o_n │ │ │ │ │ +Tessellation()=delete │ │ │ │ │ +Default construction is unavailable. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_T_e_s_s_e_l_l_a_t_i_o_n │ │ │ │ │ +Tessellation(Parameterization const &p, int uniformRate, Options const │ │ │ │ │ +&options=Options()) │ │ │ │ │ +Simple constructor providing a single uniform tessellation rate. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_G_e_t_F_a_c_e_t_s │ │ │ │ │ +int GetFacets(int facetTuples[]) const │ │ │ │ │ +Retrieve the facet indices for the entire pattern. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_G_e_t_N_u_m_F_a_c_e_t_s │ │ │ │ │ +int GetNumFacets() const │ │ │ │ │ +Return the number of facets in the entire pattern. │ │ │ │ │ +DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_2_5_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_G_e_t_N_u_m_I_n_t_e_r_i_o_r_C_o_o_r_d_s │ │ │ │ │ +int GetNumInteriorCoords() const │ │ │ │ │ +Return the number of interior coordinates. │ │ │ │ │ +DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_2_1_4 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_G_e_t_V_e_r_t_e_x_C_o_o_r_d │ │ │ │ │ +int GetVertexCoord(int vertex, REAL coordTuples[]) const │ │ │ │ │ +Retrieve the coordinate for a given vertex of the face. │ │ │ │ │ +DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_3_6_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_G_e_t_B_o_u_n_d_a_r_y_C_o_o_r_d_s │ │ │ │ │ +int GetBoundaryCoords(REAL coordTuples[]) const │ │ │ │ │ +Retrieve the coordinates for the boundary. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_T_e_s_s_e_l_l_a_t_i_o_n │ │ │ │ │ +Tessellation(Tessellation const &)=delete │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_G_e_t_R_a_t_e_s │ │ │ │ │ +int GetRates(int rates[]) const │ │ │ │ │ +Retrieve the rates assigned. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_I_s_V_a_l_i_d │ │ │ │ │ bool IsValid() const │ │ │ │ │ -Return if instance is valid. │ │ │ │ │ -DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_3_2_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_H_a_s_I_n_c_i_d_e_n_t_F_a_c_e_S_i_z_e_s │ │ │ │ │ -bool HasIncidentFaceSizes() const │ │ │ │ │ -Return if the sizes of incident faces are assigned. │ │ │ │ │ -DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_3_4_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_S_e_t_B_o_u_n_d_a_r_y │ │ │ │ │ -void SetBoundary(bool isOnBoundary) │ │ │ │ │ -Declare the vertex neighborhood as being on a boundary. │ │ │ │ │ -DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_3_3_4 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_S_e_t_I_n_c_i_d_e_n_t_F_a_c_e_S_i_z_e │ │ │ │ │ -void SetIncidentFaceSize(int faceIndex, int faceSize) │ │ │ │ │ -Assign the size of an incident face. │ │ │ │ │ -DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_3_5_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_S_e_t_M_a_n_i_f_o_l_d_E_d_g_e_S_h_a_r_p_n_e_s_s │ │ │ │ │ -void SetManifoldEdgeSharpness(int edgeIndex, float edgeSharpness) │ │ │ │ │ -Assign sharpness to the edge of a manifold neighborhood. │ │ │ │ │ -DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_4_0_3 │ │ │ │ │ +Return true if correctly initialized. │ │ │ │ │ +DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_1_6_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_o_p_e_r_a_t_o_r_= │ │ │ │ │ +Tessellation & operator=(Tessellation const &)=delete │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_G_e_t_E_d_g_e_C_o_o_r_d_s │ │ │ │ │ +int GetEdgeCoords(int edge, REAL coordTuples[]) const │ │ │ │ │ +Retrieve the coordinates for a given edge of the face (excluding those at its │ │ │ │ │ +end vertices) │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_O_p_t_i_o_n_s │ │ │ │ │ +Options configure a Tessellation to specify the nature of both its results and │ │ │ │ │ +the structure of the c... │ │ │ │ │ +DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_6_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_O_p_t_i_o_n_s_:_:_O_p_t_i_o_n_s │ │ │ │ │ +Options() │ │ │ │ │ +DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_6_7 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_O_p_t_i_o_n_s_:_:_G_e_t_C_o_o_r_d_S_t_r_i_d_e │ │ │ │ │ +int GetCoordStride() const │ │ │ │ │ +Return the stride between (u,v) pairs. │ │ │ │ │ +DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_9_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_O_p_t_i_o_n_s_:_:_S_e_t_F_a_c_e_t_S_i_z_e │ │ │ │ │ +Options & SetFacetSize(int numIndices) │ │ │ │ │ +Assign the number of indices per facet (must be 3 or 4, default is 3) │ │ │ │ │ +DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_3_4_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_O_p_t_i_o_n_s_:_:_G_e_t_F_a_c_e_t_S_t_r_i_d_e │ │ │ │ │ +int GetFacetStride() const │ │ │ │ │ +Return the stride between facets. │ │ │ │ │ +DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_8_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_O_p_t_i_o_n_s_:_:_G_e_t_F_a_c_e_t_S_i_z_e │ │ │ │ │ +int GetFacetSize() const │ │ │ │ │ +DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_8_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_O_p_t_i_o_n_s_:_:_S_e_t_C_o_o_r_d_S_t_r_i_d_e │ │ │ │ │ +Options & SetCoordStride(int stride) │ │ │ │ │ +Assign the stride between (u,v) pairs (default is 2) │ │ │ │ │ +DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_3_5_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_O_p_t_i_o_n_s_:_:_S_e_t_F_a_c_e_t_S_t_r_i_d_e │ │ │ │ │ +Options & SetFacetStride(int stride) │ │ │ │ │ +Assign the stride between facets (default is facet size) │ │ │ │ │ +DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_3_5_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_O_p_t_i_o_n_s_:_:_P_r_e_s_e_r_v_e_Q_u_a_d_s │ │ │ │ │ +bool PreserveQuads() const │ │ │ │ │ +Return if preservation of quads is set. │ │ │ │ │ +DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_7_4 │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _b_f_r │ │ │ │ │ - * _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h │ │ │ │ │ + * _t_e_s_s_e_l_l_a_t_i_o_n_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00677.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/bfr/tessellation.h File Reference │ │ │ │ +OpenSubdiv: opensubdiv/bfr/vertexDescriptor.h File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -90,29 +90,26 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
tessellation.h File Reference
│ │ │ │ +
vertexDescriptor.h File Reference
│ │ │ │
│ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ -#include "../bfr/parameterization.h"
│ │ │ │ +#include "../vtr/stackBuffer.h"
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  Tessellation
 Encapsulates a specific tessellation pattern of a Parameterization. More...
 
class  Tessellation::Options
 Options configure a Tessellation to specify the nature of both its results and the structure of the coordinate and facet index arrays that its methods will populate. More...
class  VertexDescriptor
 Simple class used by subclasses of SurfaceFactory to describe a vertex. More...
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -121,13 +118,13 @@ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  OpenSubdiv
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION
 
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,30 +1,25 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -tessellation.h File Reference │ │ │ │ │ +vertexDescriptor.h File Reference │ │ │ │ │ #include "../version.h" │ │ │ │ │ -#include "_._._/_b_f_r_/_p_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n_._h" │ │ │ │ │ +#include "_._._/_v_t_r_/_s_t_a_c_k_B_u_f_f_e_r_._h" │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -class   _T_e_s_s_e_l_l_a_t_i_o_n │ │ │ │ │ -  Encapsulates a specific tessellation pattern of a _P_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n. │ │ │ │ │ +class   _V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ +  Simple class used by subclasses of _S_u_r_f_a_c_e_F_a_c_t_o_r_y to describe a vertex. │ │ │ │ │ _M_o_r_e_._._. │ │ │ │ │   │ │ │ │ │ -class   _T_e_s_s_e_l_l_a_t_i_o_n_:_:_O_p_t_i_o_n_s │ │ │ │ │ - _O_p_t_i_o_n_s configure a _T_e_s_s_e_l_l_a_t_i_o_n to specify the nature of both its │ │ │ │ │ -  results and the structure of the coordinate and facet index arrays that │ │ │ │ │ - its methods will populate. _M_o_r_e_._._. │ │ │ │ │ -  │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r │ │ │ │ │   │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _b_f_r │ │ │ │ │ - * _t_e_s_s_e_l_l_a_t_i_o_n_._h │ │ │ │ │ + * _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00677.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -1,4 +1,3 @@ │ │ │ │ │ var a00677 = [ │ │ │ │ │ - ["Tessellation", "a00961.html", "a00961"], │ │ │ │ │ - ["Options", "a00965.html", "a00965"] │ │ │ │ │ + ["VertexDescriptor", "a00969.html", "a00969"] │ │ │ │ │ ]; │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00677_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/bfr/tessellation.h Source File │ │ │ │ +OpenSubdiv: opensubdiv/bfr/vertexDescriptor.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -92,15 +92,15 @@ │ │ │ │
No Matches
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
tessellation.h
│ │ │ │ +
vertexDescriptor.h
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1//
│ │ │ │
2// Copyright 2021 Pixar
│ │ │ │
3//
│ │ │ │
4// Licensed under the Apache License, Version 2.0 (the "Apache License")
│ │ │ │
5// with the following modification; you may not use this file except in
│ │ │ │ @@ -119,281 +119,425 @@ │ │ │ │
18// Unless required by applicable law or agreed to in writing, software
│ │ │ │
19// distributed under the Apache License with the above modification is
│ │ │ │
20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
│ │ │ │
21// KIND, either express or implied. See the Apache License for the specific
│ │ │ │
22// language governing permissions and limitations under the Apache License.
│ │ │ │
23//
│ │ │ │
24
│ │ │ │ -
25#ifndef OPENSUBDIV3_BFR_TESSELLATION_H
│ │ │ │ -
26#define OPENSUBDIV3_BFR_TESSELLATION_H
│ │ │ │ +
25#ifndef OPENSUBDIV3_BFR_VERTEX_DESCRIPTOR_H
│ │ │ │ +
26#define OPENSUBDIV3_BFR_VERTEX_DESCRIPTOR_H
│ │ │ │
27
│ │ │ │
28#include "../version.h"
│ │ │ │
29
│ │ │ │ -
30#include "../bfr/parameterization.h"
│ │ │ │ +
30#include "../vtr/stackBuffer.h"
│ │ │ │
31
│ │ │ │
32namespace OpenSubdiv {
│ │ │ │
33namespace OPENSUBDIV_VERSION {
│ │ │ │
34
│ │ │ │
35namespace Bfr {
│ │ │ │
36
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
52public:
│ │ │ │ -
│ │ │ │ -
65 class Options {
│ │ │ │ -
66 public:
│ │ │ │ -
│ │ │ │ -
67 Options() : _preserveQuads(false), _facetSize4(false),
│ │ │ │ -
68 _coordStride(0), _facetStride(0) { }
│ │ │ │ -
│ │ │ │ -
69
│ │ │ │ -
72 Options & PreserveQuads(bool on);
│ │ │ │ -
74 bool PreserveQuads() const { return _preserveQuads; }
│ │ │ │ -
75
│ │ │ │ -
78 Options & SetFacetSize(int numIndices);
│ │ │ │ -
79 // @brief Return the number of indices per facet
│ │ │ │ -
80 int GetFacetSize() const { return 3 + (int)_facetSize4; }
│ │ │ │ -
81
│ │ │ │ -
83 Options & SetFacetStride(int stride);
│ │ │ │ -
85 int GetFacetStride() const { return _facetStride; }
│ │ │ │ -
86
│ │ │ │ -
88 Options & SetCoordStride(int stride);
│ │ │ │ -
90 int GetCoordStride() const { return _coordStride; }
│ │ │ │ -
91
│ │ │ │ -
92 private:
│ │ │ │ -
93 unsigned int _preserveQuads : 1;
│ │ │ │ -
94 unsigned int _facetSize4 : 1;
│ │ │ │ -
95
│ │ │ │ -
96 short _coordStride;
│ │ │ │ -
97 short _facetStride;
│ │ │ │ -
98 };
│ │ │ │ -
│ │ │ │ -
99
│ │ │ │ -
100public:
│ │ │ │ -
102
│ │ │ │ -
111
│ │ │ │ -
118 Tessellation(Parameterization const & p, int uniformRate,
│ │ │ │ -
119 Options const & options = Options());
│ │ │ │ -
120
│ │ │ │ -
158 Tessellation(Parameterization const & p, int numRates, int const rates[],
│ │ │ │ -
159 Options const & options = Options());
│ │ │ │ -
160
│ │ │ │ -
162 bool IsValid() const { return _isValid; }
│ │ │ │ -
163
│ │ │ │ -
165 Tessellation() = delete;
│ │ │ │ -
166
│ │ │ │ -
167 Tessellation(Tessellation const &) = delete;
│ │ │ │ - │ │ │ │ - │ │ │ │ -
171
│ │ │ │ -
173
│ │ │ │ -
177
│ │ │ │ -
179 Parameterization GetParameterization() const { return _param; }
│ │ │ │ -
180
│ │ │ │ -
182 int GetFaceSize() const { return _param.GetFaceSize(); }
│ │ │ │ -
183
│ │ │ │ -
185 int GetRates(int rates[]) const;
│ │ │ │ -
186
│ │ │ │ -
188 bool IsUniform() const { return _isUniform; }
│ │ │ │ -
190
│ │ │ │ -
192
│ │ │ │ +
50//
│ │ │ │ +
51// WIP - need to migrate some of these comments into Doxygen
│ │ │ │ +
52// - others will be moved to the external documentation
│ │ │ │ +
53//
│ │ │ │ +
54// It is used by subclasses of SurfaceFactory to provide a complete
│ │ │ │ +
55// topological description for each vertex of a face, i.e. invoked via
│ │ │ │ +
56// the virtual method:
│ │ │ │ +
57//
│ │ │ │ +
58// int populateFaceVertexDescriptor(Index baseFace,
│ │ │ │ +
59// int cornerVertex,
│ │ │ │ +
60// VertexDescriptor & v) const;
│ │ │ │ +
61//
│ │ │ │ +
62// Assignment of the full topology can be involved in the presence of
│ │ │ │ +
63// irregular faces, non-manifold topology or creasing around a vertex, but
│ │ │ │ +
64// many cases will be simple. For example, to specify a regular boundary
│ │ │ │ +
65// vertex of a Catmark mesh without any optional sharpness:
│ │ │ │ +
66//
│ │ │ │ +
67// int numIncidentFaces = 2;
│ │ │ │ +
68// bool vertexOnBoundary = true;
│ │ │ │ +
69//
│ │ │ │ +
70// vd.Initialize(numIncidentFaces);
│ │ │ │ +
71// vd.SetManifold(true);
│ │ │ │ +
72// vd.SetBoundary(vertexOnBoundary);
│ │ │ │ +
73// vd.ClearIncidentFaceSizes();
│ │ │ │ +
74// vd.Finalize();
│ │ │ │ +
75//
│ │ │ │ +
76// For a more general example, to assign a vertex of some valence whose
│ │ │ │ +
77// incident faces are of different sizes (e.g. required when triangles
│ │ │ │ +
78// appear around a vertex in an otherwise quad-dominant Catmark mesh):
│ │ │ │ +
79//
│ │ │ │ +
80// int numIncidentFaces = meshVertex.GetNumIncidentFaces();
│ │ │ │ +
81// bool vertexOnBoundary = meshVertex.IsBoundar();
│ │ │ │ +
82//
│ │ │ │ +
83// vd.Initialize(numIncidentFaces);
│ │ │ │ +
84// vd.SetManifold(true);
│ │ │ │ +
85// vd.SetBoundary(vertexOnBoundary);
│ │ │ │ +
86//
│ │ │ │ +
87// for (int i = 0; i < numIncidentFaces; ++i) {
│ │ │ │ +
88// vd.SetIncidentFaceSize(i, meshVertex.GetIncidentFaceSize(i));
│ │ │ │ +
89// }
│ │ │ │ +
90// vd.Finalize();
│ │ │ │ +
91//
│ │ │ │ +
92// These examples specify the incident faces as forming a manifold ring
│ │ │ │ +
93// (or half-ring) around the vertex, i.e. they can be specified as a
│ │ │ │ +
94// continuous, connected sequence in counter-clockwise order (and also
│ │ │ │ +
95// without degeneracies). In the case of a boundary vertex, the first
│ │ │ │ +
96// face must be on the leading edge of the boundary while the last is on
│ │ │ │ +
97// the trailing edge. For an interior vertex, which face is specified
│ │ │ │ +
98// first does not matter (since the set is periodic).
│ │ │ │ +
99//
│ │ │ │ +
100// In both cases, the location of the base face in this sequence -- the
│ │ │ │ +
101// face whose corner vertex is being described here -- must be specified
│ │ │ │ +
102// in the return value to populateFaceVertexDescriptor() (e.g. when a
│ │ │ │ +
103// boundary vertex has 3 incident faces, a return value of 0, 1 or 2
│ │ │ │ +
104// will indicate which is the base face).
│ │ │ │ +
105//
│ │ │ │ +
106// The corresponding methods to specify mesh control vertex indices (or
│ │ │ │ +
107// face-varying indices) complete the specification of the neighborhood:
│ │ │ │ +
108//
│ │ │ │ +
109// int getFaceCornerVertexIndices(Index baseFace, int cornerVertex,
│ │ │ │ +
110// Index vertexIndices[]) const;
│ │ │ │ +
111//
│ │ │ │ +
112// int getFaceCornerFVarValueIndices(Index baseFace, int cornerVertex,
│ │ │ │ +
113// Index fvarValueIndices[],
│ │ │ │ +
114// int fvarChannel) const;
│ │ │ │ +
115//
│ │ │ │ +
116// and are invoked by the Factory when needed.
│ │ │ │ +
117//
│ │ │ │ +
118// For each incident face, the indices for all vertices of that face are
│ │ │ │ +
119// to be specified (not the one-ring or some other subset). These indices
│ │ │ │ +
120// must also be specified in an orientation relative to the vertex, i.e.
│ │ │ │ +
121// for a vertex A and an incident face with face-vertices that may be
│ │ │ │ +
122// stored internally as {D, C, A, B}, they must be specified with A first
│ │ │ │ +
123// as {A, B, C, D}. This may seem a bit cumbersome, but it has clear
│ │ │ │ +
124// advantages when dealing with face-varying indices and unordered faces.
│ │ │ │ +
125//
│ │ │ │ +
126// More compact ways of specifying vertex indices for ordered, manifold
│ │ │ │ +
127// cases may be worth exploring in future, but face-varying indices and
│ │ │ │ +
128// non-manifold (unordered) vertices will always require such a full set,
│ │ │ │ +
129// so both methods will need to co-exist.
│ │ │ │ +
130//
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
132public:
│ │ │ │ +
133 // The full declaration must be enclosed by calls to these methods:
│ │ │ │ +
134 //
│ │ │ │ +
135 // Note that vertex valences or face sizes in excess of those defined
│ │ │ │ +
136 // in Bfr::Limits (typically 16-bits) are not valid. When specifying
│ │ │ │ +
137 // values in excess of these limits, initialization will fail and/or
│ │ │ │ +
138 // the descriptor will be marked invalid and finalization will fail.
│ │ │ │ +
139 //
│ │ │ │ +
140
│ │ │ │ +
142
│ │ │ │ +
149
│ │ │ │ +
151 bool Initialize(int numIncidentFaces);
│ │ │ │ +
152
│ │ │ │ +
154 bool Finalize();
│ │ │ │ +
155
│ │ │ │ +
157 bool IsValid() const;
│ │ │ │ +
159
│ │ │ │ +
160 //
│ │ │ │ +
161 // WIP - need to migrate these comments into Doxygen
│ │ │ │ +
162 //
│ │ │ │ +
163 // Three groups of methods describe the topology around a vertex:
│ │ │ │ +
164 // - simple properties (vertex is a boundary, manifold, etc.)
│ │ │ │ +
165 // - sizes of incident faces (constant or size for each face)
│ │ │ │ +
166 // - sharpness of the vertex and its incident edges (optional)
│ │ │ │ +
167 //
│ │ │ │ +
168
│ │ │ │ +
169 // Manifold and boundary conditions:
│ │ │ │ +
170 //
│ │ │ │ +
171 // The manifold property is a strict condition but preferred for
│ │ │ │ +
172 // efficiency and is usually available from common connected mesh
│ │ │ │ +
173 // representations. When declaring the topology as "manifold",
│ │ │ │ +
174 // the Factory assumes the following:
│ │ │ │ +
175 //
│ │ │ │ +
176 // - all incident faces are "ordered" (counter-clockwise)
│ │ │ │ +
177 // - all incident faces are consistently oriented
│ │ │ │ +
178 // - all incident edges are non-degenerate
│ │ │ │ +
179 //
│ │ │ │ +
180 // If not certain that all of these conditions are met, it is best
│ │ │ │ +
181 // to not declare manifold -- leaving the Factory to make sense of
│ │ │ │ +
182 // the set of incident faces from the face-vertex indices that are
│ │ │ │ +
183 // provided elsewhere.
│ │ │ │ +
184 //
│ │ │ │ +
185
│ │ │ │ +
187
│ │ │ │ +
191
│ │ │ │ +
193 void SetManifold(bool isManifold);
│ │ │ │ +
194
│ │ │ │ +
196 void SetBoundary(bool isOnBoundary);
│ │ │ │ +
197
│ │ │ │ +
199 void SetIncidentFaceSize(int faceIndex, int faceSize);
│ │ │ │ +
200
│ │ │ │ + │ │ │ │
203
│ │ │ │ -
205 int GetNumCoords() const { return _numInteriorPoints + _numBoundaryPoints; }
│ │ │ │ +
205 void SetVertexSharpness(float sharpness);
│ │ │ │
206
│ │ │ │ -
208 int GetCoordStride() const { return _coordStride; }
│ │ │ │ + │ │ │ │
209
│ │ │ │ -
211 int GetNumBoundaryCoords() const { return _numBoundaryPoints; }
│ │ │ │ -
212
│ │ │ │ -
214 int GetNumInteriorCoords() const { return _numInteriorPoints; }
│ │ │ │ -
215
│ │ │ │ -
218 int GetNumEdgeCoords(int edge) const { return _outerRates[edge] - 1; }
│ │ │ │ -
219
│ │ │ │ -
221 template <typename REAL>
│ │ │ │ -
222 int GetCoords(REAL coordTuples[]) const;
│ │ │ │ -
223
│ │ │ │ -
225 template <typename REAL>
│ │ │ │ -
226 int GetBoundaryCoords(REAL coordTuples[]) const;
│ │ │ │ -
227
│ │ │ │ -
229 template <typename REAL>
│ │ │ │ -
230 int GetInteriorCoords(REAL coordTuples[]) const;
│ │ │ │ -
231
│ │ │ │ -
233 template <typename REAL>
│ │ │ │ -
234 int GetVertexCoord(int vertex, REAL coordTuples[]) const;
│ │ │ │ -
235
│ │ │ │ -
238 template <typename REAL>
│ │ │ │ -
239 int GetEdgeCoords(int edge, REAL coordTuples[]) const;
│ │ │ │ -
241
│ │ │ │ -
243
│ │ │ │ -
253
│ │ │ │ -
255 int GetNumFacets() const { return _numFacets; }
│ │ │ │ -
256
│ │ │ │ -
258 int GetFacetSize() const { return _facetSize; }
│ │ │ │ -
259
│ │ │ │ -
261 int GetFacetStride() const { return _facetStride; }
│ │ │ │ -
262
│ │ │ │ -
264 int GetFacets(int facetTuples[]) const;
│ │ │ │ +
221 void SetManifoldEdgeSharpness(int edgeIndex, float edgeSharpness);
│ │ │ │ +
222
│ │ │ │ +
238 void SetIncidentFaceEdgeSharpness(int faceIndex, float leadingEdgeSharp,
│ │ │ │ +
239 float trailingEdgeSharp);
│ │ │ │ +
240
│ │ │ │ +
242 void ClearEdgeSharpness();
│ │ │ │ +
244
│ │ │ │ +
246
│ │ │ │ +
251
│ │ │ │ +
253 bool IsManifold() const;
│ │ │ │ +
254
│ │ │ │ +
256 bool IsBoundary() const;
│ │ │ │ +
257
│ │ │ │ +
259 bool HasIncidentFaceSizes() const;
│ │ │ │ +
260
│ │ │ │ +
262 int GetIncidentFaceSize(int faceIndex) const;
│ │ │ │ +
263
│ │ │ │ +
265 bool HasVertexSharpness() const;
│ │ │ │
266
│ │ │ │ -
268
│ │ │ │ -
283
│ │ │ │ -
285 void TransformFacetCoordIndices(int facetTuples[], int commonOffset);
│ │ │ │ -
286
│ │ │ │ -
289 void TransformFacetCoordIndices(int facetTuples[],
│ │ │ │ -
290 int const boundaryIndices[],
│ │ │ │ -
291 int interiorOffset);
│ │ │ │ -
292
│ │ │ │ -
294 void TransformFacetCoordIndices(int facetTuples[],
│ │ │ │ -
295 int const boundaryIndices[],
│ │ │ │ -
296 int const interiorIndices[]);
│ │ │ │ -
298
│ │ │ │ -
299private:
│ │ │ │ -
300 // Private initialization methods:
│ │ │ │ -
301 bool validateArguments(Parameterization const & p,
│ │ │ │ -
302 int nRates, int const rates[], Options const & options);
│ │ │ │ -
303
│ │ │ │ -
304 void initialize(Parameterization const & p,
│ │ │ │ -
305 int nRates, int const rates[], Options const & options);
│ │ │ │ -
306
│ │ │ │ -
307 void initializeDefaults();
│ │ │ │ -
308 int initializeRates(int nRates, int const rates[]);
│ │ │ │ -
309 void initializeInventoryForParamTri(int sumOfOuterRates);
│ │ │ │ -
310 void initializeInventoryForParamQuad(int sumOfOuterRates);
│ │ │ │ -
311 void initializeInventoryForParamQPoly(int sumOfOuterRates);
│ │ │ │ -
312
│ │ │ │ -
313private:
│ │ │ │ -
314 // Private members:
│ │ │ │ -
315 Parameterization _param;
│ │ │ │ -
316
│ │ │ │ -
317 unsigned short _isValid : 1;
│ │ │ │ -
318 unsigned short _isUniform : 1;
│ │ │ │ -
319 unsigned short _triangulate : 1;
│ │ │ │ -
320 unsigned short _singleFace : 1;
│ │ │ │ -
321 unsigned short _segmentedFace : 1;
│ │ │ │ -
322 unsigned short _triangleFan : 1;
│ │ │ │ -
323 unsigned short _splitQuad : 1;
│ │ │ │ -
324
│ │ │ │ -
325 short _facetSize;
│ │ │ │ -
326 int _facetStride;
│ │ │ │ -
327 int _coordStride;
│ │ │ │ -
328
│ │ │ │ -
329 int _numGivenRates;
│ │ │ │ -
330 int _numBoundaryPoints;
│ │ │ │ -
331 int _numInteriorPoints;
│ │ │ │ -
332 int _numFacets;
│ │ │ │ -
333
│ │ │ │ -
334 int _innerRates[2];
│ │ │ │ -
335 int* _outerRates;
│ │ │ │ -
336 int _outerRatesLocal[4];
│ │ │ │ -
337};
│ │ │ │ -
│ │ │ │ -
338
│ │ │ │ -
339//
│ │ │ │ -
340// Inline implementations:
│ │ │ │ -
341//
│ │ │ │ - │ │ │ │ -
│ │ │ │ - │ │ │ │ -
344 _preserveQuads = on;
│ │ │ │ -
345 return *this;
│ │ │ │ -
346}
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ - │ │ │ │ -
349 _facetSize4 = (numIndices == 4);
│ │ │ │ -
350 return *this;
│ │ │ │ -
351}
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ - │ │ │ │ -
354 _facetStride = (short) stride;
│ │ │ │ -
355 return *this;
│ │ │ │ -
356}
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ - │ │ │ │ -
359 _coordStride = (short) stride;
│ │ │ │ -
360 return *this;
│ │ │ │ -
361}
│ │ │ │ -
│ │ │ │ -
362
│ │ │ │ -
363template <typename REAL>
│ │ │ │ -
364inline int
│ │ │ │ -
│ │ │ │ -
365Tessellation::GetVertexCoord(int vertex, REAL coord[]) const {
│ │ │ │ -
366 _param.GetVertexCoord(vertex, coord);
│ │ │ │ -
367 return 1;
│ │ │ │ -
368}
│ │ │ │ -
│ │ │ │ -
369
│ │ │ │ -
370template <typename REAL>
│ │ │ │ -
371inline int
│ │ │ │ -
│ │ │ │ -
372Tessellation::GetCoords(REAL coordTuples[]) const {
│ │ │ │ -
373 int nCoords = GetBoundaryCoords(coordTuples);
│ │ │ │ -
374 nCoords += GetInteriorCoords(coordTuples + nCoords * _coordStride);
│ │ │ │ -
375 return nCoords;
│ │ │ │ -
376}
│ │ │ │ -
│ │ │ │ -
377
│ │ │ │ -
378} // end namespace Bfr
│ │ │ │ -
379
│ │ │ │ -
380} // end namespace OPENSUBDIV_VERSION
│ │ │ │ -
381using namespace OPENSUBDIV_VERSION;
│ │ │ │ -
382
│ │ │ │ -
383} // end namespace OpenSubdiv
│ │ │ │ -
384
│ │ │ │ -
385#endif /* OPENSUBDIV3_BFR_TESSELLATION */
│ │ │ │ +
268 float GetVertexSharpness() const;
│ │ │ │ +
269
│ │ │ │ +
271 bool HasEdgeSharpness() const;
│ │ │ │ +
272
│ │ │ │ +
274 float GetManifoldEdgeSharpness(int edgeIndex) const;
│ │ │ │ +
275
│ │ │ │ +
277 void GetIncidentFaceEdgeSharpness(int faceIndex,
│ │ │ │ +
278 float * leadingEdgeSharp, float * trailingEdgeSharp) const;
│ │ │ │ +
280
│ │ │ │ +
281protected:
│ │ │ │ +
283 friend class FaceVertex;
│ │ │ │ +
284
│ │ │ │ +
285 VertexDescriptor() { }
│ │ │ │ + │ │ │ │ +
287
│ │ │ │ +
288 typedef Vtr::internal::StackBuffer<int,8,true> IntBuffer;
│ │ │ │ +
289 typedef Vtr::internal::StackBuffer<float,16,true> FloatBuffer;
│ │ │ │ +
290
│ │ │ │ +
291 void initFaceSizes();
│ │ │ │ +
292 void initEdgeSharpness();
│ │ │ │ +
294
│ │ │ │ +
295protected:
│ │ │ │ +
297 // Member variables assigned through the above interface:
│ │ │ │ +
298 unsigned short _isValid : 1;
│ │ │ │ +
299 unsigned short _isInitialized : 1;
│ │ │ │ +
300 unsigned short _isFinalized : 1;
│ │ │ │ +
301
│ │ │ │ +
302 unsigned short _isManifold : 1;
│ │ │ │ +
303 unsigned short _isBoundary : 1;
│ │ │ │ +
304
│ │ │ │ +
305 unsigned short _hasFaceSizes : 1;
│ │ │ │ +
306 unsigned short _hasEdgeSharpness : 1;
│ │ │ │ +
307
│ │ │ │ +
308 short _numFaces;
│ │ │ │ +
309 float _vertSharpness;
│ │ │ │ +
310
│ │ │ │ +
311 FloatBuffer _faceEdgeSharpness;
│ │ │ │ +
312 IntBuffer _faceSizeOffsets;
│ │ │ │ +
314};
│ │ │ │ +
│ │ │ │ +
315
│ │ │ │ +
316//
│ │ │ │ +
317// Public inline methods for simple assignment:
│ │ │ │ +
318//
│ │ │ │ +
319inline bool
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
321 return _isValid;
│ │ │ │ +
322}
│ │ │ │ +
│ │ │ │ +
323
│ │ │ │ +
324inline void
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
326 _isManifold = isManifold;
│ │ │ │ +
327}
│ │ │ │ +
│ │ │ │ +
328inline bool
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
330 return _isManifold;
│ │ │ │ +
331}
│ │ │ │ +
│ │ │ │ +
332
│ │ │ │ +
333inline void
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
335 _isBoundary = isBoundary;
│ │ │ │ +
336}
│ │ │ │ +
│ │ │ │ +
337inline bool
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
339 return _isBoundary;
│ │ │ │ +
340}
│ │ │ │ +
│ │ │ │ +
341
│ │ │ │ +
342//
│ │ │ │ +
343// Public inline methods involving sizes of incident faces:
│ │ │ │ +
344//
│ │ │ │ +
345inline bool
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
347 return _hasFaceSizes;
│ │ │ │ +
348}
│ │ │ │ +
│ │ │ │ +
349inline void
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
351 _hasFaceSizes = false;
│ │ │ │ +
352}
│ │ │ │ +
│ │ │ │ +
353
│ │ │ │ +
354inline void
│ │ │ │ +
│ │ │ │ +
355VertexDescriptor::SetIncidentFaceSize(int incFaceIndex, int faceSize) {
│ │ │ │ +
356
│ │ │ │ +
357 if (!_hasFaceSizes) initFaceSizes();
│ │ │ │ +
358
│ │ │ │ +
359 _faceSizeOffsets[incFaceIndex] = faceSize;
│ │ │ │ +
360}
│ │ │ │ +
│ │ │ │ +
361inline int
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
363
│ │ │ │ +
364 return _isFinalized ?
│ │ │ │ +
365 (_faceSizeOffsets[incFaceIndex+1] - _faceSizeOffsets[incFaceIndex]) :
│ │ │ │ +
366 _faceSizeOffsets[incFaceIndex];
│ │ │ │ +
367}
│ │ │ │ +
│ │ │ │ +
368
│ │ │ │ +
369//
│ │ │ │ +
370// Public inline methods involving vertex sharpness:
│ │ │ │ +
371//
│ │ │ │ +
372inline bool
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
374 return _vertSharpness > 0.0f;
│ │ │ │ +
375}
│ │ │ │ +
│ │ │ │ +
376inline void
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
378 _vertSharpness = 0.0f;
│ │ │ │ +
379}
│ │ │ │ +
│ │ │ │ +
380
│ │ │ │ +
381inline void
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
383 _vertSharpness = vertSharpness;
│ │ │ │ +
384}
│ │ │ │ +
│ │ │ │ +
385inline float
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
387 return _vertSharpness;
│ │ │ │ +
388}
│ │ │ │ +
│ │ │ │ +
389
│ │ │ │ +
390//
│ │ │ │ +
391// Public inline methods involving vertex sharpness:
│ │ │ │ +
392//
│ │ │ │ +
393inline bool
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
395 return _hasEdgeSharpness;
│ │ │ │ +
396}
│ │ │ │ +
│ │ │ │ +
397inline void
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
399 _hasEdgeSharpness = false;
│ │ │ │ +
400}
│ │ │ │ +
│ │ │ │ +
401
│ │ │ │ +
402inline void
│ │ │ │ +
│ │ │ │ +
403VertexDescriptor::SetManifoldEdgeSharpness(int edgeIndex, float sharpness) {
│ │ │ │ +
404
│ │ │ │ +
405 if (!_hasEdgeSharpness) initEdgeSharpness();
│ │ │ │ +
406
│ │ │ │ +
407 // Assign the leading edge of the face after the edge (even index):
│ │ │ │ +
408 if (edgeIndex < _numFaces) {
│ │ │ │ +
409 _faceEdgeSharpness[2*edgeIndex] = sharpness;
│ │ │ │ +
410 }
│ │ │ │ +
411
│ │ │ │ +
412 // Assign the trailing edge of the face before the edge (odd index):
│ │ │ │ +
413 if (edgeIndex > 0) {
│ │ │ │ +
414 _faceEdgeSharpness[2*edgeIndex-1] = sharpness;
│ │ │ │ +
415 } else if (!IsBoundary()) {
│ │ │ │ +
416 _faceEdgeSharpness[2*_numFaces-1] = sharpness;
│ │ │ │ +
417 }
│ │ │ │ +
418}
│ │ │ │ +
│ │ │ │ +
419inline float
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
421
│ │ │ │ +
422 // All edges are first of the pair (even index) except last of boundary
│ │ │ │ +
423 return _faceEdgeSharpness[2*edgeIndex - (edgeIndex == _numFaces)];
│ │ │ │ +
424}
│ │ │ │ +
│ │ │ │ +
425
│ │ │ │ +
426inline void
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
428 float leadingEdgeSharpness, float trailingEdgeSharpness) {
│ │ │ │ +
429
│ │ │ │ +
430 if (!_hasEdgeSharpness) initEdgeSharpness();
│ │ │ │ +
431
│ │ │ │ +
432 _faceEdgeSharpness[2*faceIndex ] = leadingEdgeSharpness;
│ │ │ │ +
433 _faceEdgeSharpness[2*faceIndex+1] = trailingEdgeSharpness;
│ │ │ │ +
434}
│ │ │ │ +
│ │ │ │ +
435inline void
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
437 float * leadingEdgeSharpness, float * trailingEdgeSharpness) const {
│ │ │ │ +
438
│ │ │ │ +
439 *leadingEdgeSharpness = _faceEdgeSharpness[2*faceIndex];
│ │ │ │ +
440 *trailingEdgeSharpness = _faceEdgeSharpness[2*faceIndex+1];
│ │ │ │ +
441}
│ │ │ │ +
│ │ │ │ +
442
│ │ │ │ +
443} // end namespace Bfr
│ │ │ │ +
444
│ │ │ │ +
445} // end namespace OPENSUBDIV_VERSION
│ │ │ │ +
446using namespace OPENSUBDIV_VERSION;
│ │ │ │ +
447} // end namespace OpenSubdiv
│ │ │ │ +
448
│ │ │ │ +
449#endif /* OPENSUBDIV3_BFR_VERTEX_DESCRIPTOR_H */
│ │ │ │ │ │ │ │ -
Simple class defining the 2D parameterization of a face.
│ │ │ │ -
int GetFaceSize() const
Returns the size (number of vertices) of the corresponding face.
│ │ │ │ -
void GetVertexCoord(int vertexIndex, REAL uvCoord[2]) const
Returns the (u,v) coordinate of a given vertex.
│ │ │ │ -
Encapsulates a specific tessellation pattern of a Parameterization.
│ │ │ │ -
int GetFaceSize() const
Return the size of the face.
│ │ │ │ -
int GetNumBoundaryCoords() const
Return the number of boundary coordinates.
│ │ │ │ - │ │ │ │ -
void TransformFacetCoordIndices(int facetTuples[], int const boundaryIndices[], int const interiorIndices[])
Reassign all facet coordinate indices.
│ │ │ │ -
int GetCoordStride() const
Return the number of elements between each coordinate.
│ │ │ │ -
int GetNumEdgeCoords(int edge) const
Return the number of coordinates within a given edge (excluding those at its end vertices)
│ │ │ │ -
int GetInteriorCoords(REAL coordTuples[]) const
Retrieve the coordinates for the boundary.
│ │ │ │ -
int GetFacetStride() const
Return the number of elements between each facet.
│ │ │ │ -
bool IsUniform() const
Return if the pattern is uniform.
│ │ │ │ -
int GetNumCoords() const
Return the number of coordinates in the entire pattern.
│ │ │ │ -
int GetCoords(REAL coordTuples[]) const
Retrieve the coordinates for the entire pattern.
│ │ │ │ -
void TransformFacetCoordIndices(int facetTuples[], int commonOffset)
Apply a common offset to all facet coordinate indices.
│ │ │ │ -
Tessellation(Parameterization const &p, int numRates, int const rates[], Options const &options=Options())
General constructor providing multiple tessellation rates for a non-uniform tessellation.
│ │ │ │ -
Parameterization GetParameterization() const
Return the Parameterization.
│ │ │ │ -
void TransformFacetCoordIndices(int facetTuples[], int const boundaryIndices[], int interiorOffset)
Reassign indices of boundary coordinates while offseting those of interior coordinates.
│ │ │ │ -
int GetFacetSize() const
Return the number of indices assigned to each facet.
│ │ │ │ -
Tessellation()=delete
Default construction is unavailable.
│ │ │ │ -
Tessellation(Parameterization const &p, int uniformRate, Options const &options=Options())
Simple constructor providing a single uniform tessellation rate.
│ │ │ │ -
int GetFacets(int facetTuples[]) const
Retrieve the facet indices for the entire pattern.
│ │ │ │ -
int GetNumFacets() const
Return the number of facets in the entire pattern.
│ │ │ │ -
int GetNumInteriorCoords() const
Return the number of interior coordinates.
│ │ │ │ -
int GetVertexCoord(int vertex, REAL coordTuples[]) const
Retrieve the coordinate for a given vertex of the face.
│ │ │ │ -
int GetBoundaryCoords(REAL coordTuples[]) const
Retrieve the coordinates for the boundary.
│ │ │ │ - │ │ │ │ -
int GetRates(int rates[]) const
Retrieve the rates assigned.
│ │ │ │ -
bool IsValid() const
Return true if correctly initialized.
│ │ │ │ -
Tessellation & operator=(Tessellation const &)=delete
│ │ │ │ -
int GetEdgeCoords(int edge, REAL coordTuples[]) const
Retrieve the coordinates for a given edge of the face (excluding those at its end vertices)
│ │ │ │ -
Options configure a Tessellation to specify the nature of both its results and the structure of the c...
│ │ │ │ - │ │ │ │ -
int GetCoordStride() const
Return the stride between (u,v) pairs.
│ │ │ │ -
Options & SetFacetSize(int numIndices)
Assign the number of indices per facet (must be 3 or 4, default is 3)
│ │ │ │ -
int GetFacetStride() const
Return the stride between facets.
│ │ │ │ - │ │ │ │ -
Options & SetCoordStride(int stride)
Assign the stride between (u,v) pairs (default is 2)
│ │ │ │ -
Options & SetFacetStride(int stride)
Assign the stride between facets (default is facet size)
│ │ │ │ -
bool PreserveQuads() const
Return if preservation of quads is set.
│ │ │ │ +
Simple class used by subclasses of SurfaceFactory to describe a vertex.
│ │ │ │ +
float GetVertexSharpness() const
Return the sharpness of the vertex.
│ │ │ │ +
bool Finalize()
Terminate the sequence of specifications.
│ │ │ │ +
void SetManifold(bool isManifold)
Declare the vertex neighborhood as manifold (ordered)
│ │ │ │ +
bool Initialize(int numIncidentFaces)
Initialize specification with the number of incident faces.
│ │ │ │ +
bool IsManifold() const
Return if vertex neighborhood is manifold.
│ │ │ │ +
bool HasEdgeSharpness() const
Return if sharpness was assigned to the incident edges.
│ │ │ │ +
int GetIncidentFaceSize(int faceIndex) const
Return the size of an incident face.
│ │ │ │ +
float GetManifoldEdgeSharpness(int edgeIndex) const
Return the sharpness assigned to a manifold edge.
│ │ │ │ +
void SetIncidentFaceEdgeSharpness(int faceIndex, float leadingEdgeSharp, float trailingEdgeSharp)
Assign sharpness to the edges of an incident face.
│ │ │ │ +
bool HasVertexSharpness() const
Return if sharpness was assigned to the vertex.
│ │ │ │ +
void ClearIncidentFaceSizes()
Remove any assigned sizes of incident faces.
│ │ │ │ +
void SetVertexSharpness(float sharpness)
Assign sharpness to the vertex.
│ │ │ │ +
void ClearVertexSharpness()
Remove any sharpness assigned to the vertex.
│ │ │ │ +
void ClearEdgeSharpness()
Remove any sharpness assigned to the incident edges.
│ │ │ │ +
void GetIncidentFaceEdgeSharpness(int faceIndex, float *leadingEdgeSharp, float *trailingEdgeSharp) const
Return the sharpness assigned to edges of an incident face.
│ │ │ │ +
bool IsBoundary() const
Return if vertex neighborhood is on a boundary.
│ │ │ │ +
bool IsValid() const
Return if instance is valid.
│ │ │ │ +
bool HasIncidentFaceSizes() const
Return if the sizes of incident faces are assigned.
│ │ │ │ +
void SetBoundary(bool isOnBoundary)
Declare the vertex neighborhood as being on a boundary.
│ │ │ │ +
void SetIncidentFaceSize(int faceIndex, int faceSize)
Assign the size of an incident face.
│ │ │ │ +
void SetManifoldEdgeSharpness(int edgeIndex, float edgeSharpness)
Assign sharpness to the edge of a manifold neighborhood.
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,12 +1,12 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ -tessellation.h │ │ │ │ │ +vertexDescriptor.h │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// │ │ │ │ │ 2// Copyright 2021 Pixar │ │ │ │ │ 3// │ │ │ │ │ 4// Licensed under the Apache License, Version 2.0 (the "Apache License") │ │ │ │ │ 5// with the following modification; you may not use this file except in │ │ │ │ │ 6// compliance with the Apache License and the following modification to it: │ │ │ │ │ @@ -24,367 +24,446 @@ │ │ │ │ │ 18// Unless required by applicable law or agreed to in writing, software │ │ │ │ │ 19// distributed under the Apache License with the above modification is │ │ │ │ │ 20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY │ │ │ │ │ 21// KIND, either express or implied. See the Apache License for the specific │ │ │ │ │ 22// language governing permissions and limitations under the Apache License. │ │ │ │ │ 23// │ │ │ │ │ 24 │ │ │ │ │ -25#ifndef OPENSUBDIV3_BFR_TESSELLATION_H │ │ │ │ │ -26#define OPENSUBDIV3_BFR_TESSELLATION_H │ │ │ │ │ +25#ifndef OPENSUBDIV3_BFR_VERTEX_DESCRIPTOR_H │ │ │ │ │ +26#define OPENSUBDIV3_BFR_VERTEX_DESCRIPTOR_H │ │ │ │ │ 27 │ │ │ │ │ 28#include "../version.h" │ │ │ │ │ 29 │ │ │ │ │ -30#include "../bfr/parameterization.h" │ │ │ │ │ +30#include "../vtr/stackBuffer.h" │ │ │ │ │ 31 │ │ │ │ │ 32namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ 33namespace OPENSUBDIV_VERSION { │ │ │ │ │ 34 │ │ │ │ │ 35namespace Bfr { │ │ │ │ │ 36 │ │ │ │ │ -_5_1class _T_e_s_s_e_l_l_a_t_i_o_n { │ │ │ │ │ -52public: │ │ │ │ │ -_6_5 class _O_p_t_i_o_n_s { │ │ │ │ │ -66 public: │ │ │ │ │ -_6_7 _O_p_t_i_o_n_s() : _preserveQuads(false), _facetSize4(false), │ │ │ │ │ -68 _coordStride(0), _facetStride(0) { } │ │ │ │ │ -69 │ │ │ │ │ -72 _O_p_t_i_o_n_s & _P_r_e_s_e_r_v_e_Q_u_a_d_s(bool on); │ │ │ │ │ -_7_4 bool _P_r_e_s_e_r_v_e_Q_u_a_d_s() const { return _preserveQuads; } │ │ │ │ │ -75 │ │ │ │ │ -78 _O_p_t_i_o_n_s & _S_e_t_F_a_c_e_t_S_i_z_e(int numIndices); │ │ │ │ │ -79 // @brief Return the number of indices per facet │ │ │ │ │ -_8_0 int _G_e_t_F_a_c_e_t_S_i_z_e() const { return 3 + (int)_facetSize4; } │ │ │ │ │ -81 │ │ │ │ │ -83 _O_p_t_i_o_n_s & _S_e_t_F_a_c_e_t_S_t_r_i_d_e(int stride); │ │ │ │ │ -_8_5 int _G_e_t_F_a_c_e_t_S_t_r_i_d_e() const { return _facetStride; } │ │ │ │ │ -86 │ │ │ │ │ -88 _O_p_t_i_o_n_s & _S_e_t_C_o_o_r_d_S_t_r_i_d_e(int stride); │ │ │ │ │ -_9_0 int _G_e_t_C_o_o_r_d_S_t_r_i_d_e() const { return _coordStride; } │ │ │ │ │ -91 │ │ │ │ │ -92 private: │ │ │ │ │ -93 unsigned int _preserveQuads : 1; │ │ │ │ │ -94 unsigned int _facetSize4 : 1; │ │ │ │ │ -95 │ │ │ │ │ -96 short _coordStride; │ │ │ │ │ -97 short _facetStride; │ │ │ │ │ -98 }; │ │ │ │ │ -99 │ │ │ │ │ -100public: │ │ │ │ │ -102 │ │ │ │ │ -111 │ │ │ │ │ -_1_1_8 _T_e_s_s_e_l_l_a_t_i_o_n(_P_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n const & p, int uniformRate, │ │ │ │ │ -119 _O_p_t_i_o_n_s const & options = _O_p_t_i_o_n_s()); │ │ │ │ │ -120 │ │ │ │ │ -_1_5_8 _T_e_s_s_e_l_l_a_t_i_o_n(_P_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n const & p, int numRates, int const rates[], │ │ │ │ │ -159 _O_p_t_i_o_n_s const & options = _O_p_t_i_o_n_s()); │ │ │ │ │ -160 │ │ │ │ │ -_1_6_2 bool _I_s_V_a_l_i_d() const { return _isValid; } │ │ │ │ │ -163 │ │ │ │ │ -_1_6_5 _T_e_s_s_e_l_l_a_t_i_o_n() = delete; │ │ │ │ │ -166 │ │ │ │ │ -_1_6_7 _T_e_s_s_e_l_l_a_t_i_o_n(_T_e_s_s_e_l_l_a_t_i_o_n const &) = delete; │ │ │ │ │ -_1_6_8 _T_e_s_s_e_l_l_a_t_i_o_n & _o_p_e_r_a_t_o_r_=(_T_e_s_s_e_l_l_a_t_i_o_n const &) = delete; │ │ │ │ │ -_1_6_9 _~_T_e_s_s_e_l_l_a_t_i_o_n(); │ │ │ │ │ -171 │ │ │ │ │ -173 │ │ │ │ │ -177 │ │ │ │ │ -_1_7_9 _P_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n _G_e_t_P_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n() const { return _param; } │ │ │ │ │ -180 │ │ │ │ │ -_1_8_2 int _G_e_t_F_a_c_e_S_i_z_e() const { return _param._G_e_t_F_a_c_e_S_i_z_e(); } │ │ │ │ │ -183 │ │ │ │ │ -_1_8_5 int _G_e_t_R_a_t_e_s(int rates[]) const; │ │ │ │ │ -186 │ │ │ │ │ -_1_8_8 bool _I_s_U_n_i_f_o_r_m() const { return _isUniform; } │ │ │ │ │ -190 │ │ │ │ │ -192 │ │ │ │ │ +50// │ │ │ │ │ +51// WIP - need to migrate some of these comments into Doxygen │ │ │ │ │ +52// - others will be moved to the external documentation │ │ │ │ │ +53// │ │ │ │ │ +54// It is used by subclasses of SurfaceFactory to provide a complete │ │ │ │ │ +55// topological description for each vertex of a face, i.e. invoked via │ │ │ │ │ +56// the virtual method: │ │ │ │ │ +57// │ │ │ │ │ +58// int populateFaceVertexDescriptor(Index baseFace, │ │ │ │ │ +59// int cornerVertex, │ │ │ │ │ +60// VertexDescriptor & v) const; │ │ │ │ │ +61// │ │ │ │ │ +62// Assignment of the full topology can be involved in the presence of │ │ │ │ │ +63// irregular faces, non-manifold topology or creasing around a vertex, but │ │ │ │ │ +64// many cases will be simple. For example, to specify a regular boundary │ │ │ │ │ +65// vertex of a Catmark mesh without any optional sharpness: │ │ │ │ │ +66// │ │ │ │ │ +67// int numIncidentFaces = 2; │ │ │ │ │ +68// bool vertexOnBoundary = true; │ │ │ │ │ +69// │ │ │ │ │ +70// vd.Initialize(numIncidentFaces); │ │ │ │ │ +71// vd.SetManifold(true); │ │ │ │ │ +72// vd.SetBoundary(vertexOnBoundary); │ │ │ │ │ +73// vd.ClearIncidentFaceSizes(); │ │ │ │ │ +74// vd.Finalize(); │ │ │ │ │ +75// │ │ │ │ │ +76// For a more general example, to assign a vertex of some valence whose │ │ │ │ │ +77// incident faces are of different sizes (e.g. required when triangles │ │ │ │ │ +78// appear around a vertex in an otherwise quad-dominant Catmark mesh): │ │ │ │ │ +79// │ │ │ │ │ +80// int numIncidentFaces = meshVertex.GetNumIncidentFaces(); │ │ │ │ │ +81// bool vertexOnBoundary = meshVertex.IsBoundar(); │ │ │ │ │ +82// │ │ │ │ │ +83// vd.Initialize(numIncidentFaces); │ │ │ │ │ +84// vd.SetManifold(true); │ │ │ │ │ +85// vd.SetBoundary(vertexOnBoundary); │ │ │ │ │ +86// │ │ │ │ │ +87// for (int i = 0; i < numIncidentFaces; ++i) { │ │ │ │ │ +88// vd.SetIncidentFaceSize(i, meshVertex.GetIncidentFaceSize(i)); │ │ │ │ │ +89// } │ │ │ │ │ +90// vd.Finalize(); │ │ │ │ │ +91// │ │ │ │ │ +92// These examples specify the incident faces as forming a manifold ring │ │ │ │ │ +93// (or half-ring) around the vertex, i.e. they can be specified as a │ │ │ │ │ +94// continuous, connected sequence in counter-clockwise order (and also │ │ │ │ │ +95// without degeneracies). In the case of a boundary vertex, the first │ │ │ │ │ +96// face must be on the leading edge of the boundary while the last is on │ │ │ │ │ +97// the trailing edge. For an interior vertex, which face is specified │ │ │ │ │ +98// first does not matter (since the set is periodic). │ │ │ │ │ +99// │ │ │ │ │ +100// In both cases, the location of the base face in this sequence -- the │ │ │ │ │ +101// face whose corner vertex is being described here -- must be specified │ │ │ │ │ +102// in the return value to populateFaceVertexDescriptor() (e.g. when a │ │ │ │ │ +103// boundary vertex has 3 incident faces, a return value of 0, 1 or 2 │ │ │ │ │ +104// will indicate which is the base face). │ │ │ │ │ +105// │ │ │ │ │ +106// The corresponding methods to specify mesh control vertex indices (or │ │ │ │ │ +107// face-varying indices) complete the specification of the neighborhood: │ │ │ │ │ +108// │ │ │ │ │ +109// int getFaceCornerVertexIndices(Index baseFace, int cornerVertex, │ │ │ │ │ +110// Index vertexIndices[]) const; │ │ │ │ │ +111// │ │ │ │ │ +112// int getFaceCornerFVarValueIndices(Index baseFace, int cornerVertex, │ │ │ │ │ +113// Index fvarValueIndices[], │ │ │ │ │ +114// int fvarChannel) const; │ │ │ │ │ +115// │ │ │ │ │ +116// and are invoked by the Factory when needed. │ │ │ │ │ +117// │ │ │ │ │ +118// For each incident face, the indices for all vertices of that face are │ │ │ │ │ +119// to be specified (not the one-ring or some other subset). These indices │ │ │ │ │ +120// must also be specified in an orientation relative to the vertex, i.e. │ │ │ │ │ +121// for a vertex A and an incident face with face-vertices that may be │ │ │ │ │ +122// stored internally as {D, C, A, B}, they must be specified with A first │ │ │ │ │ +123// as {A, B, C, D}. This may seem a bit cumbersome, but it has clear │ │ │ │ │ +124// advantages when dealing with face-varying indices and unordered faces. │ │ │ │ │ +125// │ │ │ │ │ +126// More compact ways of specifying vertex indices for ordered, manifold │ │ │ │ │ +127// cases may be worth exploring in future, but face-varying indices and │ │ │ │ │ +128// non-manifold (unordered) vertices will always require such a full set, │ │ │ │ │ +129// so both methods will need to co-exist. │ │ │ │ │ +130// │ │ │ │ │ +_1_3_1class _V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r { │ │ │ │ │ +132public: │ │ │ │ │ +133 // The full declaration must be enclosed by calls to these methods: │ │ │ │ │ +134 // │ │ │ │ │ +135 // Note that vertex valences or face sizes in excess of those defined │ │ │ │ │ +136 // in Bfr::Limits (typically 16-bits) are not valid. When specifying │ │ │ │ │ +137 // values in excess of these limits, initialization will fail and/or │ │ │ │ │ +138 // the descriptor will be marked invalid and finalization will fail. │ │ │ │ │ +139 // │ │ │ │ │ +140 │ │ │ │ │ +142 │ │ │ │ │ +149 │ │ │ │ │ +_1_5_1 bool _I_n_i_t_i_a_l_i_z_e(int numIncidentFaces); │ │ │ │ │ +152 │ │ │ │ │ +_1_5_4 bool _F_i_n_a_l_i_z_e(); │ │ │ │ │ +155 │ │ │ │ │ +157 bool _I_s_V_a_l_i_d() const; │ │ │ │ │ +159 │ │ │ │ │ +160 // │ │ │ │ │ +161 // WIP - need to migrate these comments into Doxygen │ │ │ │ │ +162 // │ │ │ │ │ +163 // Three groups of methods describe the topology around a vertex: │ │ │ │ │ +164 // - simple properties (vertex is a boundary, manifold, etc.) │ │ │ │ │ +165 // - sizes of incident faces (constant or size for each face) │ │ │ │ │ +166 // - sharpness of the vertex and its incident edges (optional) │ │ │ │ │ +167 // │ │ │ │ │ +168 │ │ │ │ │ +169 // Manifold and boundary conditions: │ │ │ │ │ +170 // │ │ │ │ │ +171 // The manifold property is a strict condition but preferred for │ │ │ │ │ +172 // efficiency and is usually available from common connected mesh │ │ │ │ │ +173 // representations. When declaring the topology as "manifold", │ │ │ │ │ +174 // the Factory assumes the following: │ │ │ │ │ +175 // │ │ │ │ │ +176 // - all incident faces are "ordered" (counter-clockwise) │ │ │ │ │ +177 // - all incident faces are consistently oriented │ │ │ │ │ +178 // - all incident edges are non-degenerate │ │ │ │ │ +179 // │ │ │ │ │ +180 // If not certain that all of these conditions are met, it is best │ │ │ │ │ +181 // to not declare manifold -- leaving the Factory to make sense of │ │ │ │ │ +182 // the set of incident faces from the face-vertex indices that are │ │ │ │ │ +183 // provided elsewhere. │ │ │ │ │ +184 // │ │ │ │ │ +185 │ │ │ │ │ +187 │ │ │ │ │ +191 │ │ │ │ │ +193 void _S_e_t_M_a_n_i_f_o_l_d(bool isManifold); │ │ │ │ │ +194 │ │ │ │ │ +196 void _S_e_t_B_o_u_n_d_a_r_y(bool isOnBoundary); │ │ │ │ │ +197 │ │ │ │ │ +199 void _S_e_t_I_n_c_i_d_e_n_t_F_a_c_e_S_i_z_e(int faceIndex, int faceSize); │ │ │ │ │ +200 │ │ │ │ │ +202 void _C_l_e_a_r_I_n_c_i_d_e_n_t_F_a_c_e_S_i_z_e_s(); │ │ │ │ │ 203 │ │ │ │ │ -_2_0_5 int _G_e_t_N_u_m_C_o_o_r_d_s() const { return _numInteriorPoints + _numBoundaryPoints; │ │ │ │ │ -} │ │ │ │ │ +205 void _S_e_t_V_e_r_t_e_x_S_h_a_r_p_n_e_s_s(float sharpness); │ │ │ │ │ 206 │ │ │ │ │ -_2_0_8 int _G_e_t_C_o_o_r_d_S_t_r_i_d_e() const { return _coordStride; } │ │ │ │ │ +208 void _C_l_e_a_r_V_e_r_t_e_x_S_h_a_r_p_n_e_s_s(); │ │ │ │ │ 209 │ │ │ │ │ -_2_1_1 int _G_e_t_N_u_m_B_o_u_n_d_a_r_y_C_o_o_r_d_s() const { return _numBoundaryPoints; } │ │ │ │ │ -212 │ │ │ │ │ -_2_1_4 int _G_e_t_N_u_m_I_n_t_e_r_i_o_r_C_o_o_r_d_s() const { return _numInteriorPoints; } │ │ │ │ │ -215 │ │ │ │ │ -_2_1_8 int _G_e_t_N_u_m_E_d_g_e_C_o_o_r_d_s(int edge) const { return _outerRates[edge] - 1; } │ │ │ │ │ -219 │ │ │ │ │ -221 template │ │ │ │ │ -222 int _G_e_t_C_o_o_r_d_s(REAL coordTuples[]) const; │ │ │ │ │ -223 │ │ │ │ │ -225 template │ │ │ │ │ -_2_2_6 int _G_e_t_B_o_u_n_d_a_r_y_C_o_o_r_d_s(REAL coordTuples[]) const; │ │ │ │ │ -227 │ │ │ │ │ -229 template │ │ │ │ │ -_2_3_0 int _G_e_t_I_n_t_e_r_i_o_r_C_o_o_r_d_s(REAL coordTuples[]) const; │ │ │ │ │ -231 │ │ │ │ │ -233 template │ │ │ │ │ -234 int _G_e_t_V_e_r_t_e_x_C_o_o_r_d(int vertex, REAL coordTuples[]) const; │ │ │ │ │ -235 │ │ │ │ │ -238 template │ │ │ │ │ -_2_3_9 int _G_e_t_E_d_g_e_C_o_o_r_d_s(int edge, REAL coordTuples[]) const; │ │ │ │ │ -241 │ │ │ │ │ -243 │ │ │ │ │ -253 │ │ │ │ │ -_2_5_5 int _G_e_t_N_u_m_F_a_c_e_t_s() const { return _numFacets; } │ │ │ │ │ -256 │ │ │ │ │ -_2_5_8 int _G_e_t_F_a_c_e_t_S_i_z_e() const { return _facetSize; } │ │ │ │ │ -259 │ │ │ │ │ -_2_6_1 int _G_e_t_F_a_c_e_t_S_t_r_i_d_e() const { return _facetStride; } │ │ │ │ │ -262 │ │ │ │ │ -_2_6_4 int _G_e_t_F_a_c_e_t_s(int facetTuples[]) const; │ │ │ │ │ +221 void _S_e_t_M_a_n_i_f_o_l_d_E_d_g_e_S_h_a_r_p_n_e_s_s(int edgeIndex, float edgeSharpness); │ │ │ │ │ +222 │ │ │ │ │ +238 void _S_e_t_I_n_c_i_d_e_n_t_F_a_c_e_E_d_g_e_S_h_a_r_p_n_e_s_s(int faceIndex, float leadingEdgeSharp, │ │ │ │ │ +239 float trailingEdgeSharp); │ │ │ │ │ +240 │ │ │ │ │ +242 void _C_l_e_a_r_E_d_g_e_S_h_a_r_p_n_e_s_s(); │ │ │ │ │ +244 │ │ │ │ │ +246 │ │ │ │ │ +251 │ │ │ │ │ +253 bool _I_s_M_a_n_i_f_o_l_d() const; │ │ │ │ │ +254 │ │ │ │ │ +256 bool _I_s_B_o_u_n_d_a_r_y() const; │ │ │ │ │ +257 │ │ │ │ │ +259 bool _H_a_s_I_n_c_i_d_e_n_t_F_a_c_e_S_i_z_e_s() const; │ │ │ │ │ +260 │ │ │ │ │ +262 int _G_e_t_I_n_c_i_d_e_n_t_F_a_c_e_S_i_z_e(int faceIndex) const; │ │ │ │ │ +263 │ │ │ │ │ +265 bool _H_a_s_V_e_r_t_e_x_S_h_a_r_p_n_e_s_s() const; │ │ │ │ │ 266 │ │ │ │ │ -268 │ │ │ │ │ -283 │ │ │ │ │ -_2_8_5 void _T_r_a_n_s_f_o_r_m_F_a_c_e_t_C_o_o_r_d_I_n_d_i_c_e_s(int facetTuples[], int commonOffset); │ │ │ │ │ -286 │ │ │ │ │ -_2_8_9 void _T_r_a_n_s_f_o_r_m_F_a_c_e_t_C_o_o_r_d_I_n_d_i_c_e_s(int facetTuples[], │ │ │ │ │ -290 int const boundaryIndices[], │ │ │ │ │ -291 int interiorOffset); │ │ │ │ │ -292 │ │ │ │ │ -_2_9_4 void _T_r_a_n_s_f_o_r_m_F_a_c_e_t_C_o_o_r_d_I_n_d_i_c_e_s(int facetTuples[], │ │ │ │ │ -295 int const boundaryIndices[], │ │ │ │ │ -296 int const interiorIndices[]); │ │ │ │ │ -298 │ │ │ │ │ -299private: │ │ │ │ │ -300 // Private initialization methods: │ │ │ │ │ -301 bool validateArguments(_P_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n const & p, │ │ │ │ │ -302 int nRates, int const rates[], _O_p_t_i_o_n_s const & options); │ │ │ │ │ -303 │ │ │ │ │ -304 void initialize(_P_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n const & p, │ │ │ │ │ -305 int nRates, int const rates[], _O_p_t_i_o_n_s const & options); │ │ │ │ │ -306 │ │ │ │ │ -307 void initializeDefaults(); │ │ │ │ │ -308 int initializeRates(int nRates, int const rates[]); │ │ │ │ │ -309 void initializeInventoryForParamTri(int sumOfOuterRates); │ │ │ │ │ -310 void initializeInventoryForParamQuad(int sumOfOuterRates); │ │ │ │ │ -311 void initializeInventoryForParamQPoly(int sumOfOuterRates); │ │ │ │ │ -312 │ │ │ │ │ -313private: │ │ │ │ │ -314 // Private members: │ │ │ │ │ -315 _P_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n _param; │ │ │ │ │ -316 │ │ │ │ │ -317 unsigned short _isValid : 1; │ │ │ │ │ -318 unsigned short _isUniform : 1; │ │ │ │ │ -319 unsigned short _triangulate : 1; │ │ │ │ │ -320 unsigned short _singleFace : 1; │ │ │ │ │ -321 unsigned short _segmentedFace : 1; │ │ │ │ │ -322 unsigned short _triangleFan : 1; │ │ │ │ │ -323 unsigned short _splitQuad : 1; │ │ │ │ │ -324 │ │ │ │ │ -325 short _facetSize; │ │ │ │ │ -326 int _facetStride; │ │ │ │ │ -327 int _coordStride; │ │ │ │ │ -328 │ │ │ │ │ -329 int _numGivenRates; │ │ │ │ │ -330 int _numBoundaryPoints; │ │ │ │ │ -331 int _numInteriorPoints; │ │ │ │ │ -332 int _numFacets; │ │ │ │ │ -333 │ │ │ │ │ -334 int _innerRates[2]; │ │ │ │ │ -335 int* _outerRates; │ │ │ │ │ -336 int _outerRatesLocal[4]; │ │ │ │ │ -337}; │ │ │ │ │ -338 │ │ │ │ │ -339// │ │ │ │ │ -340// Inline implementations: │ │ │ │ │ -341// │ │ │ │ │ -342inline _T_e_s_s_e_l_l_a_t_i_o_n_:_:_O_p_t_i_o_n_s & │ │ │ │ │ -_3_4_3_T_e_s_s_e_l_l_a_t_i_o_n_:_:_O_p_t_i_o_n_s_:_:_P_r_e_s_e_r_v_e_Q_u_a_d_s(bool on) { │ │ │ │ │ -344 _preserveQuads = on; │ │ │ │ │ -345 return *this; │ │ │ │ │ -346} │ │ │ │ │ -347inline _T_e_s_s_e_l_l_a_t_i_o_n_:_:_O_p_t_i_o_n_s & │ │ │ │ │ -_3_4_8_T_e_s_s_e_l_l_a_t_i_o_n_:_:_O_p_t_i_o_n_s_:_:_S_e_t_F_a_c_e_t_S_i_z_e(int numIndices) { │ │ │ │ │ -349 _facetSize4 = (numIndices == 4); │ │ │ │ │ -350 return *this; │ │ │ │ │ -351} │ │ │ │ │ -352inline _T_e_s_s_e_l_l_a_t_i_o_n_:_:_O_p_t_i_o_n_s & │ │ │ │ │ -_3_5_3_T_e_s_s_e_l_l_a_t_i_o_n_:_:_O_p_t_i_o_n_s_:_:_S_e_t_F_a_c_e_t_S_t_r_i_d_e(int stride) { │ │ │ │ │ -354 _facetStride = (short) stride; │ │ │ │ │ -355 return *this; │ │ │ │ │ -356} │ │ │ │ │ -357inline _T_e_s_s_e_l_l_a_t_i_o_n_:_:_O_p_t_i_o_n_s & │ │ │ │ │ -_3_5_8_T_e_s_s_e_l_l_a_t_i_o_n_:_:_O_p_t_i_o_n_s_:_:_S_e_t_C_o_o_r_d_S_t_r_i_d_e(int stride) { │ │ │ │ │ -359 _coordStride = (short) stride; │ │ │ │ │ -360 return *this; │ │ │ │ │ -361} │ │ │ │ │ -362 │ │ │ │ │ -363template │ │ │ │ │ -364inline int │ │ │ │ │ -_3_6_5_T_e_s_s_e_l_l_a_t_i_o_n_:_:_G_e_t_V_e_r_t_e_x_C_o_o_r_d(int vertex, REAL coord[]) const { │ │ │ │ │ -366 _param._G_e_t_V_e_r_t_e_x_C_o_o_r_d(vertex, coord); │ │ │ │ │ -367 return 1; │ │ │ │ │ -368} │ │ │ │ │ -369 │ │ │ │ │ -370template │ │ │ │ │ -371inline int │ │ │ │ │ -_3_7_2_T_e_s_s_e_l_l_a_t_i_o_n_:_:_G_e_t_C_o_o_r_d_s(REAL coordTuples[]) const { │ │ │ │ │ -373 int nCoords = _G_e_t_B_o_u_n_d_a_r_y_C_o_o_r_d_s(coordTuples); │ │ │ │ │ -374 nCoords += _G_e_t_I_n_t_e_r_i_o_r_C_o_o_r_d_s(coordTuples + nCoords * _coordStride); │ │ │ │ │ -375 return nCoords; │ │ │ │ │ -376} │ │ │ │ │ -377 │ │ │ │ │ -378} // end namespace Bfr │ │ │ │ │ -379 │ │ │ │ │ -380} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ -381using namespace OPENSUBDIV_VERSION; │ │ │ │ │ -382 │ │ │ │ │ -383} // end namespace OpenSubdiv │ │ │ │ │ -384 │ │ │ │ │ -385#endif /* OPENSUBDIV3_BFR_TESSELLATION */ │ │ │ │ │ +268 float _G_e_t_V_e_r_t_e_x_S_h_a_r_p_n_e_s_s() const; │ │ │ │ │ +269 │ │ │ │ │ +271 bool _H_a_s_E_d_g_e_S_h_a_r_p_n_e_s_s() const; │ │ │ │ │ +272 │ │ │ │ │ +274 float _G_e_t_M_a_n_i_f_o_l_d_E_d_g_e_S_h_a_r_p_n_e_s_s(int edgeIndex) const; │ │ │ │ │ +275 │ │ │ │ │ +277 void _G_e_t_I_n_c_i_d_e_n_t_F_a_c_e_E_d_g_e_S_h_a_r_p_n_e_s_s(int faceIndex, │ │ │ │ │ +278 float * leadingEdgeSharp, float * trailingEdgeSharp) const; │ │ │ │ │ +280 │ │ │ │ │ +281protected: │ │ │ │ │ +283 friend class FaceVertex; │ │ │ │ │ +284 │ │ │ │ │ +285 _V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r() { } │ │ │ │ │ +286 _~_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r() { } │ │ │ │ │ +287 │ │ │ │ │ +288 typedef Vtr::internal::StackBuffer IntBuffer; │ │ │ │ │ +289 typedef Vtr::internal::StackBuffer FloatBuffer; │ │ │ │ │ +290 │ │ │ │ │ +291 void initFaceSizes(); │ │ │ │ │ +292 void initEdgeSharpness(); │ │ │ │ │ +294 │ │ │ │ │ +295protected: │ │ │ │ │ +297 // Member variables assigned through the above interface: │ │ │ │ │ +298 unsigned short _isValid : 1; │ │ │ │ │ +299 unsigned short _isInitialized : 1; │ │ │ │ │ +300 unsigned short _isFinalized : 1; │ │ │ │ │ +301 │ │ │ │ │ +302 unsigned short _isManifold : 1; │ │ │ │ │ +303 unsigned short _isBoundary : 1; │ │ │ │ │ +304 │ │ │ │ │ +305 unsigned short _hasFaceSizes : 1; │ │ │ │ │ +306 unsigned short _hasEdgeSharpness : 1; │ │ │ │ │ +307 │ │ │ │ │ +308 short _numFaces; │ │ │ │ │ +309 float _vertSharpness; │ │ │ │ │ +310 │ │ │ │ │ +311 FloatBuffer _faceEdgeSharpness; │ │ │ │ │ +312 IntBuffer _faceSizeOffsets; │ │ │ │ │ +314}; │ │ │ │ │ +315 │ │ │ │ │ +316// │ │ │ │ │ +317// Public inline methods for simple assignment: │ │ │ │ │ +318// │ │ │ │ │ +319inline bool │ │ │ │ │ +_3_2_0_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_I_s_V_a_l_i_d() const { │ │ │ │ │ +321 return _isValid; │ │ │ │ │ +322} │ │ │ │ │ +323 │ │ │ │ │ +324inline void │ │ │ │ │ +_3_2_5_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_S_e_t_M_a_n_i_f_o_l_d(bool isManifold) { │ │ │ │ │ +326 _isManifold = isManifold; │ │ │ │ │ +327} │ │ │ │ │ +328inline bool │ │ │ │ │ +_3_2_9_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_I_s_M_a_n_i_f_o_l_d() const { │ │ │ │ │ +330 return _isManifold; │ │ │ │ │ +331} │ │ │ │ │ +332 │ │ │ │ │ +333inline void │ │ │ │ │ +_3_3_4_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_S_e_t_B_o_u_n_d_a_r_y(bool isBoundary) { │ │ │ │ │ +335 _isBoundary = isBoundary; │ │ │ │ │ +336} │ │ │ │ │ +337inline bool │ │ │ │ │ +_3_3_8_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_I_s_B_o_u_n_d_a_r_y() const { │ │ │ │ │ +339 return _isBoundary; │ │ │ │ │ +340} │ │ │ │ │ +341 │ │ │ │ │ +342// │ │ │ │ │ +343// Public inline methods involving sizes of incident faces: │ │ │ │ │ +344// │ │ │ │ │ +345inline bool │ │ │ │ │ +_3_4_6_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_H_a_s_I_n_c_i_d_e_n_t_F_a_c_e_S_i_z_e_s() const { │ │ │ │ │ +347 return _hasFaceSizes; │ │ │ │ │ +348} │ │ │ │ │ +349inline void │ │ │ │ │ +_3_5_0_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_C_l_e_a_r_I_n_c_i_d_e_n_t_F_a_c_e_S_i_z_e_s() { │ │ │ │ │ +351 _hasFaceSizes = false; │ │ │ │ │ +352} │ │ │ │ │ +353 │ │ │ │ │ +354inline void │ │ │ │ │ +_3_5_5_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_S_e_t_I_n_c_i_d_e_n_t_F_a_c_e_S_i_z_e(int incFaceIndex, int faceSize) { │ │ │ │ │ +356 │ │ │ │ │ +357 if (!_hasFaceSizes) initFaceSizes(); │ │ │ │ │ +358 │ │ │ │ │ +359 _faceSizeOffsets[incFaceIndex] = faceSize; │ │ │ │ │ +360} │ │ │ │ │ +361inline int │ │ │ │ │ +_3_6_2_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_G_e_t_I_n_c_i_d_e_n_t_F_a_c_e_S_i_z_e(int incFaceIndex) const { │ │ │ │ │ +363 │ │ │ │ │ +364 return _isFinalized ? │ │ │ │ │ +365 (_faceSizeOffsets[incFaceIndex+1] - _faceSizeOffsets[incFaceIndex]) : │ │ │ │ │ +366 _faceSizeOffsets[incFaceIndex]; │ │ │ │ │ +367} │ │ │ │ │ +368 │ │ │ │ │ +369// │ │ │ │ │ +370// Public inline methods involving vertex sharpness: │ │ │ │ │ +371// │ │ │ │ │ +372inline bool │ │ │ │ │ +_3_7_3_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_H_a_s_V_e_r_t_e_x_S_h_a_r_p_n_e_s_s() const { │ │ │ │ │ +374 return _vertSharpness > 0.0f; │ │ │ │ │ +375} │ │ │ │ │ +376inline void │ │ │ │ │ +_3_7_7_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_C_l_e_a_r_V_e_r_t_e_x_S_h_a_r_p_n_e_s_s() { │ │ │ │ │ +378 _vertSharpness = 0.0f; │ │ │ │ │ +379} │ │ │ │ │ +380 │ │ │ │ │ +381inline void │ │ │ │ │ +_3_8_2_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_S_e_t_V_e_r_t_e_x_S_h_a_r_p_n_e_s_s(float vertSharpness) { │ │ │ │ │ +383 _vertSharpness = vertSharpness; │ │ │ │ │ +384} │ │ │ │ │ +385inline float │ │ │ │ │ +_3_8_6_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_G_e_t_V_e_r_t_e_x_S_h_a_r_p_n_e_s_s() const { │ │ │ │ │ +387 return _vertSharpness; │ │ │ │ │ +388} │ │ │ │ │ +389 │ │ │ │ │ +390// │ │ │ │ │ +391// Public inline methods involving vertex sharpness: │ │ │ │ │ +392// │ │ │ │ │ +393inline bool │ │ │ │ │ +_3_9_4_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_H_a_s_E_d_g_e_S_h_a_r_p_n_e_s_s() const { │ │ │ │ │ +395 return _hasEdgeSharpness; │ │ │ │ │ +396} │ │ │ │ │ +397inline void │ │ │ │ │ +_3_9_8_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_C_l_e_a_r_E_d_g_e_S_h_a_r_p_n_e_s_s() { │ │ │ │ │ +399 _hasEdgeSharpness = false; │ │ │ │ │ +400} │ │ │ │ │ +401 │ │ │ │ │ +402inline void │ │ │ │ │ +_4_0_3_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_S_e_t_M_a_n_i_f_o_l_d_E_d_g_e_S_h_a_r_p_n_e_s_s(int edgeIndex, float sharpness) { │ │ │ │ │ +404 │ │ │ │ │ +405 if (!_hasEdgeSharpness) initEdgeSharpness(); │ │ │ │ │ +406 │ │ │ │ │ +407 // Assign the leading edge of the face after the edge (even index): │ │ │ │ │ +408 if (edgeIndex < _numFaces) { │ │ │ │ │ +409 _faceEdgeSharpness[2*edgeIndex] = sharpness; │ │ │ │ │ +410 } │ │ │ │ │ +411 │ │ │ │ │ +412 // Assign the trailing edge of the face before the edge (odd index): │ │ │ │ │ +413 if (edgeIndex > 0) { │ │ │ │ │ +414 _faceEdgeSharpness[2*edgeIndex-1] = sharpness; │ │ │ │ │ +415 } else if (!_I_s_B_o_u_n_d_a_r_y()) { │ │ │ │ │ +416 _faceEdgeSharpness[2*_numFaces-1] = sharpness; │ │ │ │ │ +417 } │ │ │ │ │ +418} │ │ │ │ │ +419inline float │ │ │ │ │ +_4_2_0_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_G_e_t_M_a_n_i_f_o_l_d_E_d_g_e_S_h_a_r_p_n_e_s_s(int edgeIndex) const { │ │ │ │ │ +421 │ │ │ │ │ +422 // All edges are first of the pair (even index) except last of boundary │ │ │ │ │ +423 return _faceEdgeSharpness[2*edgeIndex - (edgeIndex == _numFaces)]; │ │ │ │ │ +424} │ │ │ │ │ +425 │ │ │ │ │ +426inline void │ │ │ │ │ +_4_2_7_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_S_e_t_I_n_c_i_d_e_n_t_F_a_c_e_E_d_g_e_S_h_a_r_p_n_e_s_s(int faceIndex, │ │ │ │ │ +428 float leadingEdgeSharpness, float trailingEdgeSharpness) { │ │ │ │ │ +429 │ │ │ │ │ +430 if (!_hasEdgeSharpness) initEdgeSharpness(); │ │ │ │ │ +431 │ │ │ │ │ +432 _faceEdgeSharpness[2*faceIndex ] = leadingEdgeSharpness; │ │ │ │ │ +433 _faceEdgeSharpness[2*faceIndex+1] = trailingEdgeSharpness; │ │ │ │ │ +434} │ │ │ │ │ +435inline void │ │ │ │ │ +_4_3_6_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_G_e_t_I_n_c_i_d_e_n_t_F_a_c_e_E_d_g_e_S_h_a_r_p_n_e_s_s(int faceIndex, │ │ │ │ │ +437 float * leadingEdgeSharpness, float * trailingEdgeSharpness) const { │ │ │ │ │ +438 │ │ │ │ │ +439 *leadingEdgeSharpness = _faceEdgeSharpness[2*faceIndex]; │ │ │ │ │ +440 *trailingEdgeSharpness = _faceEdgeSharpness[2*faceIndex+1]; │ │ │ │ │ +441} │ │ │ │ │ +442 │ │ │ │ │ +443} // end namespace Bfr │ │ │ │ │ +444 │ │ │ │ │ +445} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ +446using namespace OPENSUBDIV_VERSION; │ │ │ │ │ +447} // end namespace OpenSubdiv │ │ │ │ │ +448 │ │ │ │ │ +449#endif /* OPENSUBDIV3_BFR_VERTEX_DESCRIPTOR_H */ │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v │ │ │ │ │ DDeeffiinniittiioonn _l_i_m_i_t_s_._h_:_3_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_P_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n │ │ │ │ │ -Simple class defining the 2D parameterization of a face. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n_._h_:_5_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_P_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n_:_:_G_e_t_F_a_c_e_S_i_z_e │ │ │ │ │ -int GetFaceSize() const │ │ │ │ │ -Returns the size (number of vertices) of the corresponding face. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n_._h_:_1_0_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_P_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n_:_:_G_e_t_V_e_r_t_e_x_C_o_o_r_d │ │ │ │ │ -void GetVertexCoord(int vertexIndex, REAL uvCoord[2]) const │ │ │ │ │ -Returns the (u,v) coordinate of a given vertex. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n │ │ │ │ │ -Encapsulates a specific tessellation pattern of a Parameterization. │ │ │ │ │ -DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_5_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_G_e_t_F_a_c_e_S_i_z_e │ │ │ │ │ -int GetFaceSize() const │ │ │ │ │ -Return the size of the face. │ │ │ │ │ -DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_1_8_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_G_e_t_N_u_m_B_o_u_n_d_a_r_y_C_o_o_r_d_s │ │ │ │ │ -int GetNumBoundaryCoords() const │ │ │ │ │ -Return the number of boundary coordinates. │ │ │ │ │ -DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_2_1_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_~_T_e_s_s_e_l_l_a_t_i_o_n │ │ │ │ │ -~Tessellation() │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_T_r_a_n_s_f_o_r_m_F_a_c_e_t_C_o_o_r_d_I_n_d_i_c_e_s │ │ │ │ │ -void TransformFacetCoordIndices(int facetTuples[], int const boundaryIndices[], │ │ │ │ │ -int const interiorIndices[]) │ │ │ │ │ -Reassign all facet coordinate indices. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_G_e_t_C_o_o_r_d_S_t_r_i_d_e │ │ │ │ │ -int GetCoordStride() const │ │ │ │ │ -Return the number of elements between each coordinate. │ │ │ │ │ -DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_2_0_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_G_e_t_N_u_m_E_d_g_e_C_o_o_r_d_s │ │ │ │ │ -int GetNumEdgeCoords(int edge) const │ │ │ │ │ -Return the number of coordinates within a given edge (excluding those at its │ │ │ │ │ -end vertices) │ │ │ │ │ -DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_2_1_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_G_e_t_I_n_t_e_r_i_o_r_C_o_o_r_d_s │ │ │ │ │ -int GetInteriorCoords(REAL coordTuples[]) const │ │ │ │ │ -Retrieve the coordinates for the boundary. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_G_e_t_F_a_c_e_t_S_t_r_i_d_e │ │ │ │ │ -int GetFacetStride() const │ │ │ │ │ -Return the number of elements between each facet. │ │ │ │ │ -DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_2_6_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_I_s_U_n_i_f_o_r_m │ │ │ │ │ -bool IsUniform() const │ │ │ │ │ -Return if the pattern is uniform. │ │ │ │ │ -DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_1_8_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_G_e_t_N_u_m_C_o_o_r_d_s │ │ │ │ │ -int GetNumCoords() const │ │ │ │ │ -Return the number of coordinates in the entire pattern. │ │ │ │ │ -DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_2_0_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_G_e_t_C_o_o_r_d_s │ │ │ │ │ -int GetCoords(REAL coordTuples[]) const │ │ │ │ │ -Retrieve the coordinates for the entire pattern. │ │ │ │ │ -DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_3_7_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_T_r_a_n_s_f_o_r_m_F_a_c_e_t_C_o_o_r_d_I_n_d_i_c_e_s │ │ │ │ │ -void TransformFacetCoordIndices(int facetTuples[], int commonOffset) │ │ │ │ │ -Apply a common offset to all facet coordinate indices. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_T_e_s_s_e_l_l_a_t_i_o_n │ │ │ │ │ -Tessellation(Parameterization const &p, int numRates, int const rates[], │ │ │ │ │ -Options const &options=Options()) │ │ │ │ │ -General constructor providing multiple tessellation rates for a non-uniform │ │ │ │ │ -tessellation. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_G_e_t_P_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n │ │ │ │ │ -Parameterization GetParameterization() const │ │ │ │ │ -Return the Parameterization. │ │ │ │ │ -DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_1_7_9 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_T_r_a_n_s_f_o_r_m_F_a_c_e_t_C_o_o_r_d_I_n_d_i_c_e_s │ │ │ │ │ -void TransformFacetCoordIndices(int facetTuples[], int const boundaryIndices[], │ │ │ │ │ -int interiorOffset) │ │ │ │ │ -Reassign indices of boundary coordinates while offseting those of interior │ │ │ │ │ -coordinates. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_G_e_t_F_a_c_e_t_S_i_z_e │ │ │ │ │ -int GetFacetSize() const │ │ │ │ │ -Return the number of indices assigned to each facet. │ │ │ │ │ -DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_2_5_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_T_e_s_s_e_l_l_a_t_i_o_n │ │ │ │ │ -Tessellation()=delete │ │ │ │ │ -Default construction is unavailable. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_T_e_s_s_e_l_l_a_t_i_o_n │ │ │ │ │ -Tessellation(Parameterization const &p, int uniformRate, Options const │ │ │ │ │ -&options=Options()) │ │ │ │ │ -Simple constructor providing a single uniform tessellation rate. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_G_e_t_F_a_c_e_t_s │ │ │ │ │ -int GetFacets(int facetTuples[]) const │ │ │ │ │ -Retrieve the facet indices for the entire pattern. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_G_e_t_N_u_m_F_a_c_e_t_s │ │ │ │ │ -int GetNumFacets() const │ │ │ │ │ -Return the number of facets in the entire pattern. │ │ │ │ │ -DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_2_5_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_G_e_t_N_u_m_I_n_t_e_r_i_o_r_C_o_o_r_d_s │ │ │ │ │ -int GetNumInteriorCoords() const │ │ │ │ │ -Return the number of interior coordinates. │ │ │ │ │ -DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_2_1_4 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_G_e_t_V_e_r_t_e_x_C_o_o_r_d │ │ │ │ │ -int GetVertexCoord(int vertex, REAL coordTuples[]) const │ │ │ │ │ -Retrieve the coordinate for a given vertex of the face. │ │ │ │ │ -DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_3_6_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_G_e_t_B_o_u_n_d_a_r_y_C_o_o_r_d_s │ │ │ │ │ -int GetBoundaryCoords(REAL coordTuples[]) const │ │ │ │ │ -Retrieve the coordinates for the boundary. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_T_e_s_s_e_l_l_a_t_i_o_n │ │ │ │ │ -Tessellation(Tessellation const &)=delete │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_G_e_t_R_a_t_e_s │ │ │ │ │ -int GetRates(int rates[]) const │ │ │ │ │ -Retrieve the rates assigned. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_I_s_V_a_l_i_d │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ +Simple class used by subclasses of SurfaceFactory to describe a vertex. │ │ │ │ │ +DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_1_3_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_G_e_t_V_e_r_t_e_x_S_h_a_r_p_n_e_s_s │ │ │ │ │ +float GetVertexSharpness() const │ │ │ │ │ +Return the sharpness of the vertex. │ │ │ │ │ +DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_3_8_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_F_i_n_a_l_i_z_e │ │ │ │ │ +bool Finalize() │ │ │ │ │ +Terminate the sequence of specifications. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_S_e_t_M_a_n_i_f_o_l_d │ │ │ │ │ +void SetManifold(bool isManifold) │ │ │ │ │ +Declare the vertex neighborhood as manifold (ordered) │ │ │ │ │ +DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_3_2_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_I_n_i_t_i_a_l_i_z_e │ │ │ │ │ +bool Initialize(int numIncidentFaces) │ │ │ │ │ +Initialize specification with the number of incident faces. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_I_s_M_a_n_i_f_o_l_d │ │ │ │ │ +bool IsManifold() const │ │ │ │ │ +Return if vertex neighborhood is manifold. │ │ │ │ │ +DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_3_2_9 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_H_a_s_E_d_g_e_S_h_a_r_p_n_e_s_s │ │ │ │ │ +bool HasEdgeSharpness() const │ │ │ │ │ +Return if sharpness was assigned to the incident edges. │ │ │ │ │ +DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_3_9_4 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_G_e_t_I_n_c_i_d_e_n_t_F_a_c_e_S_i_z_e │ │ │ │ │ +int GetIncidentFaceSize(int faceIndex) const │ │ │ │ │ +Return the size of an incident face. │ │ │ │ │ +DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_3_6_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_G_e_t_M_a_n_i_f_o_l_d_E_d_g_e_S_h_a_r_p_n_e_s_s │ │ │ │ │ +float GetManifoldEdgeSharpness(int edgeIndex) const │ │ │ │ │ +Return the sharpness assigned to a manifold edge. │ │ │ │ │ +DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_4_2_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_: │ │ │ │ │ +_S_e_t_I_n_c_i_d_e_n_t_F_a_c_e_E_d_g_e_S_h_a_r_p_n_e_s_s │ │ │ │ │ +void SetIncidentFaceEdgeSharpness(int faceIndex, float leadingEdgeSharp, float │ │ │ │ │ +trailingEdgeSharp) │ │ │ │ │ +Assign sharpness to the edges of an incident face. │ │ │ │ │ +DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_4_2_7 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_H_a_s_V_e_r_t_e_x_S_h_a_r_p_n_e_s_s │ │ │ │ │ +bool HasVertexSharpness() const │ │ │ │ │ +Return if sharpness was assigned to the vertex. │ │ │ │ │ +DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_3_7_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_C_l_e_a_r_I_n_c_i_d_e_n_t_F_a_c_e_S_i_z_e_s │ │ │ │ │ +void ClearIncidentFaceSizes() │ │ │ │ │ +Remove any assigned sizes of incident faces. │ │ │ │ │ +DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_3_5_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_S_e_t_V_e_r_t_e_x_S_h_a_r_p_n_e_s_s │ │ │ │ │ +void SetVertexSharpness(float sharpness) │ │ │ │ │ +Assign sharpness to the vertex. │ │ │ │ │ +DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_3_8_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_C_l_e_a_r_V_e_r_t_e_x_S_h_a_r_p_n_e_s_s │ │ │ │ │ +void ClearVertexSharpness() │ │ │ │ │ +Remove any sharpness assigned to the vertex. │ │ │ │ │ +DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_3_7_7 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_C_l_e_a_r_E_d_g_e_S_h_a_r_p_n_e_s_s │ │ │ │ │ +void ClearEdgeSharpness() │ │ │ │ │ +Remove any sharpness assigned to the incident edges. │ │ │ │ │ +DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_3_9_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_: │ │ │ │ │ +_G_e_t_I_n_c_i_d_e_n_t_F_a_c_e_E_d_g_e_S_h_a_r_p_n_e_s_s │ │ │ │ │ +void GetIncidentFaceEdgeSharpness(int faceIndex, float *leadingEdgeSharp, float │ │ │ │ │ +*trailingEdgeSharp) const │ │ │ │ │ +Return the sharpness assigned to edges of an incident face. │ │ │ │ │ +DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_4_3_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_I_s_B_o_u_n_d_a_r_y │ │ │ │ │ +bool IsBoundary() const │ │ │ │ │ +Return if vertex neighborhood is on a boundary. │ │ │ │ │ +DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_3_3_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_I_s_V_a_l_i_d │ │ │ │ │ bool IsValid() const │ │ │ │ │ -Return true if correctly initialized. │ │ │ │ │ -DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_1_6_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_o_p_e_r_a_t_o_r_= │ │ │ │ │ -Tessellation & operator=(Tessellation const &)=delete │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_G_e_t_E_d_g_e_C_o_o_r_d_s │ │ │ │ │ -int GetEdgeCoords(int edge, REAL coordTuples[]) const │ │ │ │ │ -Retrieve the coordinates for a given edge of the face (excluding those at its │ │ │ │ │ -end vertices) │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_O_p_t_i_o_n_s │ │ │ │ │ -Options configure a Tessellation to specify the nature of both its results and │ │ │ │ │ -the structure of the c... │ │ │ │ │ -DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_6_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_O_p_t_i_o_n_s_:_:_O_p_t_i_o_n_s │ │ │ │ │ -Options() │ │ │ │ │ -DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_6_7 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_O_p_t_i_o_n_s_:_:_G_e_t_C_o_o_r_d_S_t_r_i_d_e │ │ │ │ │ -int GetCoordStride() const │ │ │ │ │ -Return the stride between (u,v) pairs. │ │ │ │ │ -DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_9_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_O_p_t_i_o_n_s_:_:_S_e_t_F_a_c_e_t_S_i_z_e │ │ │ │ │ -Options & SetFacetSize(int numIndices) │ │ │ │ │ -Assign the number of indices per facet (must be 3 or 4, default is 3) │ │ │ │ │ -DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_3_4_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_O_p_t_i_o_n_s_:_:_G_e_t_F_a_c_e_t_S_t_r_i_d_e │ │ │ │ │ -int GetFacetStride() const │ │ │ │ │ -Return the stride between facets. │ │ │ │ │ -DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_8_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_O_p_t_i_o_n_s_:_:_G_e_t_F_a_c_e_t_S_i_z_e │ │ │ │ │ -int GetFacetSize() const │ │ │ │ │ -DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_8_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_O_p_t_i_o_n_s_:_:_S_e_t_C_o_o_r_d_S_t_r_i_d_e │ │ │ │ │ -Options & SetCoordStride(int stride) │ │ │ │ │ -Assign the stride between (u,v) pairs (default is 2) │ │ │ │ │ -DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_3_5_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_O_p_t_i_o_n_s_:_:_S_e_t_F_a_c_e_t_S_t_r_i_d_e │ │ │ │ │ -Options & SetFacetStride(int stride) │ │ │ │ │ -Assign the stride between facets (default is facet size) │ │ │ │ │ -DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_3_5_3 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_T_e_s_s_e_l_l_a_t_i_o_n_:_:_O_p_t_i_o_n_s_:_:_P_r_e_s_e_r_v_e_Q_u_a_d_s │ │ │ │ │ -bool PreserveQuads() const │ │ │ │ │ -Return if preservation of quads is set. │ │ │ │ │ -DDeeffiinniittiioonn _t_e_s_s_e_l_l_a_t_i_o_n_._h_:_7_4 │ │ │ │ │ +Return if instance is valid. │ │ │ │ │ +DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_3_2_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_H_a_s_I_n_c_i_d_e_n_t_F_a_c_e_S_i_z_e_s │ │ │ │ │ +bool HasIncidentFaceSizes() const │ │ │ │ │ +Return if the sizes of incident faces are assigned. │ │ │ │ │ +DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_3_4_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_S_e_t_B_o_u_n_d_a_r_y │ │ │ │ │ +void SetBoundary(bool isOnBoundary) │ │ │ │ │ +Declare the vertex neighborhood as being on a boundary. │ │ │ │ │ +DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_3_3_4 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_S_e_t_I_n_c_i_d_e_n_t_F_a_c_e_S_i_z_e │ │ │ │ │ +void SetIncidentFaceSize(int faceIndex, int faceSize) │ │ │ │ │ +Assign the size of an incident face. │ │ │ │ │ +DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_3_5_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_:_:_S_e_t_M_a_n_i_f_o_l_d_E_d_g_e_S_h_a_r_p_n_e_s_s │ │ │ │ │ +void SetManifoldEdgeSharpness(int edgeIndex, float edgeSharpness) │ │ │ │ │ +Assign sharpness to the edge of a manifold neighborhood. │ │ │ │ │ +DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_4_0_3 │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _b_f_r │ │ │ │ │ - * _t_e_s_s_e_l_l_a_t_i_o_n_._h │ │ │ │ │ + * _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00680_source.html │ │ │ │ @@ -218,15 +218,15 @@ │ │ │ │
145} // end namespace OPENSUBDIV_VERSION
│ │ │ │
146using namespace OPENSUBDIV_VERSION;
│ │ │ │
147
│ │ │ │
148} // end namespace OpenSubdiv
│ │ │ │
149
│ │ │ │
150#endif /* OPENSUBDIV3_BFR_SURFACE_FACTORY_CACHE_H */
│ │ │ │ │ │ │ │ -
Base class providing initialization of a Surface for each face of a mesh.
│ │ │ │ +
Base class providing initialization of a Surface for each face of a mesh.
│ │ │ │
Container used internally by SurfaceFactory to store reusable information.
│ │ │ │ │ │ │ │ │ │ │ │
SurfaceFactoryCache(SurfaceFactoryCache const &)=delete
│ │ │ │
SurfaceFactoryCache & operator=(SurfaceFactoryCache const &)=delete
│ │ │ │
Template for declaring thread-safe subclasses of SurfaceFactoryCache.
│ │ │ │ │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00683.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/bfr/surfaceFactoryMeshAdapter.h File Reference │ │ │ │ +OpenSubdiv: opensubdiv/bfr/surfaceFactory.h File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -90,26 +90,33 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
surfaceFactoryMeshAdapter.h File Reference
│ │ │ │ +
surfaceFactory.h File Reference
│ │ │ │
│ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ +#include "../bfr/surface.h"
│ │ │ │ +#include "../bfr/surfaceFactoryMeshAdapter.h"
│ │ │ │ +#include "../sdc/options.h"
│ │ │ │ +#include "../sdc/types.h"
│ │ │ │ #include <cstdint>
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  SurfaceFactoryMeshAdapter
 Abstract interface adapting SurfaceFactory to a connected mesh representation. More...
class  SurfaceFactory
 Base class providing initialization of a Surface for each face of a mesh. More...
 
class  SurfaceFactory::Options
 Simple set of options assigned to instances of SurfaceFactory. More...
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -118,13 +125,13 @@ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  OpenSubdiv
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION
 
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,25 +1,32 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -surfaceFactoryMeshAdapter.h File Reference │ │ │ │ │ +surfaceFactory.h File Reference │ │ │ │ │ #include "../version.h" │ │ │ │ │ +#include "_._._/_b_f_r_/_s_u_r_f_a_c_e_._h" │ │ │ │ │ +#include "_._._/_b_f_r_/_s_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_._h" │ │ │ │ │ +#include "_._._/_s_d_c_/_o_p_t_i_o_n_s_._h" │ │ │ │ │ +#include "_._._/_s_d_c_/_t_y_p_e_s_._h" │ │ │ │ │ #include │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -class   _S_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r │ │ │ │ │ -  Abstract interface adapting _S_u_r_f_a_c_e_F_a_c_t_o_r_y to a connected mesh │ │ │ │ │ - representation. _M_o_r_e_._._. │ │ │ │ │ +class   _S_u_r_f_a_c_e_F_a_c_t_o_r_y │ │ │ │ │ +  Base class providing initialization of a _S_u_r_f_a_c_e for each face of a │ │ │ │ │ + mesh. _M_o_r_e_._._. │ │ │ │ │ +  │ │ │ │ │ +class   _S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s │ │ │ │ │ +  Simple set of options assigned to instances of _S_u_r_f_a_c_e_F_a_c_t_o_r_y. _M_o_r_e_._._. │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r │ │ │ │ │   │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _b_f_r │ │ │ │ │ - * _s_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_._h │ │ │ │ │ + * _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00683.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -1,3 +1,4 @@ │ │ │ │ │ var a00683 = [ │ │ │ │ │ - ["SurfaceFactoryMeshAdapter", "a00957.html", "a00957"] │ │ │ │ │ + ["SurfaceFactory", "a00941.html", "a00941"], │ │ │ │ │ + ["Options", "a00945.html", "a00945"] │ │ │ │ │ ]; │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00683_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/bfr/surfaceFactoryMeshAdapter.h Source File │ │ │ │ +OpenSubdiv: opensubdiv/bfr/surfaceFactory.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -92,15 +92,15 @@ │ │ │ │
No Matches
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
surfaceFactoryMeshAdapter.h
│ │ │ │ +
surfaceFactory.h
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1//
│ │ │ │
2// Copyright 2021 Pixar
│ │ │ │
3//
│ │ │ │
4// Licensed under the Apache License, Version 2.0 (the "Apache License")
│ │ │ │
5// with the following modification; you may not use this file except in
│ │ │ │ @@ -119,149 +119,412 @@ │ │ │ │
18// Unless required by applicable law or agreed to in writing, software
│ │ │ │
19// distributed under the Apache License with the above modification is
│ │ │ │
20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
│ │ │ │
21// KIND, either express or implied. See the Apache License for the specific
│ │ │ │
22// language governing permissions and limitations under the Apache License.
│ │ │ │
23//
│ │ │ │
24
│ │ │ │ -
25#ifndef OPENSUBDIV3_BFR_SURFACE_FACTORY_ADAPTER_H
│ │ │ │ -
26#define OPENSUBDIV3_BFR_SURFACE_FACTORY_ADAPTER_H
│ │ │ │ +
25#ifndef OPENSUBDIV3_BFR_SURFACE_FACTORY_H
│ │ │ │ +
26#define OPENSUBDIV3_BFR_SURFACE_FACTORY_H
│ │ │ │
27
│ │ │ │
28#include "../version.h"
│ │ │ │
29
│ │ │ │ -
30#include <cstdint>
│ │ │ │ -
31
│ │ │ │ -
32namespace OpenSubdiv {
│ │ │ │ -
33namespace OPENSUBDIV_VERSION {
│ │ │ │ +
30#include "../bfr/surface.h"
│ │ │ │ +
31#include "../bfr/surfaceFactoryMeshAdapter.h"
│ │ │ │ +
32#include "../sdc/options.h"
│ │ │ │ +
33#include "../sdc/types.h"
│ │ │ │
34
│ │ │ │ -
35namespace Bfr {
│ │ │ │ +
35#include <cstdint>
│ │ │ │
36
│ │ │ │ -
37class VertexDescriptor;
│ │ │ │ -
38
│ │ │ │ -
43// SurfaceFactoryMeshAdapter is an abstract class that defines the interface
│ │ │ │ -
44// through which subclasses of SurfaceFactory adapt to a connected mesh
│ │ │ │ -
45// representation. The interface defines methods that describe the mesh
│ │ │ │ -
46// topology and control indices in the neighborhood of a mesh -- from
│ │ │ │ -
47// which the SurfaceFactory to identifies an appropriate limit surface.
│ │ │ │ -
48//
│ │ │ │ -
49// SurfaceFactoryMeshAdapter methods require a subclass to provide a complete
│ │ │ │ -
50// description of the topology around a base face, as well as indices
│ │ │ │ -
51// associated with it (both vertex and face-varying). The intent here is
│ │ │ │ -
52// to keep the number of methods required to a minimum, and also to minimize
│ │ │ │ -
53// the number of invocations required by the factory.
│ │ │ │ -
54//
│ │ │ │ -
55// With the need to support both linear and non-linear cases (for which
│ │ │ │ -
56// linear is trivial by comparison) and the limit surface for both vertex
│ │ │ │ -
57// and face-varying topologies, the result is a small set of methods
│ │ │ │ -
58// covering this matrix of functionality.
│ │ │ │ -
59//
│ │ │ │ -
60// Since face-varying data may differ in topology from the vertex data --
│ │ │ │ -
61// with each set of face-varying data potentially having its own unique
│ │ │ │ -
62// topology -- sets of face-varying data are uniquely distinguished by an
│ │ │ │ -
63// associated integer (a face-varying ID).
│ │ │ │ -
64//
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
66public:
│ │ │ │ -
68 typedef int Index;
│ │ │ │ -
69
│ │ │ │ -
80 typedef std::intptr_t FVarID;
│ │ │ │ -
81
│ │ │ │ -
82protected:
│ │ │ │ - │ │ │ │ -
85 virtual ~SurfaceFactoryMeshAdapter() { }
│ │ │ │ -
87
│ │ │ │ -
88protected:
│ │ │ │ -
90
│ │ │ │ -
94
│ │ │ │ -
96 virtual bool isFaceHole(Index faceIndex) const = 0;
│ │ │ │ -
97
│ │ │ │ -
99 virtual int getFaceSize(Index faceIndex) const = 0;
│ │ │ │ -
101
│ │ │ │ -
103
│ │ │ │ -
111
│ │ │ │ -
113 virtual int getFaceVertexIndices(Index faceIndex,
│ │ │ │ -
114 Index vertexIndices[]) const = 0;
│ │ │ │ -
115
│ │ │ │ -
117 virtual int getFaceFVarValueIndices(Index faceIndex,
│ │ │ │ -
118 FVarID fvarID, Index fvarValueIndices[]) const = 0;
│ │ │ │ +
37namespace OpenSubdiv {
│ │ │ │ +
38namespace OPENSUBDIV_VERSION {
│ │ │ │ +
39
│ │ │ │ +
40namespace Bfr {
│ │ │ │ +
41
│ │ │ │ +
42//
│ │ │ │ +
43// Forward declarations of public and internal classes used by factories:
│ │ │ │ +
44//
│ │ │ │ +
45class SurfaceFactoryCache;
│ │ │ │ +
46class FaceTopology;
│ │ │ │ +
47class FaceSurface;
│ │ │ │ +
48
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
104public:
│ │ │ │ +
│ │ │ │ +
116 class Options {
│ │ │ │ +
117 public:
│ │ │ │ +
│ │ │ │ +
118 Options() : _dfltFVarID(-1), _externCache(0), _enableCache(true),
│ │ │ │ +
119 _approxLevelSmooth(2), _approxLevelSharp(6) { }
│ │ │ │ +
│ │ │ │
120
│ │ │ │ -
121protected:
│ │ │ │ -
123
│ │ │ │ + │ │ │ │ +
125 FVarID GetDefaultFVarID() const { return _dfltFVarID; }
│ │ │ │ +
126
│ │ │ │ +
128 Options & EnableCaching(bool on);
│ │ │ │ +
130 bool IsCachingEnabled() const { return _enableCache; }
│ │ │ │ +
131
│ │ │ │ + │ │ │ │ +
135 SurfaceFactoryCache * GetExternalCache() const { return _externCache; }
│ │ │ │ +
136
│ │ │ │ +
137 // Set refinement levels used to approximate the limit surface
│ │ │ │ +
138 // for smooth and sharp features (reasonable defaults assigned):
│ │ │ │ +
140 Options & SetApproxLevelSmooth(int level);
│ │ │ │ +
142 int GetApproxLevelSmooth() const { return _approxLevelSmooth; }
│ │ │ │ +
143
│ │ │ │ +
145 Options & SetApproxLevelSharp(int level);
│ │ │ │ +
147 int GetApproxLevelSharp() const { return _approxLevelSharp; }
│ │ │ │ +
148
│ │ │ │ +
149 private:
│ │ │ │ +
150 // Member variables:
│ │ │ │ +
151 FVarID _dfltFVarID;
│ │ │ │ +
152
│ │ │ │ +
153 SurfaceFactoryCache * _externCache;
│ │ │ │ +
154
│ │ │ │ +
155 unsigned char _enableCache : 1;
│ │ │ │ +
156 unsigned char _approxLevelSmooth;
│ │ │ │ +
157 unsigned char _approxLevelSharp;
│ │ │ │ +
158 };
│ │ │ │ +
│ │ │ │
159
│ │ │ │ - │ │ │ │ -
162 Index faceIndex, int faceVertex,
│ │ │ │ -
163 VertexDescriptor * vertexDescriptor) const = 0;
│ │ │ │ +
160public:
│ │ │ │ +
161 ~SurfaceFactory() override;
│ │ │ │ +
162
│ │ │ │
164
│ │ │ │ - │ │ │ │ -
167 Index faceIndex, int faceVertex,
│ │ │ │ -
168 Index vertexIndices[]) const = 0;
│ │ │ │ -
169
│ │ │ │ - │ │ │ │ -
173 Index faceIndex, int faceVertex,
│ │ │ │ -
174 FVarID fvarID, Index fvarValueIndices[]) const = 0;
│ │ │ │ -
176
│ │ │ │ -
177protected:
│ │ │ │ -
179
│ │ │ │ - │ │ │ │ -
204 Index faceIndex, Index vertexIndices[]) const;
│ │ │ │ -
205
│ │ │ │ - │ │ │ │ -
207 Index faceIndex, FVarID fvarID, Index fvarValueIndices[]) const;
│ │ │ │ -
209
│ │ │ │ -
210private:
│ │ │ │ -
211 // No private members
│ │ │ │ -
212};
│ │ │ │ -
│ │ │ │ +
168
│ │ │ │ +
170 Sdc::SchemeType GetSchemeType() const { return _subdivScheme; }
│ │ │ │ +
171
│ │ │ │ +
173 Sdc::Options GetSchemeOptions() const { return _subdivOptions; }
│ │ │ │ +
175
│ │ │ │ +
176public:
│ │ │ │ +
178
│ │ │ │ +
190
│ │ │ │ +
200 bool FaceHasLimitSurface(Index faceIndex) const;
│ │ │ │ +
201
│ │ │ │ + │ │ │ │ +
210
│ │ │ │ +
211public:
│ │ │ │
213
│ │ │ │ -
214//
│ │ │ │ -
215// Inline defaults for optional methods:
│ │ │ │ -
216//
│ │ │ │ -
217inline bool
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
219 Index, Index[]) const {
│ │ │ │ -
220 return false;
│ │ │ │ -
221}
│ │ │ │ -
│ │ │ │ -
222
│ │ │ │ -
223inline bool
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
225 Index, FVarID, Index[]) const {
│ │ │ │ -
226 return false;
│ │ │ │ -
227}
│ │ │ │ -
│ │ │ │ -
228
│ │ │ │ -
229} // end namespace Bfr
│ │ │ │ -
230
│ │ │ │ -
231} // end namespace OPENSUBDIV_VERSION
│ │ │ │ -
232using namespace OPENSUBDIV_VERSION;
│ │ │ │
233
│ │ │ │ -
234} // end namespace OpenSubdiv
│ │ │ │ -
235
│ │ │ │ -
236#endif /* OPENSUBDIV3_BFR_SURFACE_FACTORY_ADAPTER_H */
│ │ │ │ +
241 template <typename REAL>
│ │ │ │ +
242 bool InitVertexSurface(Index faceIndex, Surface<REAL> * surface) const;
│ │ │ │ +
243
│ │ │ │ +
251 template <typename REAL>
│ │ │ │ +
252 bool InitVaryingSurface(Index faceIndex, Surface<REAL> * surface) const;
│ │ │ │ +
253
│ │ │ │ +
266 template <typename REAL>
│ │ │ │ +
267 bool InitFaceVaryingSurface(Index faceIndex, Surface<REAL> * surface) const;
│ │ │ │ +
268
│ │ │ │ +
278 template <typename REAL>
│ │ │ │ +
279 bool InitFaceVaryingSurface(Index faceIndex, Surface<REAL> * surface,
│ │ │ │ +
280 FVarID fvarID) const;
│ │ │ │ +
281
│ │ │ │ +
307 template <typename REAL>
│ │ │ │ +
308 bool InitSurfaces(Index faceIndex, Surface<REAL> * vtxSurface,
│ │ │ │ +
309 Surface<REAL> * fvarSurfaces,
│ │ │ │ +
310 FVarID const fvarIDs[] = 0,
│ │ │ │ +
311 int fvarCount = 0,
│ │ │ │ +
312 Surface<REAL> * varSurface = 0) const;
│ │ │ │ +
314
│ │ │ │ +
316
│ │ │ │ +
319 //
│ │ │ │ +
320 // WIP - considering removing these since non-essential
│ │ │ │ +
321 //
│ │ │ │ +
322
│ │ │ │ +
324 template <typename REAL=float>
│ │ │ │ +
325 Surface<REAL> * CreateVertexSurface(Index faceIndex) const;
│ │ │ │ +
326
│ │ │ │ +
328 template <typename REAL=float>
│ │ │ │ +
329 Surface<REAL> * CreateVaryingSurface(Index faceIndex) const;
│ │ │ │ +
330
│ │ │ │ +
332 template <typename REAL=float>
│ │ │ │ + │ │ │ │ +
334
│ │ │ │ +
336 template <typename REAL=float>
│ │ │ │ +
337 Surface<REAL> * CreateFaceVaryingSurface(Index faceIndex, FVarID id) const;
│ │ │ │ +
339
│ │ │ │ +
340protected:
│ │ │ │ +
342
│ │ │ │ +
346
│ │ │ │ + │ │ │ │ +
359 Sdc::Options const & schemeOptions,
│ │ │ │ +
360 Options const & limitOptions);
│ │ │ │ +
361
│ │ │ │ + │ │ │ │ +
364
│ │ │ │ + │ │ │ │ + │ │ │ │ +
368
│ │ │ │ +
369private:
│ │ │ │ +
370 // Supporting internal methods:
│ │ │ │ +
371 void setSubdivisionOptions(Sdc::SchemeType, Sdc::Options const & options);
│ │ │ │ +
372 void setFactoryOptions(Options const & factoryOptions);
│ │ │ │ +
373
│ │ │ │ +
374 bool faceHasLimitSimple(Index faceIndex, int faceSize) const;
│ │ │ │ +
375
│ │ │ │ +
376 bool faceHasLimitNeighborhood(Index faceIndex) const;
│ │ │ │ +
377 bool faceHasLimitNeighborhood(FaceTopology const & faceTopology) const;
│ │ │ │ +
378
│ │ │ │ +
379 class SurfaceSet;
│ │ │ │ +
380
│ │ │ │ +
381 bool populateAllSurfaces( Index faceIndex, SurfaceSet * sSetPtr) const;
│ │ │ │ +
382 bool populateLinearSurfaces( Index faceIndex, SurfaceSet * sSetPtr) const;
│ │ │ │ +
383 bool populateNonLinearSurfaces(Index faceIndex, SurfaceSet * sSetPtr) const;
│ │ │ │ +
384
│ │ │ │ +
385 bool initSurfaces(Index faceIndex, internal::SurfaceData * vtxSurface,
│ │ │ │ +
386 internal::SurfaceData * varSurface,
│ │ │ │ +
387 internal::SurfaceData * fvarSurfaces,
│ │ │ │ +
388 int fvarCount,
│ │ │ │ +
389 FVarID const fvarIDs[]) const;
│ │ │ │ +
390
│ │ │ │ +
391 // Methods to assemble topology and corresponding indices for entire face:
│ │ │ │ +
392 bool isFaceNeighborhoodRegular(Index faceIndex,
│ │ │ │ +
393 FVarID const * fvarPtrOrVtx,
│ │ │ │ +
394 Index indices[]) const;
│ │ │ │ +
395
│ │ │ │ +
396 bool initFaceNeighborhoodTopology(Index faceIndex,
│ │ │ │ +
397 FaceTopology * topology) const;
│ │ │ │ +
398
│ │ │ │ +
399 bool gatherFaceNeighborhoodTopology(Index faceIndex,
│ │ │ │ +
400 FaceTopology * topology) const;
│ │ │ │ +
401
│ │ │ │ +
402 int gatherFaceNeighborhoodIndices(Index faceIndex,
│ │ │ │ +
403 FaceTopology const & topology,
│ │ │ │ +
404 FVarID const * fvarPtrOrVtx,
│ │ │ │ +
405 Index indices[]) const;
│ │ │ │ +
406
│ │ │ │ +
407 // Methods to assemble Surfaces for the different categories of patch:
│ │ │ │ +
408 typedef internal::SurfaceData SurfaceType;
│ │ │ │ +
409
│ │ │ │ +
410 void assignLinearSurface(SurfaceType * surfacePtr,
│ │ │ │ +
411 Index faceIndex,
│ │ │ │ +
412 FVarID const * fvarPtrOrVtx) const;
│ │ │ │ +
413
│ │ │ │ +
414 void assignRegularSurface(SurfaceType * surfacePtr,
│ │ │ │ +
415 Index const surfacePatchPoints[]) const;
│ │ │ │ +
416
│ │ │ │ +
417 void assignRegularSurface(SurfaceType * surfacePtr,
│ │ │ │ +
418 FaceSurface const & surfaceDescription) const;
│ │ │ │ +
419
│ │ │ │ +
420 void assignIrregularSurface(SurfaceType * surfacePtr,
│ │ │ │ +
421 FaceSurface const & surfaceDescription) const;
│ │ │ │ +
422
│ │ │ │ +
423 void copyNonLinearSurface(SurfaceType * surfacePtr,
│ │ │ │ +
424 SurfaceType const & surfaceSource,
│ │ │ │ +
425 FaceSurface const & surfaceDescription) const;
│ │ │ │ +
426
│ │ │ │ +
427private:
│ │ │ │ +
428 // Members describing options and subdivision properties (very little
│ │ │ │ +
429 // memory and low initialization cost)
│ │ │ │ +
430 Sdc::SchemeType _subdivScheme;
│ │ │ │ +
431 Sdc::Options _subdivOptions;
│ │ │ │ +
432 Options _factoryOptions;
│ │ │ │ +
433
│ │ │ │ +
434 // Members related to subdivision topology, options and limit tests:
│ │ │ │ +
435 unsigned int _linearScheme : 1;
│ │ │ │ +
436 unsigned int _linearFVarInterp : 1;
│ │ │ │ +
437
│ │ │ │ +
438 unsigned int _testNeighborhoodForLimit : 1;
│ │ │ │ +
439 unsigned int _rejectSmoothBoundariesForLimit : 1;
│ │ │ │ +
440 unsigned int _rejectIrregularFacesForLimit : 1;
│ │ │ │ +
441
│ │ │ │ +
442 int _regFaceSize;
│ │ │ │ +
443
│ │ │ │ +
444 // Members related to caching:
│ │ │ │ +
445 SurfaceFactoryCache mutable * _topologyCache;
│ │ │ │ +
446};
│ │ │ │ +
│ │ │ │ +
447
│ │ │ │ +
448//
│ │ │ │ +
449// Inline methods for Options:
│ │ │ │ +
450//
│ │ │ │ + │ │ │ │ +
│ │ │ │ + │ │ │ │ +
453 _dfltFVarID = id;
│ │ │ │ +
454 return *this;
│ │ │ │ +
455}
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
│ │ │ │ + │ │ │ │ +
458 _enableCache = on;
│ │ │ │ +
459 return *this;
│ │ │ │ +
460}
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
│ │ │ │ + │ │ │ │ +
463 _externCache = c;
│ │ │ │ +
464 return *this;
│ │ │ │ +
465}
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
│ │ │ │ + │ │ │ │ +
468 _approxLevelSmooth = (unsigned char) level;
│ │ │ │ +
469 return *this;
│ │ │ │ +
470}
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
│ │ │ │ + │ │ │ │ +
473 _approxLevelSharp = (unsigned char) level;
│ │ │ │ +
474 return *this;
│ │ │ │ +
475}
│ │ │ │ +
│ │ │ │ +
476
│ │ │ │ +
477//
│ │ │ │ +
478// Inline methods to initializes Surfaces:
│ │ │ │ +
479//
│ │ │ │ +
480template <typename REAL>
│ │ │ │ +
481inline bool
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
483
│ │ │ │ +
484 return initSurfaces(face, &s->getSurfaceData(), 0, 0, 0, 0);
│ │ │ │ +
485}
│ │ │ │ +
│ │ │ │ +
486template <typename REAL>
│ │ │ │ +
487inline bool
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
489
│ │ │ │ +
490 return initSurfaces(face, 0, &s->getSurfaceData(), 0, 0, 0);
│ │ │ │ +
491}
│ │ │ │ +
│ │ │ │ +
492template <typename REAL>
│ │ │ │ +
493inline bool
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
495 FVarID fvarID) const {
│ │ │ │ +
496 return initSurfaces(face, 0, 0, &s->getSurfaceData(), 1, &fvarID);
│ │ │ │ +
497}
│ │ │ │ +
│ │ │ │ +
498template <typename REAL>
│ │ │ │ +
499inline bool
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
501 FVarID dfltID = _factoryOptions.GetDefaultFVarID();
│ │ │ │ +
502 return initSurfaces(face, 0, 0, &s->getSurfaceData(), 1, &dfltID);
│ │ │ │ +
503}
│ │ │ │ +
│ │ │ │ +
504
│ │ │ │ +
505template <typename REAL>
│ │ │ │ +
506inline bool
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
508 Surface<REAL> * fvarSurfaces, FVarID const fvarIDs[], int fvarCount,
│ │ │ │ +
509 Surface<REAL> * varSurface) const {
│ │ │ │ +
510
│ │ │ │ +
511 bool useDfltFVarID = fvarSurfaces && (fvarIDs == 0) && (fvarCount == 0);
│ │ │ │ +
512 FVarID dfltFVarID = useDfltFVarID ? _factoryOptions.GetDefaultFVarID() : 0;
│ │ │ │ +
513
│ │ │ │ +
514 return initSurfaces(faceIndex,
│ │ │ │ +
515 vtxSurface ? &vtxSurface->getSurfaceData() : 0,
│ │ │ │ +
516 varSurface ? &varSurface->getSurfaceData() : 0,
│ │ │ │ +
517 fvarSurfaces ? &fvarSurfaces->getSurfaceData() : 0,
│ │ │ │ +
518 fvarCount ? fvarCount : (fvarSurfaces != 0),
│ │ │ │ +
519 useDfltFVarID ? &dfltFVarID : fvarIDs);
│ │ │ │ +
520}
│ │ │ │ +
│ │ │ │ +
521
│ │ │ │ +
522//
│ │ │ │ +
523// Inline methods to allocate and initialize Surfaces:
│ │ │ │ +
524//
│ │ │ │ +
525template <typename REAL>
│ │ │ │ +
526inline Surface<REAL> *
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
528 Surface<REAL> * s = new Surface<REAL>();
│ │ │ │ +
529 if (InitVertexSurface<REAL>(faceIndex, s)) return s;
│ │ │ │ +
530 delete s;
│ │ │ │ +
531 return 0;
│ │ │ │ +
532}
│ │ │ │ +
│ │ │ │ +
533template <typename REAL>
│ │ │ │ +
534inline Surface<REAL> *
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
536 Surface<REAL> * s = new Surface<REAL>();
│ │ │ │ +
537 if (InitVaryingSurface<REAL>(faceIndex, s)) return s;
│ │ │ │ +
538 delete s;
│ │ │ │ +
539 return 0;
│ │ │ │ +
540}
│ │ │ │ +
│ │ │ │ +
541template <typename REAL>
│ │ │ │ +
542inline Surface<REAL> *
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
544 Surface<REAL> * s = new Surface<REAL>();
│ │ │ │ +
545 if (InitFaceVaryingSurface<REAL>(faceIndex, s, fvarID)) return s;
│ │ │ │ +
546 delete s;
│ │ │ │ +
547 return 0;
│ │ │ │ +
548}
│ │ │ │ +
│ │ │ │ +
549template <typename REAL>
│ │ │ │ +
550inline Surface<REAL> *
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
552 FVarID dfltID = _factoryOptions.GetDefaultFVarID();
│ │ │ │ +
553 return CreateFaceVaryingSurface<REAL>(face, dfltID);
│ │ │ │ +
554}
│ │ │ │ +
│ │ │ │ +
555
│ │ │ │ +
556} // end namespace Bfr
│ │ │ │ +
557
│ │ │ │ +
558} // end namespace OPENSUBDIV_VERSION
│ │ │ │ +
559using namespace OPENSUBDIV_VERSION;
│ │ │ │ +
560
│ │ │ │ +
561} // end namespace OpenSubdiv
│ │ │ │ +
562
│ │ │ │ +
563#endif /* OPENSUBDIV3_BFR_SURFACE_FACTORY_H */
│ │ │ │ │ │ │ │ -
Abstract interface adapting SurfaceFactory to a connected mesh representation.
│ │ │ │ -
virtual int getFaceVertexIncidentFaceFVarValueIndices(Index faceIndex, int faceVertex, FVarID fvarID, Index fvarValueIndices[]) const =0
Gather face-varying indices of incident faces around a face-vertex.
│ │ │ │ -
virtual int getFaceVertexIncidentFaceVertexIndices(Index faceIndex, int faceVertex, Index vertexIndices[]) const =0
Gather vertex indices of incident faces around a face-vertex.
│ │ │ │ -
virtual int getFaceSize(Index faceIndex) const =0
Returns the size of a face (number of vertices)
│ │ │ │ - │ │ │ │ -
virtual int populateFaceVertexDescriptor(Index faceIndex, int faceVertex, VertexDescriptor *vertexDescriptor) const =0
Describe the topology of incident faces around a face-vertex.
│ │ │ │ -
virtual bool getFaceNeighborhoodVertexIndicesIfRegular(Index faceIndex, Index vertexIndices[]) const
│ │ │ │ -
virtual bool getFaceNeighborhoodFVarValueIndicesIfRegular(Index faceIndex, FVarID fvarID, Index fvarValueIndices[]) const
│ │ │ │ -
virtual int getFaceFVarValueIndices(Index faceIndex, FVarID fvarID, Index fvarValueIndices[]) const =0
Gather the face-varying indices of the face's vertices.
│ │ │ │ -
virtual int getFaceVertexIndices(Index faceIndex, Index vertexIndices[]) const =0
Gather the indices of the face's vertices.
│ │ │ │ -
virtual bool isFaceHole(Index faceIndex) const =0
Returns if a face is a hole.
│ │ │ │ -
std::intptr_t FVarID
Type used to identify and specify face-varying primvars.
│ │ │ │ -
Simple class used by subclasses of SurfaceFactory to describe a vertex.
│ │ │ │ +
SchemeType
Enumerated type for all subdivision schemes supported by OpenSubdiv.
Definition types.h:37
│ │ │ │ +
Simple class defining the 2D parameterization of a face.
│ │ │ │ +
Encapsulates the limit surface for a face of a mesh.
Definition surface.h:59
│ │ │ │ +
Base class providing initialization of a Surface for each face of a mesh.
│ │ │ │ +
void setInternalCache(SurfaceFactoryCache *cache)
Subclass to identify an internal cache for use by base class.
│ │ │ │ + │ │ │ │ +
bool InitFaceVaryingSurface(Index faceIndex, Surface< REAL > *surface) const
Initialize a Surface for the default face-varying data.
│ │ │ │ +
Sdc::Options GetSchemeOptions() const
Return the set of subdivision options.
│ │ │ │ +
Parameterization GetFaceParameterization(Index faceIndex) const
Return the Parameterization of a face with a limit surface.
│ │ │ │ +
SurfaceFactory(SurfaceFactory const &)=delete
│ │ │ │ +
bool FaceHasLimitSurface(Index faceIndex) const
Return if a specified face has a limit surface.
│ │ │ │ +
SurfaceFactory & operator=(SurfaceFactory const &)=delete
│ │ │ │ +
Surface< REAL > * CreateVertexSurface(Index faceIndex) const
Construct a Surface for vertex data.
│ │ │ │ +
Surface< REAL > * CreateFaceVaryingSurface(Index faceIndex) const
Construct a Surface for the default face-varying data.
│ │ │ │ +
bool InitSurfaces(Index faceIndex, Surface< REAL > *vtxSurface, Surface< REAL > *fvarSurfaces, FVarID const fvarIDs[]=0, int fvarCount=0, Surface< REAL > *varSurface=0) const
Initialize multiple Surfaces at once.
│ │ │ │ +
Sdc::SchemeType GetSchemeType() const
Return the subdivision scheme.
│ │ │ │ +
Surface< REAL > * CreateVaryingSurface(Index faceIndex) const
Construct a Surface for varying data.
│ │ │ │ +
bool InitVertexSurface(Index faceIndex, Surface< REAL > *surface) const
Initialize a Surface for vertex data.
│ │ │ │ +
bool InitVaryingSurface(Index faceIndex, Surface< REAL > *surface) const
Initialize a Surface for varying data.
│ │ │ │ +
SurfaceFactory(Sdc::SchemeType schemeType, Sdc::Options const &schemeOptions, Options const &limitOptions)
Constructor to be used by subclasses.
│ │ │ │ +
Simple set of options assigned to instances of SurfaceFactory.
│ │ │ │ +
Options & SetExternalCache(SurfaceFactoryCache *c)
Assign an external cache to override the internal.
│ │ │ │ +
Options & EnableCaching(bool on)
Enable or disable caching (default is true):
│ │ │ │ +
Options & SetApproxLevelSmooth(int level)
Assign maximum refinement level for smooth features.
│ │ │ │ +
int GetApproxLevelSmooth() const
Return maximum refinement level for smooth features.
│ │ │ │ + │ │ │ │ +
bool IsCachingEnabled() const
Return if caching is enable.
│ │ │ │ +
Options & SetDefaultFVarID(FVarID id)
Assign the default face-varying ID (none assigned by default)
│ │ │ │ +
Options & SetApproxLevelSharp(int level)
Assign maximum refinement level for sharp features.
│ │ │ │ +
FVarID GetDefaultFVarID() const
Return the default face-varying ID.
│ │ │ │ +
int GetApproxLevelSharp() const
Return maximum refinement level for sharp features.
│ │ │ │ +
SurfaceFactoryCache * GetExternalCache() const
Return any assigned external cache.
│ │ │ │ +
Container used internally by SurfaceFactory to store reusable information.
│ │ │ │ +
Abstract interface adapting SurfaceFactory to a connected mesh representation.
│ │ │ │ + │ │ │ │ +
std::intptr_t FVarID
Type used to identify and specify face-varying primvars.
│ │ │ │ +
All supported options applying to subdivision scheme.
Definition options.h:51
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,12 +1,12 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ -surfaceFactoryMeshAdapter.h │ │ │ │ │ +surfaceFactory.h │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// │ │ │ │ │ 2// Copyright 2021 Pixar │ │ │ │ │ 3// │ │ │ │ │ 4// Licensed under the Apache License, Version 2.0 (the "Apache License") │ │ │ │ │ 5// with the following modification; you may not use this file except in │ │ │ │ │ 6// compliance with the Apache License and the following modification to it: │ │ │ │ │ @@ -24,179 +24,476 @@ │ │ │ │ │ 18// Unless required by applicable law or agreed to in writing, software │ │ │ │ │ 19// distributed under the Apache License with the above modification is │ │ │ │ │ 20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY │ │ │ │ │ 21// KIND, either express or implied. See the Apache License for the specific │ │ │ │ │ 22// language governing permissions and limitations under the Apache License. │ │ │ │ │ 23// │ │ │ │ │ 24 │ │ │ │ │ -25#ifndef OPENSUBDIV3_BFR_SURFACE_FACTORY_ADAPTER_H │ │ │ │ │ -26#define OPENSUBDIV3_BFR_SURFACE_FACTORY_ADAPTER_H │ │ │ │ │ +25#ifndef OPENSUBDIV3_BFR_SURFACE_FACTORY_H │ │ │ │ │ +26#define OPENSUBDIV3_BFR_SURFACE_FACTORY_H │ │ │ │ │ 27 │ │ │ │ │ 28#include "../version.h" │ │ │ │ │ 29 │ │ │ │ │ -30#include │ │ │ │ │ -31 │ │ │ │ │ -32namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ -33namespace OPENSUBDIV_VERSION { │ │ │ │ │ +30#include "../bfr/surface.h" │ │ │ │ │ +31#include "../bfr/surfaceFactoryMeshAdapter.h" │ │ │ │ │ +32#include "../sdc/options.h" │ │ │ │ │ +33#include "../sdc/types.h" │ │ │ │ │ 34 │ │ │ │ │ -35namespace Bfr { │ │ │ │ │ +35#include │ │ │ │ │ 36 │ │ │ │ │ -37class VertexDescriptor; │ │ │ │ │ -38 │ │ │ │ │ -43// SurfaceFactoryMeshAdapter is an abstract class that defines the interface │ │ │ │ │ -44// through which subclasses of SurfaceFactory adapt to a connected mesh │ │ │ │ │ -45// representation. The interface defines methods that describe the mesh │ │ │ │ │ -46// topology and control indices in the neighborhood of a mesh -- from │ │ │ │ │ -47// which the SurfaceFactory to identifies an appropriate limit surface. │ │ │ │ │ -48// │ │ │ │ │ -49// SurfaceFactoryMeshAdapter methods require a subclass to provide a complete │ │ │ │ │ -50// description of the topology around a base face, as well as indices │ │ │ │ │ -51// associated with it (both vertex and face-varying). The intent here is │ │ │ │ │ -52// to keep the number of methods required to a minimum, and also to minimize │ │ │ │ │ -53// the number of invocations required by the factory. │ │ │ │ │ -54// │ │ │ │ │ -55// With the need to support both linear and non-linear cases (for which │ │ │ │ │ -56// linear is trivial by comparison) and the limit surface for both vertex │ │ │ │ │ -57// and face-varying topologies, the result is a small set of methods │ │ │ │ │ -58// covering this matrix of functionality. │ │ │ │ │ -59// │ │ │ │ │ -60// Since face-varying data may differ in topology from the vertex data -- │ │ │ │ │ -61// with each set of face-varying data potentially having its own unique │ │ │ │ │ -62// topology -- sets of face-varying data are uniquely distinguished by an │ │ │ │ │ -63// associated integer (a face-varying ID). │ │ │ │ │ -64// │ │ │ │ │ -_6_5class _S_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r { │ │ │ │ │ -66public: │ │ │ │ │ -_6_8 typedef int _I_n_d_e_x; │ │ │ │ │ -69 │ │ │ │ │ -_8_0 typedef std::intptr_t _F_V_a_r_I_D; │ │ │ │ │ -81 │ │ │ │ │ -82protected: │ │ │ │ │ -84 _S_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r() { } │ │ │ │ │ -85 virtual _~_S_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r() { } │ │ │ │ │ -87 │ │ │ │ │ -88protected: │ │ │ │ │ -90 │ │ │ │ │ -94 │ │ │ │ │ -_9_6 virtual bool _i_s_F_a_c_e_H_o_l_e(_I_n_d_e_x faceIndex) const = 0; │ │ │ │ │ -97 │ │ │ │ │ -_9_9 virtual int _g_e_t_F_a_c_e_S_i_z_e(_I_n_d_e_x faceIndex) const = 0; │ │ │ │ │ -101 │ │ │ │ │ -103 │ │ │ │ │ -111 │ │ │ │ │ -_1_1_3 virtual int _g_e_t_F_a_c_e_V_e_r_t_e_x_I_n_d_i_c_e_s(_I_n_d_e_x faceIndex, │ │ │ │ │ -114 _I_n_d_e_x vertexIndices[]) const = 0; │ │ │ │ │ -115 │ │ │ │ │ -_1_1_7 virtual int _g_e_t_F_a_c_e_F_V_a_r_V_a_l_u_e_I_n_d_i_c_e_s(_I_n_d_e_x faceIndex, │ │ │ │ │ -118 _F_V_a_r_I_D fvarID, _I_n_d_e_x fvarValueIndices[]) const = 0; │ │ │ │ │ +37namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ +38namespace OPENSUBDIV_VERSION { │ │ │ │ │ +39 │ │ │ │ │ +40namespace Bfr { │ │ │ │ │ +41 │ │ │ │ │ +42// │ │ │ │ │ +43// Forward declarations of public and internal classes used by factories: │ │ │ │ │ +44// │ │ │ │ │ +45class SurfaceFactoryCache; │ │ │ │ │ +46class FaceTopology; │ │ │ │ │ +47class FaceSurface; │ │ │ │ │ +48 │ │ │ │ │ +_1_0_3class _S_u_r_f_a_c_e_F_a_c_t_o_r_y : public _S_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r { │ │ │ │ │ +104public: │ │ │ │ │ +_1_1_6 class _O_p_t_i_o_n_s { │ │ │ │ │ +117 public: │ │ │ │ │ +_1_1_8 _O_p_t_i_o_n_s() : _dfltFVarID(-1), _externCache(0), _enableCache(true), │ │ │ │ │ +119 _approxLevelSmooth(2), _approxLevelSharp(6) { } │ │ │ │ │ 120 │ │ │ │ │ -121protected: │ │ │ │ │ -123 │ │ │ │ │ +123 _O_p_t_i_o_n_s & _S_e_t_D_e_f_a_u_l_t_F_V_a_r_I_D(_F_V_a_r_I_D id); │ │ │ │ │ +_1_2_5 _F_V_a_r_I_D _G_e_t_D_e_f_a_u_l_t_F_V_a_r_I_D() const { return _dfltFVarID; } │ │ │ │ │ +126 │ │ │ │ │ +128 _O_p_t_i_o_n_s & _E_n_a_b_l_e_C_a_c_h_i_n_g(bool on); │ │ │ │ │ +_1_3_0 bool _I_s_C_a_c_h_i_n_g_E_n_a_b_l_e_d() const { return _enableCache; } │ │ │ │ │ +131 │ │ │ │ │ +133 _O_p_t_i_o_n_s & _S_e_t_E_x_t_e_r_n_a_l_C_a_c_h_e(_S_u_r_f_a_c_e_F_a_c_t_o_r_y_C_a_c_h_e * c); │ │ │ │ │ +_1_3_5 _S_u_r_f_a_c_e_F_a_c_t_o_r_y_C_a_c_h_e * _G_e_t_E_x_t_e_r_n_a_l_C_a_c_h_e() const { return _externCache; } │ │ │ │ │ +136 │ │ │ │ │ +137 // Set refinement levels used to approximate the limit surface │ │ │ │ │ +138 // for smooth and sharp features (reasonable defaults assigned): │ │ │ │ │ +140 _O_p_t_i_o_n_s & _S_e_t_A_p_p_r_o_x_L_e_v_e_l_S_m_o_o_t_h(int level); │ │ │ │ │ +_1_4_2 int _G_e_t_A_p_p_r_o_x_L_e_v_e_l_S_m_o_o_t_h() const { return _approxLevelSmooth; } │ │ │ │ │ +143 │ │ │ │ │ +145 _O_p_t_i_o_n_s & _S_e_t_A_p_p_r_o_x_L_e_v_e_l_S_h_a_r_p(int level); │ │ │ │ │ +_1_4_7 int _G_e_t_A_p_p_r_o_x_L_e_v_e_l_S_h_a_r_p() const { return _approxLevelSharp; } │ │ │ │ │ +148 │ │ │ │ │ +149 private: │ │ │ │ │ +150 // Member variables: │ │ │ │ │ +151 _F_V_a_r_I_D _dfltFVarID; │ │ │ │ │ +152 │ │ │ │ │ +153 _S_u_r_f_a_c_e_F_a_c_t_o_r_y_C_a_c_h_e * _externCache; │ │ │ │ │ +154 │ │ │ │ │ +155 unsigned char _enableCache : 1; │ │ │ │ │ +156 unsigned char _approxLevelSmooth; │ │ │ │ │ +157 unsigned char _approxLevelSharp; │ │ │ │ │ +158 }; │ │ │ │ │ 159 │ │ │ │ │ -_1_6_1 virtual int _p_o_p_u_l_a_t_e_F_a_c_e_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r( │ │ │ │ │ -162 _I_n_d_e_x faceIndex, int faceVertex, │ │ │ │ │ -163 _V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r * vertexDescriptor) const = 0; │ │ │ │ │ +160public: │ │ │ │ │ +_1_6_1 _~_S_u_r_f_a_c_e_F_a_c_t_o_r_y() override; │ │ │ │ │ +162 │ │ │ │ │ 164 │ │ │ │ │ -_1_6_6 virtual int _g_e_t_F_a_c_e_V_e_r_t_e_x_I_n_c_i_d_e_n_t_F_a_c_e_V_e_r_t_e_x_I_n_d_i_c_e_s( │ │ │ │ │ -167 _I_n_d_e_x faceIndex, int faceVertex, │ │ │ │ │ -168 _I_n_d_e_x vertexIndices[]) const = 0; │ │ │ │ │ -169 │ │ │ │ │ -_1_7_2 virtual int _g_e_t_F_a_c_e_V_e_r_t_e_x_I_n_c_i_d_e_n_t_F_a_c_e_F_V_a_r_V_a_l_u_e_I_n_d_i_c_e_s( │ │ │ │ │ -173 _I_n_d_e_x faceIndex, int faceVertex, │ │ │ │ │ -174 _F_V_a_r_I_D fvarID, _I_n_d_e_x fvarValueIndices[]) const = 0; │ │ │ │ │ -176 │ │ │ │ │ -177protected: │ │ │ │ │ -179 │ │ │ │ │ -203 virtual bool _g_e_t_F_a_c_e_N_e_i_g_h_b_o_r_h_o_o_d_V_e_r_t_e_x_I_n_d_i_c_e_s_I_f_R_e_g_u_l_a_r( │ │ │ │ │ -204 _I_n_d_e_x faceIndex, _I_n_d_e_x vertexIndices[]) const; │ │ │ │ │ -205 │ │ │ │ │ -206 virtual bool _g_e_t_F_a_c_e_N_e_i_g_h_b_o_r_h_o_o_d_F_V_a_r_V_a_l_u_e_I_n_d_i_c_e_s_I_f_R_e_g_u_l_a_r( │ │ │ │ │ -207 _I_n_d_e_x faceIndex, _F_V_a_r_I_D fvarID, _I_n_d_e_x fvarValueIndices[]) const; │ │ │ │ │ -209 │ │ │ │ │ -210private: │ │ │ │ │ -211 // No private members │ │ │ │ │ -212}; │ │ │ │ │ +168 │ │ │ │ │ +_1_7_0 _S_d_c_:_:_S_c_h_e_m_e_T_y_p_e _G_e_t_S_c_h_e_m_e_T_y_p_e() const { return _subdivScheme; } │ │ │ │ │ +171 │ │ │ │ │ +_1_7_3 _S_d_c_:_:_O_p_t_i_o_n_s _G_e_t_S_c_h_e_m_e_O_p_t_i_o_n_s() const { return _subdivOptions; } │ │ │ │ │ +175 │ │ │ │ │ +176public: │ │ │ │ │ +178 │ │ │ │ │ +190 │ │ │ │ │ +_2_0_0 bool _F_a_c_e_H_a_s_L_i_m_i_t_S_u_r_f_a_c_e(_I_n_d_e_x faceIndex) const; │ │ │ │ │ +201 │ │ │ │ │ +_2_0_8 _P_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n _G_e_t_F_a_c_e_P_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n(_I_n_d_e_x faceIndex) const; │ │ │ │ │ +210 │ │ │ │ │ +211public: │ │ │ │ │ 213 │ │ │ │ │ -214// │ │ │ │ │ -215// Inline defaults for optional methods: │ │ │ │ │ -216// │ │ │ │ │ -217inline bool │ │ │ │ │ -_2_1_8_S_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_:_:_g_e_t_F_a_c_e_N_e_i_g_h_b_o_r_h_o_o_d_V_e_r_t_e_x_I_n_d_i_c_e_s_I_f_R_e_g_u_l_a_r( │ │ │ │ │ -219 _I_n_d_e_x, _I_n_d_e_x[]) const { │ │ │ │ │ -220 return false; │ │ │ │ │ -221} │ │ │ │ │ -222 │ │ │ │ │ -223inline bool │ │ │ │ │ -_2_2_4_S_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_:_:_g_e_t_F_a_c_e_N_e_i_g_h_b_o_r_h_o_o_d_F_V_a_r_V_a_l_u_e_I_n_d_i_c_e_s_I_f_R_e_g_u_l_a_r( │ │ │ │ │ -225 _I_n_d_e_x, _F_V_a_r_I_D, _I_n_d_e_x[]) const { │ │ │ │ │ -226 return false; │ │ │ │ │ -227} │ │ │ │ │ -228 │ │ │ │ │ -229} // end namespace Bfr │ │ │ │ │ -230 │ │ │ │ │ -231} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ -232using namespace OPENSUBDIV_VERSION; │ │ │ │ │ 233 │ │ │ │ │ -234} // end namespace OpenSubdiv │ │ │ │ │ -235 │ │ │ │ │ -236#endif /* OPENSUBDIV3_BFR_SURFACE_FACTORY_ADAPTER_H */ │ │ │ │ │ +241 template │ │ │ │ │ +242 bool _I_n_i_t_V_e_r_t_e_x_S_u_r_f_a_c_e(_I_n_d_e_x faceIndex, _S_u_r_f_a_c_e_<_R_E_A_L_> * surface) const; │ │ │ │ │ +243 │ │ │ │ │ +251 template │ │ │ │ │ +252 bool _I_n_i_t_V_a_r_y_i_n_g_S_u_r_f_a_c_e(_I_n_d_e_x faceIndex, _S_u_r_f_a_c_e_<_R_E_A_L_> * surface) const; │ │ │ │ │ +253 │ │ │ │ │ +266 template │ │ │ │ │ +267 bool _I_n_i_t_F_a_c_e_V_a_r_y_i_n_g_S_u_r_f_a_c_e(_I_n_d_e_x faceIndex, _S_u_r_f_a_c_e_<_R_E_A_L_> * surface) │ │ │ │ │ +const; │ │ │ │ │ +268 │ │ │ │ │ +278 template │ │ │ │ │ +279 bool _I_n_i_t_F_a_c_e_V_a_r_y_i_n_g_S_u_r_f_a_c_e(_I_n_d_e_x faceIndex, _S_u_r_f_a_c_e_<_R_E_A_L_> * surface, │ │ │ │ │ +280 _F_V_a_r_I_D fvarID) const; │ │ │ │ │ +281 │ │ │ │ │ +307 template │ │ │ │ │ +308 bool _I_n_i_t_S_u_r_f_a_c_e_s(_I_n_d_e_x faceIndex, _S_u_r_f_a_c_e_<_R_E_A_L_> * vtxSurface, │ │ │ │ │ +309 _S_u_r_f_a_c_e_<_R_E_A_L_> * fvarSurfaces, │ │ │ │ │ +310 _F_V_a_r_I_D const fvarIDs[] = 0, │ │ │ │ │ +311 int fvarCount = 0, │ │ │ │ │ +312 _S_u_r_f_a_c_e_<_R_E_A_L_> * varSurface = 0) const; │ │ │ │ │ +314 │ │ │ │ │ +316 │ │ │ │ │ +319 // │ │ │ │ │ +320 // WIP - considering removing these since non-essential │ │ │ │ │ +321 // │ │ │ │ │ +322 │ │ │ │ │ +324 template │ │ │ │ │ +325 _S_u_r_f_a_c_e_<_R_E_A_L_> * _C_r_e_a_t_e_V_e_r_t_e_x_S_u_r_f_a_c_e(_I_n_d_e_x faceIndex) const; │ │ │ │ │ +326 │ │ │ │ │ +328 template │ │ │ │ │ +329 _S_u_r_f_a_c_e_<_R_E_A_L_> * _C_r_e_a_t_e_V_a_r_y_i_n_g_S_u_r_f_a_c_e(_I_n_d_e_x faceIndex) const; │ │ │ │ │ +330 │ │ │ │ │ +332 template │ │ │ │ │ +333 _S_u_r_f_a_c_e_<_R_E_A_L_> * _C_r_e_a_t_e_F_a_c_e_V_a_r_y_i_n_g_S_u_r_f_a_c_e(_I_n_d_e_x faceIndex) const; │ │ │ │ │ +334 │ │ │ │ │ +336 template │ │ │ │ │ +337 _S_u_r_f_a_c_e_<_R_E_A_L_> * _C_r_e_a_t_e_F_a_c_e_V_a_r_y_i_n_g_S_u_r_f_a_c_e(_I_n_d_e_x faceIndex, _F_V_a_r_I_D id) const; │ │ │ │ │ +339 │ │ │ │ │ +340protected: │ │ │ │ │ +342 │ │ │ │ │ +346 │ │ │ │ │ +_3_5_8 _S_u_r_f_a_c_e_F_a_c_t_o_r_y(_S_d_c_:_:_S_c_h_e_m_e_T_y_p_e schemeType, │ │ │ │ │ +359 _S_d_c_:_:_O_p_t_i_o_n_s const & schemeOptions, │ │ │ │ │ +360 _O_p_t_i_o_n_s const & limitOptions); │ │ │ │ │ +361 │ │ │ │ │ +_3_6_3 void _s_e_t_I_n_t_e_r_n_a_l_C_a_c_h_e(_S_u_r_f_a_c_e_F_a_c_t_o_r_y_C_a_c_h_e * cache); │ │ │ │ │ +364 │ │ │ │ │ +_3_6_5 _S_u_r_f_a_c_e_F_a_c_t_o_r_y(_S_u_r_f_a_c_e_F_a_c_t_o_r_y const &) = delete; │ │ │ │ │ +_3_6_6 _S_u_r_f_a_c_e_F_a_c_t_o_r_y & _o_p_e_r_a_t_o_r_=(_S_u_r_f_a_c_e_F_a_c_t_o_r_y const &) = delete; │ │ │ │ │ +368 │ │ │ │ │ +369private: │ │ │ │ │ +370 // Supporting internal methods: │ │ │ │ │ +371 void setSubdivisionOptions(_S_d_c_:_:_S_c_h_e_m_e_T_y_p_e, _S_d_c_:_:_O_p_t_i_o_n_s const & options); │ │ │ │ │ +372 void setFactoryOptions(_O_p_t_i_o_n_s const & factoryOptions); │ │ │ │ │ +373 │ │ │ │ │ +374 bool faceHasLimitSimple(_I_n_d_e_x faceIndex, int faceSize) const; │ │ │ │ │ +375 │ │ │ │ │ +376 bool faceHasLimitNeighborhood(_I_n_d_e_x faceIndex) const; │ │ │ │ │ +377 bool faceHasLimitNeighborhood(FaceTopology const & faceTopology) const; │ │ │ │ │ +378 │ │ │ │ │ +379 class SurfaceSet; │ │ │ │ │ +380 │ │ │ │ │ +381 bool populateAllSurfaces( _I_n_d_e_x faceIndex, SurfaceSet * sSetPtr) const; │ │ │ │ │ +382 bool populateLinearSurfaces( _I_n_d_e_x faceIndex, SurfaceSet * sSetPtr) const; │ │ │ │ │ +383 bool populateNonLinearSurfaces(_I_n_d_e_x faceIndex, SurfaceSet * sSetPtr) │ │ │ │ │ +const; │ │ │ │ │ +384 │ │ │ │ │ +385 bool initSurfaces(_I_n_d_e_x faceIndex, internal::SurfaceData * vtxSurface, │ │ │ │ │ +386 internal::SurfaceData * varSurface, │ │ │ │ │ +387 internal::SurfaceData * fvarSurfaces, │ │ │ │ │ +388 int fvarCount, │ │ │ │ │ +389 _F_V_a_r_I_D const fvarIDs[]) const; │ │ │ │ │ +390 │ │ │ │ │ +391 // Methods to assemble topology and corresponding indices for entire face: │ │ │ │ │ +392 bool isFaceNeighborhoodRegular(_I_n_d_e_x faceIndex, │ │ │ │ │ +393 _F_V_a_r_I_D const * fvarPtrOrVtx, │ │ │ │ │ +394 _I_n_d_e_x indices[]) const; │ │ │ │ │ +395 │ │ │ │ │ +396 bool initFaceNeighborhoodTopology(_I_n_d_e_x faceIndex, │ │ │ │ │ +397 FaceTopology * topology) const; │ │ │ │ │ +398 │ │ │ │ │ +399 bool gatherFaceNeighborhoodTopology(_I_n_d_e_x faceIndex, │ │ │ │ │ +400 FaceTopology * topology) const; │ │ │ │ │ +401 │ │ │ │ │ +402 int gatherFaceNeighborhoodIndices(_I_n_d_e_x faceIndex, │ │ │ │ │ +403 FaceTopology const & topology, │ │ │ │ │ +404 _F_V_a_r_I_D const * fvarPtrOrVtx, │ │ │ │ │ +405 _I_n_d_e_x indices[]) const; │ │ │ │ │ +406 │ │ │ │ │ +407 // Methods to assemble Surfaces for the different categories of patch: │ │ │ │ │ +408 typedef internal::SurfaceData SurfaceType; │ │ │ │ │ +409 │ │ │ │ │ +410 void assignLinearSurface(SurfaceType * surfacePtr, │ │ │ │ │ +411 _I_n_d_e_x faceIndex, │ │ │ │ │ +412 _F_V_a_r_I_D const * fvarPtrOrVtx) const; │ │ │ │ │ +413 │ │ │ │ │ +414 void assignRegularSurface(SurfaceType * surfacePtr, │ │ │ │ │ +415 _I_n_d_e_x const surfacePatchPoints[]) const; │ │ │ │ │ +416 │ │ │ │ │ +417 void assignRegularSurface(SurfaceType * surfacePtr, │ │ │ │ │ +418 FaceSurface const & surfaceDescription) const; │ │ │ │ │ +419 │ │ │ │ │ +420 void assignIrregularSurface(SurfaceType * surfacePtr, │ │ │ │ │ +421 FaceSurface const & surfaceDescription) const; │ │ │ │ │ +422 │ │ │ │ │ +423 void copyNonLinearSurface(SurfaceType * surfacePtr, │ │ │ │ │ +424 SurfaceType const & surfaceSource, │ │ │ │ │ +425 FaceSurface const & surfaceDescription) const; │ │ │ │ │ +426 │ │ │ │ │ +427private: │ │ │ │ │ +428 // Members describing options and subdivision properties (very little │ │ │ │ │ +429 // memory and low initialization cost) │ │ │ │ │ +430 _S_d_c_:_:_S_c_h_e_m_e_T_y_p_e _subdivScheme; │ │ │ │ │ +431 _S_d_c_:_:_O_p_t_i_o_n_s _subdivOptions; │ │ │ │ │ +432 _O_p_t_i_o_n_s _factoryOptions; │ │ │ │ │ +433 │ │ │ │ │ +434 // Members related to subdivision topology, options and limit tests: │ │ │ │ │ +435 unsigned int _linearScheme : 1; │ │ │ │ │ +436 unsigned int _linearFVarInterp : 1; │ │ │ │ │ +437 │ │ │ │ │ +438 unsigned int _testNeighborhoodForLimit : 1; │ │ │ │ │ +439 unsigned int _rejectSmoothBoundariesForLimit : 1; │ │ │ │ │ +440 unsigned int _rejectIrregularFacesForLimit : 1; │ │ │ │ │ +441 │ │ │ │ │ +442 int _regFaceSize; │ │ │ │ │ +443 │ │ │ │ │ +444 // Members related to caching: │ │ │ │ │ +445 _S_u_r_f_a_c_e_F_a_c_t_o_r_y_C_a_c_h_e mutable * _topologyCache; │ │ │ │ │ +446}; │ │ │ │ │ +447 │ │ │ │ │ +448// │ │ │ │ │ +449// Inline methods for Options: │ │ │ │ │ +450// │ │ │ │ │ +451inline _S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s & │ │ │ │ │ +_4_5_2_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_:_S_e_t_D_e_f_a_u_l_t_F_V_a_r_I_D(_F_V_a_r_I_D id) { │ │ │ │ │ +453 _dfltFVarID = id; │ │ │ │ │ +454 return *this; │ │ │ │ │ +455} │ │ │ │ │ +456inline _S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s & │ │ │ │ │ +_4_5_7_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_:_E_n_a_b_l_e_C_a_c_h_i_n_g(bool on) { │ │ │ │ │ +458 _enableCache = on; │ │ │ │ │ +459 return *this; │ │ │ │ │ +460} │ │ │ │ │ +461inline _S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s & │ │ │ │ │ +_4_6_2_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_:_S_e_t_E_x_t_e_r_n_a_l_C_a_c_h_e(_S_u_r_f_a_c_e_F_a_c_t_o_r_y_C_a_c_h_e * c) { │ │ │ │ │ +463 _externCache = c; │ │ │ │ │ +464 return *this; │ │ │ │ │ +465} │ │ │ │ │ +466inline _S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s & │ │ │ │ │ +_4_6_7_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_:_S_e_t_A_p_p_r_o_x_L_e_v_e_l_S_m_o_o_t_h(int level) { │ │ │ │ │ +468 _approxLevelSmooth = (unsigned char) level; │ │ │ │ │ +469 return *this; │ │ │ │ │ +470} │ │ │ │ │ +471inline _S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s & │ │ │ │ │ +_4_7_2_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_:_S_e_t_A_p_p_r_o_x_L_e_v_e_l_S_h_a_r_p(int level) { │ │ │ │ │ +473 _approxLevelSharp = (unsigned char) level; │ │ │ │ │ +474 return *this; │ │ │ │ │ +475} │ │ │ │ │ +476 │ │ │ │ │ +477// │ │ │ │ │ +478// Inline methods to initializes Surfaces: │ │ │ │ │ +479// │ │ │ │ │ +480template │ │ │ │ │ +481inline bool │ │ │ │ │ +_4_8_2_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_I_n_i_t_V_e_r_t_e_x_S_u_r_f_a_c_e(_I_n_d_e_x face, _S_u_r_f_a_c_e_<_R_E_A_L_> * s) const { │ │ │ │ │ +483 │ │ │ │ │ +484 return initSurfaces(face, &s->getSurfaceData(), 0, 0, 0, 0); │ │ │ │ │ +485} │ │ │ │ │ +486template │ │ │ │ │ +487inline bool │ │ │ │ │ +_4_8_8_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_I_n_i_t_V_a_r_y_i_n_g_S_u_r_f_a_c_e(_I_n_d_e_x face, _S_u_r_f_a_c_e_<_R_E_A_L_> * s) const { │ │ │ │ │ +489 │ │ │ │ │ +490 return initSurfaces(face, 0, &s->getSurfaceData(), 0, 0, 0); │ │ │ │ │ +491} │ │ │ │ │ +492template │ │ │ │ │ +493inline bool │ │ │ │ │ +_4_9_4_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_I_n_i_t_F_a_c_e_V_a_r_y_i_n_g_S_u_r_f_a_c_e(_I_n_d_e_x face, _S_u_r_f_a_c_e_<_R_E_A_L_> * s, │ │ │ │ │ +495 _F_V_a_r_I_D fvarID) const { │ │ │ │ │ +496 return initSurfaces(face, 0, 0, &s->getSurfaceData(), 1, &fvarID); │ │ │ │ │ +497} │ │ │ │ │ +498template │ │ │ │ │ +499inline bool │ │ │ │ │ +_5_0_0_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_I_n_i_t_F_a_c_e_V_a_r_y_i_n_g_S_u_r_f_a_c_e(_I_n_d_e_x face, _S_u_r_f_a_c_e_<_R_E_A_L_> * s) const │ │ │ │ │ +{ │ │ │ │ │ +501 _F_V_a_r_I_D dfltID = _factoryOptions._G_e_t_D_e_f_a_u_l_t_F_V_a_r_I_D(); │ │ │ │ │ +502 return initSurfaces(face, 0, 0, &s->getSurfaceData(), 1, &dfltID); │ │ │ │ │ +503} │ │ │ │ │ +504 │ │ │ │ │ +505template │ │ │ │ │ +506inline bool │ │ │ │ │ +_5_0_7_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_I_n_i_t_S_u_r_f_a_c_e_s(_I_n_d_e_x faceIndex, _S_u_r_f_a_c_e_<_R_E_A_L_> * vtxSurface, │ │ │ │ │ +508 _S_u_r_f_a_c_e_<_R_E_A_L_> * fvarSurfaces, _F_V_a_r_I_D const fvarIDs[], int fvarCount, │ │ │ │ │ +509 _S_u_r_f_a_c_e_<_R_E_A_L_> * varSurface) const { │ │ │ │ │ +510 │ │ │ │ │ +511 bool useDfltFVarID = fvarSurfaces && (fvarIDs == 0) && (fvarCount == 0); │ │ │ │ │ +512 _F_V_a_r_I_D dfltFVarID = useDfltFVarID ? _factoryOptions._G_e_t_D_e_f_a_u_l_t_F_V_a_r_I_D() : 0; │ │ │ │ │ +513 │ │ │ │ │ +514 return initSurfaces(faceIndex, │ │ │ │ │ +515 vtxSurface ? &vtxSurface->getSurfaceData() : 0, │ │ │ │ │ +516 varSurface ? &varSurface->getSurfaceData() : 0, │ │ │ │ │ +517 fvarSurfaces ? &fvarSurfaces->getSurfaceData() : 0, │ │ │ │ │ +518 fvarCount ? fvarCount : (fvarSurfaces != 0), │ │ │ │ │ +519 useDfltFVarID ? &dfltFVarID : fvarIDs); │ │ │ │ │ +520} │ │ │ │ │ +521 │ │ │ │ │ +522// │ │ │ │ │ +523// Inline methods to allocate and initialize Surfaces: │ │ │ │ │ +524// │ │ │ │ │ +525template │ │ │ │ │ +526inline _S_u_r_f_a_c_e_<_R_E_A_L_> * │ │ │ │ │ +_5_2_7_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_C_r_e_a_t_e_V_e_r_t_e_x_S_u_r_f_a_c_e(_I_n_d_e_x faceIndex) const { │ │ │ │ │ +528 _S_u_r_f_a_c_e_<_R_E_A_L_> * s = new _S_u_r_f_a_c_e_<_R_E_A_L_>(); │ │ │ │ │ +529 if (InitVertexSurface(faceIndex, s)) return s; │ │ │ │ │ +530 delete s; │ │ │ │ │ +531 return 0; │ │ │ │ │ +532} │ │ │ │ │ +533template │ │ │ │ │ +534inline _S_u_r_f_a_c_e_<_R_E_A_L_> * │ │ │ │ │ +_5_3_5_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_C_r_e_a_t_e_V_a_r_y_i_n_g_S_u_r_f_a_c_e(_I_n_d_e_x faceIndex) const { │ │ │ │ │ +536 _S_u_r_f_a_c_e_<_R_E_A_L_> * s = new _S_u_r_f_a_c_e_<_R_E_A_L_>(); │ │ │ │ │ +537 if (InitVaryingSurface(faceIndex, s)) return s; │ │ │ │ │ +538 delete s; │ │ │ │ │ +539 return 0; │ │ │ │ │ +540} │ │ │ │ │ +541template │ │ │ │ │ +542inline _S_u_r_f_a_c_e_<_R_E_A_L_> * │ │ │ │ │ +_5_4_3_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_C_r_e_a_t_e_F_a_c_e_V_a_r_y_i_n_g_S_u_r_f_a_c_e(_I_n_d_e_x faceIndex, _F_V_a_r_I_D fvarID) │ │ │ │ │ +const { │ │ │ │ │ +544 _S_u_r_f_a_c_e_<_R_E_A_L_> * s = new _S_u_r_f_a_c_e_<_R_E_A_L_>(); │ │ │ │ │ +545 if (InitFaceVaryingSurface(faceIndex, s, fvarID)) return s; │ │ │ │ │ +546 delete s; │ │ │ │ │ +547 return 0; │ │ │ │ │ +548} │ │ │ │ │ +549template │ │ │ │ │ +550inline _S_u_r_f_a_c_e_<_R_E_A_L_> * │ │ │ │ │ +_5_5_1_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_C_r_e_a_t_e_F_a_c_e_V_a_r_y_i_n_g_S_u_r_f_a_c_e(_I_n_d_e_x face) const { │ │ │ │ │ +552 _F_V_a_r_I_D dfltID = _factoryOptions._G_e_t_D_e_f_a_u_l_t_F_V_a_r_I_D(); │ │ │ │ │ +553 return CreateFaceVaryingSurface(face, dfltID); │ │ │ │ │ +554} │ │ │ │ │ +555 │ │ │ │ │ +556} // end namespace Bfr │ │ │ │ │ +557 │ │ │ │ │ +558} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ +559using namespace OPENSUBDIV_VERSION; │ │ │ │ │ +560 │ │ │ │ │ +561} // end namespace OpenSubdiv │ │ │ │ │ +562 │ │ │ │ │ +563#endif /* OPENSUBDIV3_BFR_SURFACE_FACTORY_H */ │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v │ │ │ │ │ DDeeffiinniittiioonn _l_i_m_i_t_s_._h_:_3_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_S_c_h_e_m_e_T_y_p_e │ │ │ │ │ +SchemeType │ │ │ │ │ +Enumerated type for all subdivision schemes supported by OpenSubdiv. │ │ │ │ │ +DDeeffiinniittiioonn _t_y_p_e_s_._h_:_3_7 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_P_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n │ │ │ │ │ +Simple class defining the 2D parameterization of a face. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n_._h_:_5_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e │ │ │ │ │ +Encapsulates the limit surface for a face of a mesh. │ │ │ │ │ +DDeeffiinniittiioonn _s_u_r_f_a_c_e_._h_:_5_9 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y │ │ │ │ │ +Base class providing initialization of a Surface for each face of a mesh. │ │ │ │ │ +DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_1_0_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_s_e_t_I_n_t_e_r_n_a_l_C_a_c_h_e │ │ │ │ │ +void setInternalCache(SurfaceFactoryCache *cache) │ │ │ │ │ +Subclass to identify an internal cache for use by base class. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_~_S_u_r_f_a_c_e_F_a_c_t_o_r_y │ │ │ │ │ +~SurfaceFactory() override │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_I_n_i_t_F_a_c_e_V_a_r_y_i_n_g_S_u_r_f_a_c_e │ │ │ │ │ +bool InitFaceVaryingSurface(Index faceIndex, Surface< REAL > *surface) const │ │ │ │ │ +Initialize a Surface for the default face-varying data. │ │ │ │ │ +DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_5_0_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_G_e_t_S_c_h_e_m_e_O_p_t_i_o_n_s │ │ │ │ │ +Sdc::Options GetSchemeOptions() const │ │ │ │ │ +Return the set of subdivision options. │ │ │ │ │ +DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_1_7_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_G_e_t_F_a_c_e_P_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n │ │ │ │ │ +Parameterization GetFaceParameterization(Index faceIndex) const │ │ │ │ │ +Return the Parameterization of a face with a limit surface. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y │ │ │ │ │ +SurfaceFactory(SurfaceFactory const &)=delete │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_F_a_c_e_H_a_s_L_i_m_i_t_S_u_r_f_a_c_e │ │ │ │ │ +bool FaceHasLimitSurface(Index faceIndex) const │ │ │ │ │ +Return if a specified face has a limit surface. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_o_p_e_r_a_t_o_r_= │ │ │ │ │ +SurfaceFactory & operator=(SurfaceFactory const &)=delete │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_C_r_e_a_t_e_V_e_r_t_e_x_S_u_r_f_a_c_e │ │ │ │ │ +Surface< REAL > * CreateVertexSurface(Index faceIndex) const │ │ │ │ │ +Construct a Surface for vertex data. │ │ │ │ │ +DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_5_2_7 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_C_r_e_a_t_e_F_a_c_e_V_a_r_y_i_n_g_S_u_r_f_a_c_e │ │ │ │ │ +Surface< REAL > * CreateFaceVaryingSurface(Index faceIndex) const │ │ │ │ │ +Construct a Surface for the default face-varying data. │ │ │ │ │ +DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_5_5_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_I_n_i_t_S_u_r_f_a_c_e_s │ │ │ │ │ +bool InitSurfaces(Index faceIndex, Surface< REAL > *vtxSurface, Surface< REAL > │ │ │ │ │ +*fvarSurfaces, FVarID const fvarIDs[]=0, int fvarCount=0, Surface< REAL > │ │ │ │ │ +*varSurface=0) const │ │ │ │ │ +Initialize multiple Surfaces at once. │ │ │ │ │ +DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_5_0_7 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_G_e_t_S_c_h_e_m_e_T_y_p_e │ │ │ │ │ +Sdc::SchemeType GetSchemeType() const │ │ │ │ │ +Return the subdivision scheme. │ │ │ │ │ +DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_1_7_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_C_r_e_a_t_e_V_a_r_y_i_n_g_S_u_r_f_a_c_e │ │ │ │ │ +Surface< REAL > * CreateVaryingSurface(Index faceIndex) const │ │ │ │ │ +Construct a Surface for varying data. │ │ │ │ │ +DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_5_3_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_I_n_i_t_V_e_r_t_e_x_S_u_r_f_a_c_e │ │ │ │ │ +bool InitVertexSurface(Index faceIndex, Surface< REAL > *surface) const │ │ │ │ │ +Initialize a Surface for vertex data. │ │ │ │ │ +DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_4_8_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_I_n_i_t_V_a_r_y_i_n_g_S_u_r_f_a_c_e │ │ │ │ │ +bool InitVaryingSurface(Index faceIndex, Surface< REAL > *surface) const │ │ │ │ │ +Initialize a Surface for varying data. │ │ │ │ │ +DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_4_8_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y │ │ │ │ │ +SurfaceFactory(Sdc::SchemeType schemeType, Sdc::Options const &schemeOptions, │ │ │ │ │ +Options const &limitOptions) │ │ │ │ │ +Constructor to be used by subclasses. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s │ │ │ │ │ +Simple set of options assigned to instances of SurfaceFactory. │ │ │ │ │ +DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_1_1_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_:_S_e_t_E_x_t_e_r_n_a_l_C_a_c_h_e │ │ │ │ │ +Options & SetExternalCache(SurfaceFactoryCache *c) │ │ │ │ │ +Assign an external cache to override the internal. │ │ │ │ │ +DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_4_6_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_:_E_n_a_b_l_e_C_a_c_h_i_n_g │ │ │ │ │ +Options & EnableCaching(bool on) │ │ │ │ │ +Enable or disable caching (default is true): │ │ │ │ │ +DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_4_5_7 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ +_S_e_t_A_p_p_r_o_x_L_e_v_e_l_S_m_o_o_t_h │ │ │ │ │ +Options & SetApproxLevelSmooth(int level) │ │ │ │ │ +Assign maximum refinement level for smooth features. │ │ │ │ │ +DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_4_6_7 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ +_G_e_t_A_p_p_r_o_x_L_e_v_e_l_S_m_o_o_t_h │ │ │ │ │ +int GetApproxLevelSmooth() const │ │ │ │ │ +Return maximum refinement level for smooth features. │ │ │ │ │ +DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_1_4_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_:_O_p_t_i_o_n_s │ │ │ │ │ +Options() │ │ │ │ │ +DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_1_1_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_:_I_s_C_a_c_h_i_n_g_E_n_a_b_l_e_d │ │ │ │ │ +bool IsCachingEnabled() const │ │ │ │ │ +Return if caching is enable. │ │ │ │ │ +DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_1_3_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_:_S_e_t_D_e_f_a_u_l_t_F_V_a_r_I_D │ │ │ │ │ +Options & SetDefaultFVarID(FVarID id) │ │ │ │ │ +Assign the default face-varying ID (none assigned by default) │ │ │ │ │ +DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_4_5_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ +_S_e_t_A_p_p_r_o_x_L_e_v_e_l_S_h_a_r_p │ │ │ │ │ +Options & SetApproxLevelSharp(int level) │ │ │ │ │ +Assign maximum refinement level for sharp features. │ │ │ │ │ +DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_4_7_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_:_G_e_t_D_e_f_a_u_l_t_F_V_a_r_I_D │ │ │ │ │ +FVarID GetDefaultFVarID() const │ │ │ │ │ +Return the default face-varying ID. │ │ │ │ │ +DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_1_2_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ +_G_e_t_A_p_p_r_o_x_L_e_v_e_l_S_h_a_r_p │ │ │ │ │ +int GetApproxLevelSharp() const │ │ │ │ │ +Return maximum refinement level for sharp features. │ │ │ │ │ +DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_1_4_7 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_:_G_e_t_E_x_t_e_r_n_a_l_C_a_c_h_e │ │ │ │ │ +SurfaceFactoryCache * GetExternalCache() const │ │ │ │ │ +Return any assigned external cache. │ │ │ │ │ +DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_1_3_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_C_a_c_h_e │ │ │ │ │ +Container used internally by SurfaceFactory to store reusable information. │ │ │ │ │ +DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_C_a_c_h_e_._h_:_5_9 │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r │ │ │ │ │ Abstract interface adapting SurfaceFactory to a connected mesh representation. │ │ │ │ │ DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_._h_:_6_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_:_: │ │ │ │ │ -_g_e_t_F_a_c_e_V_e_r_t_e_x_I_n_c_i_d_e_n_t_F_a_c_e_F_V_a_r_V_a_l_u_e_I_n_d_i_c_e_s │ │ │ │ │ -virtual int getFaceVertexIncidentFaceFVarValueIndices(Index faceIndex, int │ │ │ │ │ -faceVertex, FVarID fvarID, Index fvarValueIndices[]) const =0 │ │ │ │ │ -Gather face-varying indices of incident faces around a face-vertex. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_:_: │ │ │ │ │ -_g_e_t_F_a_c_e_V_e_r_t_e_x_I_n_c_i_d_e_n_t_F_a_c_e_V_e_r_t_e_x_I_n_d_i_c_e_s │ │ │ │ │ -virtual int getFaceVertexIncidentFaceVertexIndices(Index faceIndex, int │ │ │ │ │ -faceVertex, Index vertexIndices[]) const =0 │ │ │ │ │ -Gather vertex indices of incident faces around a face-vertex. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_:_:_g_e_t_F_a_c_e_S_i_z_e │ │ │ │ │ -virtual int getFaceSize(Index faceIndex) const =0 │ │ │ │ │ -Returns the size of a face (number of vertices) │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_:_:_I_n_d_e_x │ │ │ │ │ int Index │ │ │ │ │ Integer type representing a mesh index. │ │ │ │ │ DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_._h_:_6_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_:_: │ │ │ │ │ -_p_o_p_u_l_a_t_e_F_a_c_e_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ -virtual int populateFaceVertexDescriptor(Index faceIndex, int faceVertex, │ │ │ │ │ -VertexDescriptor *vertexDescriptor) const =0 │ │ │ │ │ -Describe the topology of incident faces around a face-vertex. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_:_: │ │ │ │ │ -_g_e_t_F_a_c_e_N_e_i_g_h_b_o_r_h_o_o_d_V_e_r_t_e_x_I_n_d_i_c_e_s_I_f_R_e_g_u_l_a_r │ │ │ │ │ -virtual bool getFaceNeighborhoodVertexIndicesIfRegular(Index faceIndex, Index │ │ │ │ │ -vertexIndices[]) const │ │ │ │ │ -DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_._h_:_2_1_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_:_: │ │ │ │ │ -_g_e_t_F_a_c_e_N_e_i_g_h_b_o_r_h_o_o_d_F_V_a_r_V_a_l_u_e_I_n_d_i_c_e_s_I_f_R_e_g_u_l_a_r │ │ │ │ │ -virtual bool getFaceNeighborhoodFVarValueIndicesIfRegular(Index faceIndex, │ │ │ │ │ -FVarID fvarID, Index fvarValueIndices[]) const │ │ │ │ │ -DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_._h_:_2_2_4 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_:_: │ │ │ │ │ -_g_e_t_F_a_c_e_F_V_a_r_V_a_l_u_e_I_n_d_i_c_e_s │ │ │ │ │ -virtual int getFaceFVarValueIndices(Index faceIndex, FVarID fvarID, Index │ │ │ │ │ -fvarValueIndices[]) const =0 │ │ │ │ │ -Gather the face-varying indices of the face's vertices. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_:_: │ │ │ │ │ -_g_e_t_F_a_c_e_V_e_r_t_e_x_I_n_d_i_c_e_s │ │ │ │ │ -virtual int getFaceVertexIndices(Index faceIndex, Index vertexIndices[]) const │ │ │ │ │ -=0 │ │ │ │ │ -Gather the indices of the face's vertices. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_:_:_i_s_F_a_c_e_H_o_l_e │ │ │ │ │ -virtual bool isFaceHole(Index faceIndex) const =0 │ │ │ │ │ -Returns if a face is a hole. │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_:_:_F_V_a_r_I_D │ │ │ │ │ std::intptr_t FVarID │ │ │ │ │ Type used to identify and specify face-varying primvars. │ │ │ │ │ DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_._h_:_8_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ -Simple class used by subclasses of SurfaceFactory to describe a vertex. │ │ │ │ │ -DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_1_3_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_O_p_t_i_o_n_s │ │ │ │ │ +All supported options applying to subdivision scheme. │ │ │ │ │ +DDeeffiinniittiioonn _o_p_t_i_o_n_s_._h_:_5_1 │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _b_f_r │ │ │ │ │ - * _s_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_._h │ │ │ │ │ + * _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00686.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/bfr/surfaceFactory.h File Reference │ │ │ │ +OpenSubdiv: opensubdiv/bfr/surfaceFactoryMeshAdapter.h File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -90,33 +90,26 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
surfaceFactory.h File Reference
│ │ │ │ +
surfaceFactoryMeshAdapter.h File Reference
│ │ │ │
│ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ -#include "../bfr/surface.h"
│ │ │ │ -#include "../bfr/surfaceFactoryMeshAdapter.h"
│ │ │ │ -#include "../sdc/options.h"
│ │ │ │ -#include "../sdc/types.h"
│ │ │ │ #include <cstdint>
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  SurfaceFactory
 Base class providing initialization of a Surface for each face of a mesh. More...
 
class  SurfaceFactory::Options
 Simple set of options assigned to instances of SurfaceFactory. More...
class  SurfaceFactoryMeshAdapter
 Abstract interface adapting SurfaceFactory to a connected mesh representation. More...
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -125,13 +118,13 @@ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  OpenSubdiv
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION
 
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,32 +1,25 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -surfaceFactory.h File Reference │ │ │ │ │ +surfaceFactoryMeshAdapter.h File Reference │ │ │ │ │ #include "../version.h" │ │ │ │ │ -#include "_._._/_b_f_r_/_s_u_r_f_a_c_e_._h" │ │ │ │ │ -#include "_._._/_b_f_r_/_s_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_._h" │ │ │ │ │ -#include "_._._/_s_d_c_/_o_p_t_i_o_n_s_._h" │ │ │ │ │ -#include "_._._/_s_d_c_/_t_y_p_e_s_._h" │ │ │ │ │ #include │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -class   _S_u_r_f_a_c_e_F_a_c_t_o_r_y │ │ │ │ │ -  Base class providing initialization of a _S_u_r_f_a_c_e for each face of a │ │ │ │ │ - mesh. _M_o_r_e_._._. │ │ │ │ │ -  │ │ │ │ │ -class   _S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s │ │ │ │ │ -  Simple set of options assigned to instances of _S_u_r_f_a_c_e_F_a_c_t_o_r_y. _M_o_r_e_._._. │ │ │ │ │ +class   _S_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r │ │ │ │ │ +  Abstract interface adapting _S_u_r_f_a_c_e_F_a_c_t_o_r_y to a connected mesh │ │ │ │ │ + representation. _M_o_r_e_._._. │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r │ │ │ │ │   │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _b_f_r │ │ │ │ │ - * _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h │ │ │ │ │ + * _s_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00686.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -1,4 +1,3 @@ │ │ │ │ │ var a00686 = [ │ │ │ │ │ - ["SurfaceFactory", "a00941.html", "a00941"], │ │ │ │ │ - ["Options", "a00945.html", "a00945"] │ │ │ │ │ + ["SurfaceFactoryMeshAdapter", "a00957.html", "a00957"] │ │ │ │ │ ]; │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00686_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/bfr/surfaceFactory.h Source File │ │ │ │ +OpenSubdiv: opensubdiv/bfr/surfaceFactoryMeshAdapter.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -92,15 +92,15 @@ │ │ │ │
No Matches
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
surfaceFactory.h
│ │ │ │ +
surfaceFactoryMeshAdapter.h
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1//
│ │ │ │
2// Copyright 2021 Pixar
│ │ │ │
3//
│ │ │ │
4// Licensed under the Apache License, Version 2.0 (the "Apache License")
│ │ │ │
5// with the following modification; you may not use this file except in
│ │ │ │ @@ -119,412 +119,149 @@ │ │ │ │
18// Unless required by applicable law or agreed to in writing, software
│ │ │ │
19// distributed under the Apache License with the above modification is
│ │ │ │
20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
│ │ │ │
21// KIND, either express or implied. See the Apache License for the specific
│ │ │ │
22// language governing permissions and limitations under the Apache License.
│ │ │ │
23//
│ │ │ │
24
│ │ │ │ -
25#ifndef OPENSUBDIV3_BFR_SURFACE_FACTORY_H
│ │ │ │ -
26#define OPENSUBDIV3_BFR_SURFACE_FACTORY_H
│ │ │ │ +
25#ifndef OPENSUBDIV3_BFR_SURFACE_FACTORY_ADAPTER_H
│ │ │ │ +
26#define OPENSUBDIV3_BFR_SURFACE_FACTORY_ADAPTER_H
│ │ │ │
27
│ │ │ │
28#include "../version.h"
│ │ │ │
29
│ │ │ │ -
30#include "../bfr/surface.h"
│ │ │ │ -
31#include "../bfr/surfaceFactoryMeshAdapter.h"
│ │ │ │ -
32#include "../sdc/options.h"
│ │ │ │ -
33#include "../sdc/types.h"
│ │ │ │ +
30#include <cstdint>
│ │ │ │ +
31
│ │ │ │ +
32namespace OpenSubdiv {
│ │ │ │ +
33namespace OPENSUBDIV_VERSION {
│ │ │ │
34
│ │ │ │ -
35#include <cstdint>
│ │ │ │ +
35namespace Bfr {
│ │ │ │
36
│ │ │ │ -
37namespace OpenSubdiv {
│ │ │ │ -
38namespace OPENSUBDIV_VERSION {
│ │ │ │ -
39
│ │ │ │ -
40namespace Bfr {
│ │ │ │ -
41
│ │ │ │ -
42//
│ │ │ │ -
43// Forward declarations of public and internal classes used by factories:
│ │ │ │ -
44//
│ │ │ │ -
45class SurfaceFactoryCache;
│ │ │ │ -
46class FaceTopology;
│ │ │ │ -
47class FaceSurface;
│ │ │ │ -
48
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
104public:
│ │ │ │ -
│ │ │ │ -
116 class Options {
│ │ │ │ -
117 public:
│ │ │ │ -
│ │ │ │ -
118 Options() : _dfltFVarID(-1), _externCache(0), _enableCache(true),
│ │ │ │ -
119 _approxLevelSmooth(2), _approxLevelSharp(6) { }
│ │ │ │ -
│ │ │ │ +
37class VertexDescriptor;
│ │ │ │ +
38
│ │ │ │ +
43// SurfaceFactoryMeshAdapter is an abstract class that defines the interface
│ │ │ │ +
44// through which subclasses of SurfaceFactory adapt to a connected mesh
│ │ │ │ +
45// representation. The interface defines methods that describe the mesh
│ │ │ │ +
46// topology and control indices in the neighborhood of a mesh -- from
│ │ │ │ +
47// which the SurfaceFactory to identifies an appropriate limit surface.
│ │ │ │ +
48//
│ │ │ │ +
49// SurfaceFactoryMeshAdapter methods require a subclass to provide a complete
│ │ │ │ +
50// description of the topology around a base face, as well as indices
│ │ │ │ +
51// associated with it (both vertex and face-varying). The intent here is
│ │ │ │ +
52// to keep the number of methods required to a minimum, and also to minimize
│ │ │ │ +
53// the number of invocations required by the factory.
│ │ │ │ +
54//
│ │ │ │ +
55// With the need to support both linear and non-linear cases (for which
│ │ │ │ +
56// linear is trivial by comparison) and the limit surface for both vertex
│ │ │ │ +
57// and face-varying topologies, the result is a small set of methods
│ │ │ │ +
58// covering this matrix of functionality.
│ │ │ │ +
59//
│ │ │ │ +
60// Since face-varying data may differ in topology from the vertex data --
│ │ │ │ +
61// with each set of face-varying data potentially having its own unique
│ │ │ │ +
62// topology -- sets of face-varying data are uniquely distinguished by an
│ │ │ │ +
63// associated integer (a face-varying ID).
│ │ │ │ +
64//
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
66public:
│ │ │ │ +
68 typedef int Index;
│ │ │ │ +
69
│ │ │ │ +
80 typedef std::intptr_t FVarID;
│ │ │ │ +
81
│ │ │ │ +
82protected:
│ │ │ │ + │ │ │ │ +
85 virtual ~SurfaceFactoryMeshAdapter() { }
│ │ │ │ +
87
│ │ │ │ +
88protected:
│ │ │ │ +
90
│ │ │ │ +
94
│ │ │ │ +
96 virtual bool isFaceHole(Index faceIndex) const = 0;
│ │ │ │ +
97
│ │ │ │ +
99 virtual int getFaceSize(Index faceIndex) const = 0;
│ │ │ │ +
101
│ │ │ │ +
103
│ │ │ │ +
111
│ │ │ │ +
113 virtual int getFaceVertexIndices(Index faceIndex,
│ │ │ │ +
114 Index vertexIndices[]) const = 0;
│ │ │ │ +
115
│ │ │ │ +
117 virtual int getFaceFVarValueIndices(Index faceIndex,
│ │ │ │ +
118 FVarID fvarID, Index fvarValueIndices[]) const = 0;
│ │ │ │
120
│ │ │ │ - │ │ │ │ -
125 FVarID GetDefaultFVarID() const { return _dfltFVarID; }
│ │ │ │ -
126
│ │ │ │ -
128 Options & EnableCaching(bool on);
│ │ │ │ -
130 bool IsCachingEnabled() const { return _enableCache; }
│ │ │ │ -
131
│ │ │ │ - │ │ │ │ -
135 SurfaceFactoryCache * GetExternalCache() const { return _externCache; }
│ │ │ │ -
136
│ │ │ │ -
137 // Set refinement levels used to approximate the limit surface
│ │ │ │ -
138 // for smooth and sharp features (reasonable defaults assigned):
│ │ │ │ -
140 Options & SetApproxLevelSmooth(int level);
│ │ │ │ -
142 int GetApproxLevelSmooth() const { return _approxLevelSmooth; }
│ │ │ │ -
143
│ │ │ │ -
145 Options & SetApproxLevelSharp(int level);
│ │ │ │ -
147 int GetApproxLevelSharp() const { return _approxLevelSharp; }
│ │ │ │ -
148
│ │ │ │ -
149 private:
│ │ │ │ -
150 // Member variables:
│ │ │ │ -
151 FVarID _dfltFVarID;
│ │ │ │ -
152
│ │ │ │ -
153 SurfaceFactoryCache * _externCache;
│ │ │ │ -
154
│ │ │ │ -
155 unsigned char _enableCache : 1;
│ │ │ │ -
156 unsigned char _approxLevelSmooth;
│ │ │ │ -
157 unsigned char _approxLevelSharp;
│ │ │ │ -
158 };
│ │ │ │ -
│ │ │ │ +
121protected:
│ │ │ │ +
123
│ │ │ │
159
│ │ │ │ -
160public:
│ │ │ │ -
161 ~SurfaceFactory() override;
│ │ │ │ -
162
│ │ │ │ + │ │ │ │ +
162 Index faceIndex, int faceVertex,
│ │ │ │ +
163 VertexDescriptor * vertexDescriptor) const = 0;
│ │ │ │
164
│ │ │ │ -
168
│ │ │ │ -
170 Sdc::SchemeType GetSchemeType() const { return _subdivScheme; }
│ │ │ │ -
171
│ │ │ │ -
173 Sdc::Options GetSchemeOptions() const { return _subdivOptions; }
│ │ │ │ -
175
│ │ │ │ -
176public:
│ │ │ │ -
178
│ │ │ │ -
190
│ │ │ │ -
200 bool FaceHasLimitSurface(Index faceIndex) const;
│ │ │ │ -
201
│ │ │ │ - │ │ │ │ -
210
│ │ │ │ -
211public:
│ │ │ │ + │ │ │ │ +
167 Index faceIndex, int faceVertex,
│ │ │ │ +
168 Index vertexIndices[]) const = 0;
│ │ │ │ +
169
│ │ │ │ + │ │ │ │ +
173 Index faceIndex, int faceVertex,
│ │ │ │ +
174 FVarID fvarID, Index fvarValueIndices[]) const = 0;
│ │ │ │ +
176
│ │ │ │ +
177protected:
│ │ │ │ +
179
│ │ │ │ + │ │ │ │ +
204 Index faceIndex, Index vertexIndices[]) const;
│ │ │ │ +
205
│ │ │ │ + │ │ │ │ +
207 Index faceIndex, FVarID fvarID, Index fvarValueIndices[]) const;
│ │ │ │ +
209
│ │ │ │ +
210private:
│ │ │ │ +
211 // No private members
│ │ │ │ +
212};
│ │ │ │ +
│ │ │ │
213
│ │ │ │ +
214//
│ │ │ │ +
215// Inline defaults for optional methods:
│ │ │ │ +
216//
│ │ │ │ +
217inline bool
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
219 Index, Index[]) const {
│ │ │ │ +
220 return false;
│ │ │ │ +
221}
│ │ │ │ +
│ │ │ │ +
222
│ │ │ │ +
223inline bool
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
225 Index, FVarID, Index[]) const {
│ │ │ │ +
226 return false;
│ │ │ │ +
227}
│ │ │ │ +
│ │ │ │ +
228
│ │ │ │ +
229} // end namespace Bfr
│ │ │ │ +
230
│ │ │ │ +
231} // end namespace OPENSUBDIV_VERSION
│ │ │ │ +
232using namespace OPENSUBDIV_VERSION;
│ │ │ │
233
│ │ │ │ -
241 template <typename REAL>
│ │ │ │ -
242 bool InitVertexSurface(Index faceIndex, Surface<REAL> * surface) const;
│ │ │ │ -
243
│ │ │ │ -
251 template <typename REAL>
│ │ │ │ -
252 bool InitVaryingSurface(Index faceIndex, Surface<REAL> * surface) const;
│ │ │ │ -
253
│ │ │ │ -
266 template <typename REAL>
│ │ │ │ -
267 bool InitFaceVaryingSurface(Index faceIndex, Surface<REAL> * surface) const;
│ │ │ │ -
268
│ │ │ │ -
278 template <typename REAL>
│ │ │ │ -
279 bool InitFaceVaryingSurface(Index faceIndex, Surface<REAL> * surface,
│ │ │ │ -
280 FVarID fvarID) const;
│ │ │ │ -
281
│ │ │ │ -
307 template <typename REAL>
│ │ │ │ -
308 bool InitSurfaces(Index faceIndex, Surface<REAL> * vtxSurface,
│ │ │ │ -
309 Surface<REAL> * fvarSurfaces,
│ │ │ │ -
310 FVarID const fvarIDs[] = 0,
│ │ │ │ -
311 int fvarCount = 0,
│ │ │ │ -
312 Surface<REAL> * varSurface = 0) const;
│ │ │ │ -
314
│ │ │ │ -
316
│ │ │ │ -
319 //
│ │ │ │ -
320 // WIP - considering removing these since non-essential
│ │ │ │ -
321 //
│ │ │ │ -
322
│ │ │ │ -
324 template <typename REAL=float>
│ │ │ │ -
325 Surface<REAL> * CreateVertexSurface(Index faceIndex) const;
│ │ │ │ -
326
│ │ │ │ -
328 template <typename REAL=float>
│ │ │ │ -
329 Surface<REAL> * CreateVaryingSurface(Index faceIndex) const;
│ │ │ │ -
330
│ │ │ │ -
332 template <typename REAL=float>
│ │ │ │ - │ │ │ │ -
334
│ │ │ │ -
336 template <typename REAL=float>
│ │ │ │ -
337 Surface<REAL> * CreateFaceVaryingSurface(Index faceIndex, FVarID id) const;
│ │ │ │ -
339
│ │ │ │ -
340protected:
│ │ │ │ -
342
│ │ │ │ -
346
│ │ │ │ - │ │ │ │ -
359 Sdc::Options const & schemeOptions,
│ │ │ │ -
360 Options const & limitOptions);
│ │ │ │ -
361
│ │ │ │ - │ │ │ │ -
364
│ │ │ │ - │ │ │ │ - │ │ │ │ -
368
│ │ │ │ -
369private:
│ │ │ │ -
370 // Supporting internal methods:
│ │ │ │ -
371 void setSubdivisionOptions(Sdc::SchemeType, Sdc::Options const & options);
│ │ │ │ -
372 void setFactoryOptions(Options const & factoryOptions);
│ │ │ │ -
373
│ │ │ │ -
374 bool faceHasLimitSimple(Index faceIndex, int faceSize) const;
│ │ │ │ -
375
│ │ │ │ -
376 bool faceHasLimitNeighborhood(Index faceIndex) const;
│ │ │ │ -
377 bool faceHasLimitNeighborhood(FaceTopology const & faceTopology) const;
│ │ │ │ -
378
│ │ │ │ -
379 class SurfaceSet;
│ │ │ │ -
380
│ │ │ │ -
381 bool populateAllSurfaces( Index faceIndex, SurfaceSet * sSetPtr) const;
│ │ │ │ -
382 bool populateLinearSurfaces( Index faceIndex, SurfaceSet * sSetPtr) const;
│ │ │ │ -
383 bool populateNonLinearSurfaces(Index faceIndex, SurfaceSet * sSetPtr) const;
│ │ │ │ -
384
│ │ │ │ -
385 bool initSurfaces(Index faceIndex, internal::SurfaceData * vtxSurface,
│ │ │ │ -
386 internal::SurfaceData * varSurface,
│ │ │ │ -
387 internal::SurfaceData * fvarSurfaces,
│ │ │ │ -
388 int fvarCount,
│ │ │ │ -
389 FVarID const fvarIDs[]) const;
│ │ │ │ -
390
│ │ │ │ -
391 // Methods to assemble topology and corresponding indices for entire face:
│ │ │ │ -
392 bool isFaceNeighborhoodRegular(Index faceIndex,
│ │ │ │ -
393 FVarID const * fvarPtrOrVtx,
│ │ │ │ -
394 Index indices[]) const;
│ │ │ │ -
395
│ │ │ │ -
396 bool initFaceNeighborhoodTopology(Index faceIndex,
│ │ │ │ -
397 FaceTopology * topology) const;
│ │ │ │ -
398
│ │ │ │ -
399 bool gatherFaceNeighborhoodTopology(Index faceIndex,
│ │ │ │ -
400 FaceTopology * topology) const;
│ │ │ │ -
401
│ │ │ │ -
402 int gatherFaceNeighborhoodIndices(Index faceIndex,
│ │ │ │ -
403 FaceTopology const & topology,
│ │ │ │ -
404 FVarID const * fvarPtrOrVtx,
│ │ │ │ -
405 Index indices[]) const;
│ │ │ │ -
406
│ │ │ │ -
407 // Methods to assemble Surfaces for the different categories of patch:
│ │ │ │ -
408 typedef internal::SurfaceData SurfaceType;
│ │ │ │ -
409
│ │ │ │ -
410 void assignLinearSurface(SurfaceType * surfacePtr,
│ │ │ │ -
411 Index faceIndex,
│ │ │ │ -
412 FVarID const * fvarPtrOrVtx) const;
│ │ │ │ -
413
│ │ │ │ -
414 void assignRegularSurface(SurfaceType * surfacePtr,
│ │ │ │ -
415 Index const surfacePatchPoints[]) const;
│ │ │ │ -
416
│ │ │ │ -
417 void assignRegularSurface(SurfaceType * surfacePtr,
│ │ │ │ -
418 FaceSurface const & surfaceDescription) const;
│ │ │ │ -
419
│ │ │ │ -
420 void assignIrregularSurface(SurfaceType * surfacePtr,
│ │ │ │ -
421 FaceSurface const & surfaceDescription) const;
│ │ │ │ -
422
│ │ │ │ -
423 void copyNonLinearSurface(SurfaceType * surfacePtr,
│ │ │ │ -
424 SurfaceType const & surfaceSource,
│ │ │ │ -
425 FaceSurface const & surfaceDescription) const;
│ │ │ │ -
426
│ │ │ │ -
427private:
│ │ │ │ -
428 // Members describing options and subdivision properties (very little
│ │ │ │ -
429 // memory and low initialization cost)
│ │ │ │ -
430 Sdc::SchemeType _subdivScheme;
│ │ │ │ -
431 Sdc::Options _subdivOptions;
│ │ │ │ -
432 Options _factoryOptions;
│ │ │ │ -
433
│ │ │ │ -
434 // Members related to subdivision topology, options and limit tests:
│ │ │ │ -
435 unsigned int _linearScheme : 1;
│ │ │ │ -
436 unsigned int _linearFVarInterp : 1;
│ │ │ │ -
437
│ │ │ │ -
438 unsigned int _testNeighborhoodForLimit : 1;
│ │ │ │ -
439 unsigned int _rejectSmoothBoundariesForLimit : 1;
│ │ │ │ -
440 unsigned int _rejectIrregularFacesForLimit : 1;
│ │ │ │ -
441
│ │ │ │ -
442 int _regFaceSize;
│ │ │ │ -
443
│ │ │ │ -
444 // Members related to caching:
│ │ │ │ -
445 SurfaceFactoryCache mutable * _topologyCache;
│ │ │ │ -
446};
│ │ │ │ -
│ │ │ │ -
447
│ │ │ │ -
448//
│ │ │ │ -
449// Inline methods for Options:
│ │ │ │ -
450//
│ │ │ │ - │ │ │ │ -
│ │ │ │ - │ │ │ │ -
453 _dfltFVarID = id;
│ │ │ │ -
454 return *this;
│ │ │ │ -
455}
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ - │ │ │ │ -
458 _enableCache = on;
│ │ │ │ -
459 return *this;
│ │ │ │ -
460}
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ - │ │ │ │ -
463 _externCache = c;
│ │ │ │ -
464 return *this;
│ │ │ │ -
465}
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ - │ │ │ │ -
468 _approxLevelSmooth = (unsigned char) level;
│ │ │ │ -
469 return *this;
│ │ │ │ -
470}
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
│ │ │ │ - │ │ │ │ -
473 _approxLevelSharp = (unsigned char) level;
│ │ │ │ -
474 return *this;
│ │ │ │ -
475}
│ │ │ │ -
│ │ │ │ -
476
│ │ │ │ -
477//
│ │ │ │ -
478// Inline methods to initializes Surfaces:
│ │ │ │ -
479//
│ │ │ │ -
480template <typename REAL>
│ │ │ │ -
481inline bool
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
483
│ │ │ │ -
484 return initSurfaces(face, &s->getSurfaceData(), 0, 0, 0, 0);
│ │ │ │ -
485}
│ │ │ │ -
│ │ │ │ -
486template <typename REAL>
│ │ │ │ -
487inline bool
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
489
│ │ │ │ -
490 return initSurfaces(face, 0, &s->getSurfaceData(), 0, 0, 0);
│ │ │ │ -
491}
│ │ │ │ -
│ │ │ │ -
492template <typename REAL>
│ │ │ │ -
493inline bool
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
495 FVarID fvarID) const {
│ │ │ │ -
496 return initSurfaces(face, 0, 0, &s->getSurfaceData(), 1, &fvarID);
│ │ │ │ -
497}
│ │ │ │ -
│ │ │ │ -
498template <typename REAL>
│ │ │ │ -
499inline bool
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
501 FVarID dfltID = _factoryOptions.GetDefaultFVarID();
│ │ │ │ -
502 return initSurfaces(face, 0, 0, &s->getSurfaceData(), 1, &dfltID);
│ │ │ │ -
503}
│ │ │ │ -
│ │ │ │ -
504
│ │ │ │ -
505template <typename REAL>
│ │ │ │ -
506inline bool
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
508 Surface<REAL> * fvarSurfaces, FVarID const fvarIDs[], int fvarCount,
│ │ │ │ -
509 Surface<REAL> * varSurface) const {
│ │ │ │ -
510
│ │ │ │ -
511 bool useDfltFVarID = fvarSurfaces && (fvarIDs == 0) && (fvarCount == 0);
│ │ │ │ -
512 FVarID dfltFVarID = useDfltFVarID ? _factoryOptions.GetDefaultFVarID() : 0;
│ │ │ │ -
513
│ │ │ │ -
514 return initSurfaces(faceIndex,
│ │ │ │ -
515 vtxSurface ? &vtxSurface->getSurfaceData() : 0,
│ │ │ │ -
516 varSurface ? &varSurface->getSurfaceData() : 0,
│ │ │ │ -
517 fvarSurfaces ? &fvarSurfaces->getSurfaceData() : 0,
│ │ │ │ -
518 fvarCount ? fvarCount : (fvarSurfaces != 0),
│ │ │ │ -
519 useDfltFVarID ? &dfltFVarID : fvarIDs);
│ │ │ │ -
520}
│ │ │ │ -
│ │ │ │ -
521
│ │ │ │ -
522//
│ │ │ │ -
523// Inline methods to allocate and initialize Surfaces:
│ │ │ │ -
524//
│ │ │ │ -
525template <typename REAL>
│ │ │ │ -
526inline Surface<REAL> *
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
528 Surface<REAL> * s = new Surface<REAL>();
│ │ │ │ -
529 if (InitVertexSurface<REAL>(faceIndex, s)) return s;
│ │ │ │ -
530 delete s;
│ │ │ │ -
531 return 0;
│ │ │ │ -
532}
│ │ │ │ -
│ │ │ │ -
533template <typename REAL>
│ │ │ │ -
534inline Surface<REAL> *
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
536 Surface<REAL> * s = new Surface<REAL>();
│ │ │ │ -
537 if (InitVaryingSurface<REAL>(faceIndex, s)) return s;
│ │ │ │ -
538 delete s;
│ │ │ │ -
539 return 0;
│ │ │ │ -
540}
│ │ │ │ -
│ │ │ │ -
541template <typename REAL>
│ │ │ │ -
542inline Surface<REAL> *
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
544 Surface<REAL> * s = new Surface<REAL>();
│ │ │ │ -
545 if (InitFaceVaryingSurface<REAL>(faceIndex, s, fvarID)) return s;
│ │ │ │ -
546 delete s;
│ │ │ │ -
547 return 0;
│ │ │ │ -
548}
│ │ │ │ -
│ │ │ │ -
549template <typename REAL>
│ │ │ │ -
550inline Surface<REAL> *
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
552 FVarID dfltID = _factoryOptions.GetDefaultFVarID();
│ │ │ │ -
553 return CreateFaceVaryingSurface<REAL>(face, dfltID);
│ │ │ │ -
554}
│ │ │ │ -
│ │ │ │ -
555
│ │ │ │ -
556} // end namespace Bfr
│ │ │ │ -
557
│ │ │ │ -
558} // end namespace OPENSUBDIV_VERSION
│ │ │ │ -
559using namespace OPENSUBDIV_VERSION;
│ │ │ │ -
560
│ │ │ │ -
561} // end namespace OpenSubdiv
│ │ │ │ -
562
│ │ │ │ -
563#endif /* OPENSUBDIV3_BFR_SURFACE_FACTORY_H */
│ │ │ │ +
234} // end namespace OpenSubdiv
│ │ │ │ +
235
│ │ │ │ +
236#endif /* OPENSUBDIV3_BFR_SURFACE_FACTORY_ADAPTER_H */
│ │ │ │ │ │ │ │ -
SchemeType
Enumerated type for all subdivision schemes supported by OpenSubdiv.
Definition types.h:37
│ │ │ │ -
Simple class defining the 2D parameterization of a face.
│ │ │ │ -
Encapsulates the limit surface for a face of a mesh.
Definition surface.h:59
│ │ │ │ -
Base class providing initialization of a Surface for each face of a mesh.
│ │ │ │ -
void setInternalCache(SurfaceFactoryCache *cache)
Subclass to identify an internal cache for use by base class.
│ │ │ │ - │ │ │ │ -
bool InitFaceVaryingSurface(Index faceIndex, Surface< REAL > *surface) const
Initialize a Surface for the default face-varying data.
│ │ │ │ -
Sdc::Options GetSchemeOptions() const
Return the set of subdivision options.
│ │ │ │ -
Parameterization GetFaceParameterization(Index faceIndex) const
Return the Parameterization of a face with a limit surface.
│ │ │ │ -
SurfaceFactory(SurfaceFactory const &)=delete
│ │ │ │ -
bool FaceHasLimitSurface(Index faceIndex) const
Return if a specified face has a limit surface.
│ │ │ │ -
SurfaceFactory & operator=(SurfaceFactory const &)=delete
│ │ │ │ -
Surface< REAL > * CreateVertexSurface(Index faceIndex) const
Construct a Surface for vertex data.
│ │ │ │ -
Surface< REAL > * CreateFaceVaryingSurface(Index faceIndex) const
Construct a Surface for the default face-varying data.
│ │ │ │ -
bool InitSurfaces(Index faceIndex, Surface< REAL > *vtxSurface, Surface< REAL > *fvarSurfaces, FVarID const fvarIDs[]=0, int fvarCount=0, Surface< REAL > *varSurface=0) const
Initialize multiple Surfaces at once.
│ │ │ │ -
Sdc::SchemeType GetSchemeType() const
Return the subdivision scheme.
│ │ │ │ -
Surface< REAL > * CreateVaryingSurface(Index faceIndex) const
Construct a Surface for varying data.
│ │ │ │ -
bool InitVertexSurface(Index faceIndex, Surface< REAL > *surface) const
Initialize a Surface for vertex data.
│ │ │ │ -
bool InitVaryingSurface(Index faceIndex, Surface< REAL > *surface) const
Initialize a Surface for varying data.
│ │ │ │ -
SurfaceFactory(Sdc::SchemeType schemeType, Sdc::Options const &schemeOptions, Options const &limitOptions)
Constructor to be used by subclasses.
│ │ │ │ -
Simple set of options assigned to instances of SurfaceFactory.
│ │ │ │ -
Options & SetExternalCache(SurfaceFactoryCache *c)
Assign an external cache to override the internal.
│ │ │ │ -
Options & EnableCaching(bool on)
Enable or disable caching (default is true):
│ │ │ │ -
Options & SetApproxLevelSmooth(int level)
Assign maximum refinement level for smooth features.
│ │ │ │ -
int GetApproxLevelSmooth() const
Return maximum refinement level for smooth features.
│ │ │ │ - │ │ │ │ -
bool IsCachingEnabled() const
Return if caching is enable.
│ │ │ │ -
Options & SetDefaultFVarID(FVarID id)
Assign the default face-varying ID (none assigned by default)
│ │ │ │ -
Options & SetApproxLevelSharp(int level)
Assign maximum refinement level for sharp features.
│ │ │ │ -
FVarID GetDefaultFVarID() const
Return the default face-varying ID.
│ │ │ │ -
int GetApproxLevelSharp() const
Return maximum refinement level for sharp features.
│ │ │ │ -
SurfaceFactoryCache * GetExternalCache() const
Return any assigned external cache.
│ │ │ │ -
Container used internally by SurfaceFactory to store reusable information.
│ │ │ │ -
Abstract interface adapting SurfaceFactory to a connected mesh representation.
│ │ │ │ - │ │ │ │ -
std::intptr_t FVarID
Type used to identify and specify face-varying primvars.
│ │ │ │ -
All supported options applying to subdivision scheme.
Definition options.h:51
│ │ │ │ +
Abstract interface adapting SurfaceFactory to a connected mesh representation.
│ │ │ │ +
virtual int getFaceVertexIncidentFaceFVarValueIndices(Index faceIndex, int faceVertex, FVarID fvarID, Index fvarValueIndices[]) const =0
Gather face-varying indices of incident faces around a face-vertex.
│ │ │ │ +
virtual int getFaceVertexIncidentFaceVertexIndices(Index faceIndex, int faceVertex, Index vertexIndices[]) const =0
Gather vertex indices of incident faces around a face-vertex.
│ │ │ │ +
virtual int getFaceSize(Index faceIndex) const =0
Returns the size of a face (number of vertices)
│ │ │ │ + │ │ │ │ +
virtual int populateFaceVertexDescriptor(Index faceIndex, int faceVertex, VertexDescriptor *vertexDescriptor) const =0
Describe the topology of incident faces around a face-vertex.
│ │ │ │ +
virtual bool getFaceNeighborhoodVertexIndicesIfRegular(Index faceIndex, Index vertexIndices[]) const
│ │ │ │ +
virtual bool getFaceNeighborhoodFVarValueIndicesIfRegular(Index faceIndex, FVarID fvarID, Index fvarValueIndices[]) const
│ │ │ │ +
virtual int getFaceFVarValueIndices(Index faceIndex, FVarID fvarID, Index fvarValueIndices[]) const =0
Gather the face-varying indices of the face's vertices.
│ │ │ │ +
virtual int getFaceVertexIndices(Index faceIndex, Index vertexIndices[]) const =0
Gather the indices of the face's vertices.
│ │ │ │ +
virtual bool isFaceHole(Index faceIndex) const =0
Returns if a face is a hole.
│ │ │ │ +
std::intptr_t FVarID
Type used to identify and specify face-varying primvars.
│ │ │ │ +
Simple class used by subclasses of SurfaceFactory to describe a vertex.
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,12 +1,12 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ -surfaceFactory.h │ │ │ │ │ +surfaceFactoryMeshAdapter.h │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// │ │ │ │ │ 2// Copyright 2021 Pixar │ │ │ │ │ 3// │ │ │ │ │ 4// Licensed under the Apache License, Version 2.0 (the "Apache License") │ │ │ │ │ 5// with the following modification; you may not use this file except in │ │ │ │ │ 6// compliance with the Apache License and the following modification to it: │ │ │ │ │ @@ -24,476 +24,179 @@ │ │ │ │ │ 18// Unless required by applicable law or agreed to in writing, software │ │ │ │ │ 19// distributed under the Apache License with the above modification is │ │ │ │ │ 20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY │ │ │ │ │ 21// KIND, either express or implied. See the Apache License for the specific │ │ │ │ │ 22// language governing permissions and limitations under the Apache License. │ │ │ │ │ 23// │ │ │ │ │ 24 │ │ │ │ │ -25#ifndef OPENSUBDIV3_BFR_SURFACE_FACTORY_H │ │ │ │ │ -26#define OPENSUBDIV3_BFR_SURFACE_FACTORY_H │ │ │ │ │ +25#ifndef OPENSUBDIV3_BFR_SURFACE_FACTORY_ADAPTER_H │ │ │ │ │ +26#define OPENSUBDIV3_BFR_SURFACE_FACTORY_ADAPTER_H │ │ │ │ │ 27 │ │ │ │ │ 28#include "../version.h" │ │ │ │ │ 29 │ │ │ │ │ -30#include "../bfr/surface.h" │ │ │ │ │ -31#include "../bfr/surfaceFactoryMeshAdapter.h" │ │ │ │ │ -32#include "../sdc/options.h" │ │ │ │ │ -33#include "../sdc/types.h" │ │ │ │ │ +30#include │ │ │ │ │ +31 │ │ │ │ │ +32namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ +33namespace OPENSUBDIV_VERSION { │ │ │ │ │ 34 │ │ │ │ │ -35#include │ │ │ │ │ +35namespace Bfr { │ │ │ │ │ 36 │ │ │ │ │ -37namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ -38namespace OPENSUBDIV_VERSION { │ │ │ │ │ -39 │ │ │ │ │ -40namespace Bfr { │ │ │ │ │ -41 │ │ │ │ │ -42// │ │ │ │ │ -43// Forward declarations of public and internal classes used by factories: │ │ │ │ │ -44// │ │ │ │ │ -45class SurfaceFactoryCache; │ │ │ │ │ -46class FaceTopology; │ │ │ │ │ -47class FaceSurface; │ │ │ │ │ -48 │ │ │ │ │ -_1_0_3class _S_u_r_f_a_c_e_F_a_c_t_o_r_y : public _S_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r { │ │ │ │ │ -104public: │ │ │ │ │ -_1_1_6 class _O_p_t_i_o_n_s { │ │ │ │ │ -117 public: │ │ │ │ │ -_1_1_8 _O_p_t_i_o_n_s() : _dfltFVarID(-1), _externCache(0), _enableCache(true), │ │ │ │ │ -119 _approxLevelSmooth(2), _approxLevelSharp(6) { } │ │ │ │ │ +37class VertexDescriptor; │ │ │ │ │ +38 │ │ │ │ │ +43// SurfaceFactoryMeshAdapter is an abstract class that defines the interface │ │ │ │ │ +44// through which subclasses of SurfaceFactory adapt to a connected mesh │ │ │ │ │ +45// representation. The interface defines methods that describe the mesh │ │ │ │ │ +46// topology and control indices in the neighborhood of a mesh -- from │ │ │ │ │ +47// which the SurfaceFactory to identifies an appropriate limit surface. │ │ │ │ │ +48// │ │ │ │ │ +49// SurfaceFactoryMeshAdapter methods require a subclass to provide a complete │ │ │ │ │ +50// description of the topology around a base face, as well as indices │ │ │ │ │ +51// associated with it (both vertex and face-varying). The intent here is │ │ │ │ │ +52// to keep the number of methods required to a minimum, and also to minimize │ │ │ │ │ +53// the number of invocations required by the factory. │ │ │ │ │ +54// │ │ │ │ │ +55// With the need to support both linear and non-linear cases (for which │ │ │ │ │ +56// linear is trivial by comparison) and the limit surface for both vertex │ │ │ │ │ +57// and face-varying topologies, the result is a small set of methods │ │ │ │ │ +58// covering this matrix of functionality. │ │ │ │ │ +59// │ │ │ │ │ +60// Since face-varying data may differ in topology from the vertex data -- │ │ │ │ │ +61// with each set of face-varying data potentially having its own unique │ │ │ │ │ +62// topology -- sets of face-varying data are uniquely distinguished by an │ │ │ │ │ +63// associated integer (a face-varying ID). │ │ │ │ │ +64// │ │ │ │ │ +_6_5class _S_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r { │ │ │ │ │ +66public: │ │ │ │ │ +_6_8 typedef int _I_n_d_e_x; │ │ │ │ │ +69 │ │ │ │ │ +_8_0 typedef std::intptr_t _F_V_a_r_I_D; │ │ │ │ │ +81 │ │ │ │ │ +82protected: │ │ │ │ │ +84 _S_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r() { } │ │ │ │ │ +85 virtual _~_S_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r() { } │ │ │ │ │ +87 │ │ │ │ │ +88protected: │ │ │ │ │ +90 │ │ │ │ │ +94 │ │ │ │ │ +_9_6 virtual bool _i_s_F_a_c_e_H_o_l_e(_I_n_d_e_x faceIndex) const = 0; │ │ │ │ │ +97 │ │ │ │ │ +_9_9 virtual int _g_e_t_F_a_c_e_S_i_z_e(_I_n_d_e_x faceIndex) const = 0; │ │ │ │ │ +101 │ │ │ │ │ +103 │ │ │ │ │ +111 │ │ │ │ │ +_1_1_3 virtual int _g_e_t_F_a_c_e_V_e_r_t_e_x_I_n_d_i_c_e_s(_I_n_d_e_x faceIndex, │ │ │ │ │ +114 _I_n_d_e_x vertexIndices[]) const = 0; │ │ │ │ │ +115 │ │ │ │ │ +_1_1_7 virtual int _g_e_t_F_a_c_e_F_V_a_r_V_a_l_u_e_I_n_d_i_c_e_s(_I_n_d_e_x faceIndex, │ │ │ │ │ +118 _F_V_a_r_I_D fvarID, _I_n_d_e_x fvarValueIndices[]) const = 0; │ │ │ │ │ 120 │ │ │ │ │ -123 _O_p_t_i_o_n_s & _S_e_t_D_e_f_a_u_l_t_F_V_a_r_I_D(_F_V_a_r_I_D id); │ │ │ │ │ -_1_2_5 _F_V_a_r_I_D _G_e_t_D_e_f_a_u_l_t_F_V_a_r_I_D() const { return _dfltFVarID; } │ │ │ │ │ -126 │ │ │ │ │ -128 _O_p_t_i_o_n_s & _E_n_a_b_l_e_C_a_c_h_i_n_g(bool on); │ │ │ │ │ -_1_3_0 bool _I_s_C_a_c_h_i_n_g_E_n_a_b_l_e_d() const { return _enableCache; } │ │ │ │ │ -131 │ │ │ │ │ -133 _O_p_t_i_o_n_s & _S_e_t_E_x_t_e_r_n_a_l_C_a_c_h_e(_S_u_r_f_a_c_e_F_a_c_t_o_r_y_C_a_c_h_e * c); │ │ │ │ │ -_1_3_5 _S_u_r_f_a_c_e_F_a_c_t_o_r_y_C_a_c_h_e * _G_e_t_E_x_t_e_r_n_a_l_C_a_c_h_e() const { return _externCache; } │ │ │ │ │ -136 │ │ │ │ │ -137 // Set refinement levels used to approximate the limit surface │ │ │ │ │ -138 // for smooth and sharp features (reasonable defaults assigned): │ │ │ │ │ -140 _O_p_t_i_o_n_s & _S_e_t_A_p_p_r_o_x_L_e_v_e_l_S_m_o_o_t_h(int level); │ │ │ │ │ -_1_4_2 int _G_e_t_A_p_p_r_o_x_L_e_v_e_l_S_m_o_o_t_h() const { return _approxLevelSmooth; } │ │ │ │ │ -143 │ │ │ │ │ -145 _O_p_t_i_o_n_s & _S_e_t_A_p_p_r_o_x_L_e_v_e_l_S_h_a_r_p(int level); │ │ │ │ │ -_1_4_7 int _G_e_t_A_p_p_r_o_x_L_e_v_e_l_S_h_a_r_p() const { return _approxLevelSharp; } │ │ │ │ │ -148 │ │ │ │ │ -149 private: │ │ │ │ │ -150 // Member variables: │ │ │ │ │ -151 _F_V_a_r_I_D _dfltFVarID; │ │ │ │ │ -152 │ │ │ │ │ -153 _S_u_r_f_a_c_e_F_a_c_t_o_r_y_C_a_c_h_e * _externCache; │ │ │ │ │ -154 │ │ │ │ │ -155 unsigned char _enableCache : 1; │ │ │ │ │ -156 unsigned char _approxLevelSmooth; │ │ │ │ │ -157 unsigned char _approxLevelSharp; │ │ │ │ │ -158 }; │ │ │ │ │ +121protected: │ │ │ │ │ +123 │ │ │ │ │ 159 │ │ │ │ │ -160public: │ │ │ │ │ -_1_6_1 _~_S_u_r_f_a_c_e_F_a_c_t_o_r_y() override; │ │ │ │ │ -162 │ │ │ │ │ +_1_6_1 virtual int _p_o_p_u_l_a_t_e_F_a_c_e_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r( │ │ │ │ │ +162 _I_n_d_e_x faceIndex, int faceVertex, │ │ │ │ │ +163 _V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r * vertexDescriptor) const = 0; │ │ │ │ │ 164 │ │ │ │ │ -168 │ │ │ │ │ -_1_7_0 _S_d_c_:_:_S_c_h_e_m_e_T_y_p_e _G_e_t_S_c_h_e_m_e_T_y_p_e() const { return _subdivScheme; } │ │ │ │ │ -171 │ │ │ │ │ -_1_7_3 _S_d_c_:_:_O_p_t_i_o_n_s _G_e_t_S_c_h_e_m_e_O_p_t_i_o_n_s() const { return _subdivOptions; } │ │ │ │ │ -175 │ │ │ │ │ -176public: │ │ │ │ │ -178 │ │ │ │ │ -190 │ │ │ │ │ -_2_0_0 bool _F_a_c_e_H_a_s_L_i_m_i_t_S_u_r_f_a_c_e(_I_n_d_e_x faceIndex) const; │ │ │ │ │ -201 │ │ │ │ │ -_2_0_8 _P_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n _G_e_t_F_a_c_e_P_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n(_I_n_d_e_x faceIndex) const; │ │ │ │ │ -210 │ │ │ │ │ -211public: │ │ │ │ │ +_1_6_6 virtual int _g_e_t_F_a_c_e_V_e_r_t_e_x_I_n_c_i_d_e_n_t_F_a_c_e_V_e_r_t_e_x_I_n_d_i_c_e_s( │ │ │ │ │ +167 _I_n_d_e_x faceIndex, int faceVertex, │ │ │ │ │ +168 _I_n_d_e_x vertexIndices[]) const = 0; │ │ │ │ │ +169 │ │ │ │ │ +_1_7_2 virtual int _g_e_t_F_a_c_e_V_e_r_t_e_x_I_n_c_i_d_e_n_t_F_a_c_e_F_V_a_r_V_a_l_u_e_I_n_d_i_c_e_s( │ │ │ │ │ +173 _I_n_d_e_x faceIndex, int faceVertex, │ │ │ │ │ +174 _F_V_a_r_I_D fvarID, _I_n_d_e_x fvarValueIndices[]) const = 0; │ │ │ │ │ +176 │ │ │ │ │ +177protected: │ │ │ │ │ +179 │ │ │ │ │ +203 virtual bool _g_e_t_F_a_c_e_N_e_i_g_h_b_o_r_h_o_o_d_V_e_r_t_e_x_I_n_d_i_c_e_s_I_f_R_e_g_u_l_a_r( │ │ │ │ │ +204 _I_n_d_e_x faceIndex, _I_n_d_e_x vertexIndices[]) const; │ │ │ │ │ +205 │ │ │ │ │ +206 virtual bool _g_e_t_F_a_c_e_N_e_i_g_h_b_o_r_h_o_o_d_F_V_a_r_V_a_l_u_e_I_n_d_i_c_e_s_I_f_R_e_g_u_l_a_r( │ │ │ │ │ +207 _I_n_d_e_x faceIndex, _F_V_a_r_I_D fvarID, _I_n_d_e_x fvarValueIndices[]) const; │ │ │ │ │ +209 │ │ │ │ │ +210private: │ │ │ │ │ +211 // No private members │ │ │ │ │ +212}; │ │ │ │ │ 213 │ │ │ │ │ +214// │ │ │ │ │ +215// Inline defaults for optional methods: │ │ │ │ │ +216// │ │ │ │ │ +217inline bool │ │ │ │ │ +_2_1_8_S_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_:_:_g_e_t_F_a_c_e_N_e_i_g_h_b_o_r_h_o_o_d_V_e_r_t_e_x_I_n_d_i_c_e_s_I_f_R_e_g_u_l_a_r( │ │ │ │ │ +219 _I_n_d_e_x, _I_n_d_e_x[]) const { │ │ │ │ │ +220 return false; │ │ │ │ │ +221} │ │ │ │ │ +222 │ │ │ │ │ +223inline bool │ │ │ │ │ +_2_2_4_S_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_:_:_g_e_t_F_a_c_e_N_e_i_g_h_b_o_r_h_o_o_d_F_V_a_r_V_a_l_u_e_I_n_d_i_c_e_s_I_f_R_e_g_u_l_a_r( │ │ │ │ │ +225 _I_n_d_e_x, _F_V_a_r_I_D, _I_n_d_e_x[]) const { │ │ │ │ │ +226 return false; │ │ │ │ │ +227} │ │ │ │ │ +228 │ │ │ │ │ +229} // end namespace Bfr │ │ │ │ │ +230 │ │ │ │ │ +231} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ +232using namespace OPENSUBDIV_VERSION; │ │ │ │ │ 233 │ │ │ │ │ -241 template │ │ │ │ │ -242 bool _I_n_i_t_V_e_r_t_e_x_S_u_r_f_a_c_e(_I_n_d_e_x faceIndex, _S_u_r_f_a_c_e_<_R_E_A_L_> * surface) const; │ │ │ │ │ -243 │ │ │ │ │ -251 template │ │ │ │ │ -252 bool _I_n_i_t_V_a_r_y_i_n_g_S_u_r_f_a_c_e(_I_n_d_e_x faceIndex, _S_u_r_f_a_c_e_<_R_E_A_L_> * surface) const; │ │ │ │ │ -253 │ │ │ │ │ -266 template │ │ │ │ │ -267 bool _I_n_i_t_F_a_c_e_V_a_r_y_i_n_g_S_u_r_f_a_c_e(_I_n_d_e_x faceIndex, _S_u_r_f_a_c_e_<_R_E_A_L_> * surface) │ │ │ │ │ -const; │ │ │ │ │ -268 │ │ │ │ │ -278 template │ │ │ │ │ -279 bool _I_n_i_t_F_a_c_e_V_a_r_y_i_n_g_S_u_r_f_a_c_e(_I_n_d_e_x faceIndex, _S_u_r_f_a_c_e_<_R_E_A_L_> * surface, │ │ │ │ │ -280 _F_V_a_r_I_D fvarID) const; │ │ │ │ │ -281 │ │ │ │ │ -307 template │ │ │ │ │ -308 bool _I_n_i_t_S_u_r_f_a_c_e_s(_I_n_d_e_x faceIndex, _S_u_r_f_a_c_e_<_R_E_A_L_> * vtxSurface, │ │ │ │ │ -309 _S_u_r_f_a_c_e_<_R_E_A_L_> * fvarSurfaces, │ │ │ │ │ -310 _F_V_a_r_I_D const fvarIDs[] = 0, │ │ │ │ │ -311 int fvarCount = 0, │ │ │ │ │ -312 _S_u_r_f_a_c_e_<_R_E_A_L_> * varSurface = 0) const; │ │ │ │ │ -314 │ │ │ │ │ -316 │ │ │ │ │ -319 // │ │ │ │ │ -320 // WIP - considering removing these since non-essential │ │ │ │ │ -321 // │ │ │ │ │ -322 │ │ │ │ │ -324 template │ │ │ │ │ -325 _S_u_r_f_a_c_e_<_R_E_A_L_> * _C_r_e_a_t_e_V_e_r_t_e_x_S_u_r_f_a_c_e(_I_n_d_e_x faceIndex) const; │ │ │ │ │ -326 │ │ │ │ │ -328 template │ │ │ │ │ -329 _S_u_r_f_a_c_e_<_R_E_A_L_> * _C_r_e_a_t_e_V_a_r_y_i_n_g_S_u_r_f_a_c_e(_I_n_d_e_x faceIndex) const; │ │ │ │ │ -330 │ │ │ │ │ -332 template │ │ │ │ │ -333 _S_u_r_f_a_c_e_<_R_E_A_L_> * _C_r_e_a_t_e_F_a_c_e_V_a_r_y_i_n_g_S_u_r_f_a_c_e(_I_n_d_e_x faceIndex) const; │ │ │ │ │ -334 │ │ │ │ │ -336 template │ │ │ │ │ -337 _S_u_r_f_a_c_e_<_R_E_A_L_> * _C_r_e_a_t_e_F_a_c_e_V_a_r_y_i_n_g_S_u_r_f_a_c_e(_I_n_d_e_x faceIndex, _F_V_a_r_I_D id) const; │ │ │ │ │ -339 │ │ │ │ │ -340protected: │ │ │ │ │ -342 │ │ │ │ │ -346 │ │ │ │ │ -_3_5_8 _S_u_r_f_a_c_e_F_a_c_t_o_r_y(_S_d_c_:_:_S_c_h_e_m_e_T_y_p_e schemeType, │ │ │ │ │ -359 _S_d_c_:_:_O_p_t_i_o_n_s const & schemeOptions, │ │ │ │ │ -360 _O_p_t_i_o_n_s const & limitOptions); │ │ │ │ │ -361 │ │ │ │ │ -_3_6_3 void _s_e_t_I_n_t_e_r_n_a_l_C_a_c_h_e(_S_u_r_f_a_c_e_F_a_c_t_o_r_y_C_a_c_h_e * cache); │ │ │ │ │ -364 │ │ │ │ │ -_3_6_5 _S_u_r_f_a_c_e_F_a_c_t_o_r_y(_S_u_r_f_a_c_e_F_a_c_t_o_r_y const &) = delete; │ │ │ │ │ -_3_6_6 _S_u_r_f_a_c_e_F_a_c_t_o_r_y & _o_p_e_r_a_t_o_r_=(_S_u_r_f_a_c_e_F_a_c_t_o_r_y const &) = delete; │ │ │ │ │ -368 │ │ │ │ │ -369private: │ │ │ │ │ -370 // Supporting internal methods: │ │ │ │ │ -371 void setSubdivisionOptions(_S_d_c_:_:_S_c_h_e_m_e_T_y_p_e, _S_d_c_:_:_O_p_t_i_o_n_s const & options); │ │ │ │ │ -372 void setFactoryOptions(_O_p_t_i_o_n_s const & factoryOptions); │ │ │ │ │ -373 │ │ │ │ │ -374 bool faceHasLimitSimple(_I_n_d_e_x faceIndex, int faceSize) const; │ │ │ │ │ -375 │ │ │ │ │ -376 bool faceHasLimitNeighborhood(_I_n_d_e_x faceIndex) const; │ │ │ │ │ -377 bool faceHasLimitNeighborhood(FaceTopology const & faceTopology) const; │ │ │ │ │ -378 │ │ │ │ │ -379 class SurfaceSet; │ │ │ │ │ -380 │ │ │ │ │ -381 bool populateAllSurfaces( _I_n_d_e_x faceIndex, SurfaceSet * sSetPtr) const; │ │ │ │ │ -382 bool populateLinearSurfaces( _I_n_d_e_x faceIndex, SurfaceSet * sSetPtr) const; │ │ │ │ │ -383 bool populateNonLinearSurfaces(_I_n_d_e_x faceIndex, SurfaceSet * sSetPtr) │ │ │ │ │ -const; │ │ │ │ │ -384 │ │ │ │ │ -385 bool initSurfaces(_I_n_d_e_x faceIndex, internal::SurfaceData * vtxSurface, │ │ │ │ │ -386 internal::SurfaceData * varSurface, │ │ │ │ │ -387 internal::SurfaceData * fvarSurfaces, │ │ │ │ │ -388 int fvarCount, │ │ │ │ │ -389 _F_V_a_r_I_D const fvarIDs[]) const; │ │ │ │ │ -390 │ │ │ │ │ -391 // Methods to assemble topology and corresponding indices for entire face: │ │ │ │ │ -392 bool isFaceNeighborhoodRegular(_I_n_d_e_x faceIndex, │ │ │ │ │ -393 _F_V_a_r_I_D const * fvarPtrOrVtx, │ │ │ │ │ -394 _I_n_d_e_x indices[]) const; │ │ │ │ │ -395 │ │ │ │ │ -396 bool initFaceNeighborhoodTopology(_I_n_d_e_x faceIndex, │ │ │ │ │ -397 FaceTopology * topology) const; │ │ │ │ │ -398 │ │ │ │ │ -399 bool gatherFaceNeighborhoodTopology(_I_n_d_e_x faceIndex, │ │ │ │ │ -400 FaceTopology * topology) const; │ │ │ │ │ -401 │ │ │ │ │ -402 int gatherFaceNeighborhoodIndices(_I_n_d_e_x faceIndex, │ │ │ │ │ -403 FaceTopology const & topology, │ │ │ │ │ -404 _F_V_a_r_I_D const * fvarPtrOrVtx, │ │ │ │ │ -405 _I_n_d_e_x indices[]) const; │ │ │ │ │ -406 │ │ │ │ │ -407 // Methods to assemble Surfaces for the different categories of patch: │ │ │ │ │ -408 typedef internal::SurfaceData SurfaceType; │ │ │ │ │ -409 │ │ │ │ │ -410 void assignLinearSurface(SurfaceType * surfacePtr, │ │ │ │ │ -411 _I_n_d_e_x faceIndex, │ │ │ │ │ -412 _F_V_a_r_I_D const * fvarPtrOrVtx) const; │ │ │ │ │ -413 │ │ │ │ │ -414 void assignRegularSurface(SurfaceType * surfacePtr, │ │ │ │ │ -415 _I_n_d_e_x const surfacePatchPoints[]) const; │ │ │ │ │ -416 │ │ │ │ │ -417 void assignRegularSurface(SurfaceType * surfacePtr, │ │ │ │ │ -418 FaceSurface const & surfaceDescription) const; │ │ │ │ │ -419 │ │ │ │ │ -420 void assignIrregularSurface(SurfaceType * surfacePtr, │ │ │ │ │ -421 FaceSurface const & surfaceDescription) const; │ │ │ │ │ -422 │ │ │ │ │ -423 void copyNonLinearSurface(SurfaceType * surfacePtr, │ │ │ │ │ -424 SurfaceType const & surfaceSource, │ │ │ │ │ -425 FaceSurface const & surfaceDescription) const; │ │ │ │ │ -426 │ │ │ │ │ -427private: │ │ │ │ │ -428 // Members describing options and subdivision properties (very little │ │ │ │ │ -429 // memory and low initialization cost) │ │ │ │ │ -430 _S_d_c_:_:_S_c_h_e_m_e_T_y_p_e _subdivScheme; │ │ │ │ │ -431 _S_d_c_:_:_O_p_t_i_o_n_s _subdivOptions; │ │ │ │ │ -432 _O_p_t_i_o_n_s _factoryOptions; │ │ │ │ │ -433 │ │ │ │ │ -434 // Members related to subdivision topology, options and limit tests: │ │ │ │ │ -435 unsigned int _linearScheme : 1; │ │ │ │ │ -436 unsigned int _linearFVarInterp : 1; │ │ │ │ │ -437 │ │ │ │ │ -438 unsigned int _testNeighborhoodForLimit : 1; │ │ │ │ │ -439 unsigned int _rejectSmoothBoundariesForLimit : 1; │ │ │ │ │ -440 unsigned int _rejectIrregularFacesForLimit : 1; │ │ │ │ │ -441 │ │ │ │ │ -442 int _regFaceSize; │ │ │ │ │ -443 │ │ │ │ │ -444 // Members related to caching: │ │ │ │ │ -445 _S_u_r_f_a_c_e_F_a_c_t_o_r_y_C_a_c_h_e mutable * _topologyCache; │ │ │ │ │ -446}; │ │ │ │ │ -447 │ │ │ │ │ -448// │ │ │ │ │ -449// Inline methods for Options: │ │ │ │ │ -450// │ │ │ │ │ -451inline _S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s & │ │ │ │ │ -_4_5_2_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_:_S_e_t_D_e_f_a_u_l_t_F_V_a_r_I_D(_F_V_a_r_I_D id) { │ │ │ │ │ -453 _dfltFVarID = id; │ │ │ │ │ -454 return *this; │ │ │ │ │ -455} │ │ │ │ │ -456inline _S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s & │ │ │ │ │ -_4_5_7_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_:_E_n_a_b_l_e_C_a_c_h_i_n_g(bool on) { │ │ │ │ │ -458 _enableCache = on; │ │ │ │ │ -459 return *this; │ │ │ │ │ -460} │ │ │ │ │ -461inline _S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s & │ │ │ │ │ -_4_6_2_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_:_S_e_t_E_x_t_e_r_n_a_l_C_a_c_h_e(_S_u_r_f_a_c_e_F_a_c_t_o_r_y_C_a_c_h_e * c) { │ │ │ │ │ -463 _externCache = c; │ │ │ │ │ -464 return *this; │ │ │ │ │ -465} │ │ │ │ │ -466inline _S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s & │ │ │ │ │ -_4_6_7_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_:_S_e_t_A_p_p_r_o_x_L_e_v_e_l_S_m_o_o_t_h(int level) { │ │ │ │ │ -468 _approxLevelSmooth = (unsigned char) level; │ │ │ │ │ -469 return *this; │ │ │ │ │ -470} │ │ │ │ │ -471inline _S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s & │ │ │ │ │ -_4_7_2_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_:_S_e_t_A_p_p_r_o_x_L_e_v_e_l_S_h_a_r_p(int level) { │ │ │ │ │ -473 _approxLevelSharp = (unsigned char) level; │ │ │ │ │ -474 return *this; │ │ │ │ │ -475} │ │ │ │ │ -476 │ │ │ │ │ -477// │ │ │ │ │ -478// Inline methods to initializes Surfaces: │ │ │ │ │ -479// │ │ │ │ │ -480template │ │ │ │ │ -481inline bool │ │ │ │ │ -_4_8_2_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_I_n_i_t_V_e_r_t_e_x_S_u_r_f_a_c_e(_I_n_d_e_x face, _S_u_r_f_a_c_e_<_R_E_A_L_> * s) const { │ │ │ │ │ -483 │ │ │ │ │ -484 return initSurfaces(face, &s->getSurfaceData(), 0, 0, 0, 0); │ │ │ │ │ -485} │ │ │ │ │ -486template │ │ │ │ │ -487inline bool │ │ │ │ │ -_4_8_8_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_I_n_i_t_V_a_r_y_i_n_g_S_u_r_f_a_c_e(_I_n_d_e_x face, _S_u_r_f_a_c_e_<_R_E_A_L_> * s) const { │ │ │ │ │ -489 │ │ │ │ │ -490 return initSurfaces(face, 0, &s->getSurfaceData(), 0, 0, 0); │ │ │ │ │ -491} │ │ │ │ │ -492template │ │ │ │ │ -493inline bool │ │ │ │ │ -_4_9_4_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_I_n_i_t_F_a_c_e_V_a_r_y_i_n_g_S_u_r_f_a_c_e(_I_n_d_e_x face, _S_u_r_f_a_c_e_<_R_E_A_L_> * s, │ │ │ │ │ -495 _F_V_a_r_I_D fvarID) const { │ │ │ │ │ -496 return initSurfaces(face, 0, 0, &s->getSurfaceData(), 1, &fvarID); │ │ │ │ │ -497} │ │ │ │ │ -498template │ │ │ │ │ -499inline bool │ │ │ │ │ -_5_0_0_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_I_n_i_t_F_a_c_e_V_a_r_y_i_n_g_S_u_r_f_a_c_e(_I_n_d_e_x face, _S_u_r_f_a_c_e_<_R_E_A_L_> * s) const │ │ │ │ │ -{ │ │ │ │ │ -501 _F_V_a_r_I_D dfltID = _factoryOptions._G_e_t_D_e_f_a_u_l_t_F_V_a_r_I_D(); │ │ │ │ │ -502 return initSurfaces(face, 0, 0, &s->getSurfaceData(), 1, &dfltID); │ │ │ │ │ -503} │ │ │ │ │ -504 │ │ │ │ │ -505template │ │ │ │ │ -506inline bool │ │ │ │ │ -_5_0_7_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_I_n_i_t_S_u_r_f_a_c_e_s(_I_n_d_e_x faceIndex, _S_u_r_f_a_c_e_<_R_E_A_L_> * vtxSurface, │ │ │ │ │ -508 _S_u_r_f_a_c_e_<_R_E_A_L_> * fvarSurfaces, _F_V_a_r_I_D const fvarIDs[], int fvarCount, │ │ │ │ │ -509 _S_u_r_f_a_c_e_<_R_E_A_L_> * varSurface) const { │ │ │ │ │ -510 │ │ │ │ │ -511 bool useDfltFVarID = fvarSurfaces && (fvarIDs == 0) && (fvarCount == 0); │ │ │ │ │ -512 _F_V_a_r_I_D dfltFVarID = useDfltFVarID ? _factoryOptions._G_e_t_D_e_f_a_u_l_t_F_V_a_r_I_D() : 0; │ │ │ │ │ -513 │ │ │ │ │ -514 return initSurfaces(faceIndex, │ │ │ │ │ -515 vtxSurface ? &vtxSurface->getSurfaceData() : 0, │ │ │ │ │ -516 varSurface ? &varSurface->getSurfaceData() : 0, │ │ │ │ │ -517 fvarSurfaces ? &fvarSurfaces->getSurfaceData() : 0, │ │ │ │ │ -518 fvarCount ? fvarCount : (fvarSurfaces != 0), │ │ │ │ │ -519 useDfltFVarID ? &dfltFVarID : fvarIDs); │ │ │ │ │ -520} │ │ │ │ │ -521 │ │ │ │ │ -522// │ │ │ │ │ -523// Inline methods to allocate and initialize Surfaces: │ │ │ │ │ -524// │ │ │ │ │ -525template │ │ │ │ │ -526inline _S_u_r_f_a_c_e_<_R_E_A_L_> * │ │ │ │ │ -_5_2_7_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_C_r_e_a_t_e_V_e_r_t_e_x_S_u_r_f_a_c_e(_I_n_d_e_x faceIndex) const { │ │ │ │ │ -528 _S_u_r_f_a_c_e_<_R_E_A_L_> * s = new _S_u_r_f_a_c_e_<_R_E_A_L_>(); │ │ │ │ │ -529 if (InitVertexSurface(faceIndex, s)) return s; │ │ │ │ │ -530 delete s; │ │ │ │ │ -531 return 0; │ │ │ │ │ -532} │ │ │ │ │ -533template │ │ │ │ │ -534inline _S_u_r_f_a_c_e_<_R_E_A_L_> * │ │ │ │ │ -_5_3_5_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_C_r_e_a_t_e_V_a_r_y_i_n_g_S_u_r_f_a_c_e(_I_n_d_e_x faceIndex) const { │ │ │ │ │ -536 _S_u_r_f_a_c_e_<_R_E_A_L_> * s = new _S_u_r_f_a_c_e_<_R_E_A_L_>(); │ │ │ │ │ -537 if (InitVaryingSurface(faceIndex, s)) return s; │ │ │ │ │ -538 delete s; │ │ │ │ │ -539 return 0; │ │ │ │ │ -540} │ │ │ │ │ -541template │ │ │ │ │ -542inline _S_u_r_f_a_c_e_<_R_E_A_L_> * │ │ │ │ │ -_5_4_3_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_C_r_e_a_t_e_F_a_c_e_V_a_r_y_i_n_g_S_u_r_f_a_c_e(_I_n_d_e_x faceIndex, _F_V_a_r_I_D fvarID) │ │ │ │ │ -const { │ │ │ │ │ -544 _S_u_r_f_a_c_e_<_R_E_A_L_> * s = new _S_u_r_f_a_c_e_<_R_E_A_L_>(); │ │ │ │ │ -545 if (InitFaceVaryingSurface(faceIndex, s, fvarID)) return s; │ │ │ │ │ -546 delete s; │ │ │ │ │ -547 return 0; │ │ │ │ │ -548} │ │ │ │ │ -549template │ │ │ │ │ -550inline _S_u_r_f_a_c_e_<_R_E_A_L_> * │ │ │ │ │ -_5_5_1_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_C_r_e_a_t_e_F_a_c_e_V_a_r_y_i_n_g_S_u_r_f_a_c_e(_I_n_d_e_x face) const { │ │ │ │ │ -552 _F_V_a_r_I_D dfltID = _factoryOptions._G_e_t_D_e_f_a_u_l_t_F_V_a_r_I_D(); │ │ │ │ │ -553 return CreateFaceVaryingSurface(face, dfltID); │ │ │ │ │ -554} │ │ │ │ │ -555 │ │ │ │ │ -556} // end namespace Bfr │ │ │ │ │ -557 │ │ │ │ │ -558} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ -559using namespace OPENSUBDIV_VERSION; │ │ │ │ │ -560 │ │ │ │ │ -561} // end namespace OpenSubdiv │ │ │ │ │ -562 │ │ │ │ │ -563#endif /* OPENSUBDIV3_BFR_SURFACE_FACTORY_H */ │ │ │ │ │ +234} // end namespace OpenSubdiv │ │ │ │ │ +235 │ │ │ │ │ +236#endif /* OPENSUBDIV3_BFR_SURFACE_FACTORY_ADAPTER_H */ │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v │ │ │ │ │ DDeeffiinniittiioonn _l_i_m_i_t_s_._h_:_3_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_S_c_h_e_m_e_T_y_p_e │ │ │ │ │ -SchemeType │ │ │ │ │ -Enumerated type for all subdivision schemes supported by OpenSubdiv. │ │ │ │ │ -DDeeffiinniittiioonn _t_y_p_e_s_._h_:_3_7 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_P_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n │ │ │ │ │ -Simple class defining the 2D parameterization of a face. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n_._h_:_5_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e │ │ │ │ │ -Encapsulates the limit surface for a face of a mesh. │ │ │ │ │ -DDeeffiinniittiioonn _s_u_r_f_a_c_e_._h_:_5_9 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y │ │ │ │ │ -Base class providing initialization of a Surface for each face of a mesh. │ │ │ │ │ -DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_1_0_3 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_s_e_t_I_n_t_e_r_n_a_l_C_a_c_h_e │ │ │ │ │ -void setInternalCache(SurfaceFactoryCache *cache) │ │ │ │ │ -Subclass to identify an internal cache for use by base class. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_~_S_u_r_f_a_c_e_F_a_c_t_o_r_y │ │ │ │ │ -~SurfaceFactory() override │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_I_n_i_t_F_a_c_e_V_a_r_y_i_n_g_S_u_r_f_a_c_e │ │ │ │ │ -bool InitFaceVaryingSurface(Index faceIndex, Surface< REAL > *surface) const │ │ │ │ │ -Initialize a Surface for the default face-varying data. │ │ │ │ │ -DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_5_0_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_G_e_t_S_c_h_e_m_e_O_p_t_i_o_n_s │ │ │ │ │ -Sdc::Options GetSchemeOptions() const │ │ │ │ │ -Return the set of subdivision options. │ │ │ │ │ -DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_1_7_3 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_G_e_t_F_a_c_e_P_a_r_a_m_e_t_e_r_i_z_a_t_i_o_n │ │ │ │ │ -Parameterization GetFaceParameterization(Index faceIndex) const │ │ │ │ │ -Return the Parameterization of a face with a limit surface. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y │ │ │ │ │ -SurfaceFactory(SurfaceFactory const &)=delete │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_F_a_c_e_H_a_s_L_i_m_i_t_S_u_r_f_a_c_e │ │ │ │ │ -bool FaceHasLimitSurface(Index faceIndex) const │ │ │ │ │ -Return if a specified face has a limit surface. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_o_p_e_r_a_t_o_r_= │ │ │ │ │ -SurfaceFactory & operator=(SurfaceFactory const &)=delete │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_C_r_e_a_t_e_V_e_r_t_e_x_S_u_r_f_a_c_e │ │ │ │ │ -Surface< REAL > * CreateVertexSurface(Index faceIndex) const │ │ │ │ │ -Construct a Surface for vertex data. │ │ │ │ │ -DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_5_2_7 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_C_r_e_a_t_e_F_a_c_e_V_a_r_y_i_n_g_S_u_r_f_a_c_e │ │ │ │ │ -Surface< REAL > * CreateFaceVaryingSurface(Index faceIndex) const │ │ │ │ │ -Construct a Surface for the default face-varying data. │ │ │ │ │ -DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_5_5_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_I_n_i_t_S_u_r_f_a_c_e_s │ │ │ │ │ -bool InitSurfaces(Index faceIndex, Surface< REAL > *vtxSurface, Surface< REAL > │ │ │ │ │ -*fvarSurfaces, FVarID const fvarIDs[]=0, int fvarCount=0, Surface< REAL > │ │ │ │ │ -*varSurface=0) const │ │ │ │ │ -Initialize multiple Surfaces at once. │ │ │ │ │ -DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_5_0_7 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_G_e_t_S_c_h_e_m_e_T_y_p_e │ │ │ │ │ -Sdc::SchemeType GetSchemeType() const │ │ │ │ │ -Return the subdivision scheme. │ │ │ │ │ -DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_1_7_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_C_r_e_a_t_e_V_a_r_y_i_n_g_S_u_r_f_a_c_e │ │ │ │ │ -Surface< REAL > * CreateVaryingSurface(Index faceIndex) const │ │ │ │ │ -Construct a Surface for varying data. │ │ │ │ │ -DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_5_3_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_I_n_i_t_V_e_r_t_e_x_S_u_r_f_a_c_e │ │ │ │ │ -bool InitVertexSurface(Index faceIndex, Surface< REAL > *surface) const │ │ │ │ │ -Initialize a Surface for vertex data. │ │ │ │ │ -DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_4_8_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_I_n_i_t_V_a_r_y_i_n_g_S_u_r_f_a_c_e │ │ │ │ │ -bool InitVaryingSurface(Index faceIndex, Surface< REAL > *surface) const │ │ │ │ │ -Initialize a Surface for varying data. │ │ │ │ │ -DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_4_8_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y │ │ │ │ │ -SurfaceFactory(Sdc::SchemeType schemeType, Sdc::Options const &schemeOptions, │ │ │ │ │ -Options const &limitOptions) │ │ │ │ │ -Constructor to be used by subclasses. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s │ │ │ │ │ -Simple set of options assigned to instances of SurfaceFactory. │ │ │ │ │ -DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_1_1_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_:_S_e_t_E_x_t_e_r_n_a_l_C_a_c_h_e │ │ │ │ │ -Options & SetExternalCache(SurfaceFactoryCache *c) │ │ │ │ │ -Assign an external cache to override the internal. │ │ │ │ │ -DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_4_6_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_:_E_n_a_b_l_e_C_a_c_h_i_n_g │ │ │ │ │ -Options & EnableCaching(bool on) │ │ │ │ │ -Enable or disable caching (default is true): │ │ │ │ │ -DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_4_5_7 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ -_S_e_t_A_p_p_r_o_x_L_e_v_e_l_S_m_o_o_t_h │ │ │ │ │ -Options & SetApproxLevelSmooth(int level) │ │ │ │ │ -Assign maximum refinement level for smooth features. │ │ │ │ │ -DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_4_6_7 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ -_G_e_t_A_p_p_r_o_x_L_e_v_e_l_S_m_o_o_t_h │ │ │ │ │ -int GetApproxLevelSmooth() const │ │ │ │ │ -Return maximum refinement level for smooth features. │ │ │ │ │ -DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_1_4_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_:_O_p_t_i_o_n_s │ │ │ │ │ -Options() │ │ │ │ │ -DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_1_1_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_:_I_s_C_a_c_h_i_n_g_E_n_a_b_l_e_d │ │ │ │ │ -bool IsCachingEnabled() const │ │ │ │ │ -Return if caching is enable. │ │ │ │ │ -DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_1_3_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_:_S_e_t_D_e_f_a_u_l_t_F_V_a_r_I_D │ │ │ │ │ -Options & SetDefaultFVarID(FVarID id) │ │ │ │ │ -Assign the default face-varying ID (none assigned by default) │ │ │ │ │ -DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_4_5_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ -_S_e_t_A_p_p_r_o_x_L_e_v_e_l_S_h_a_r_p │ │ │ │ │ -Options & SetApproxLevelSharp(int level) │ │ │ │ │ -Assign maximum refinement level for sharp features. │ │ │ │ │ -DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_4_7_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_:_G_e_t_D_e_f_a_u_l_t_F_V_a_r_I_D │ │ │ │ │ -FVarID GetDefaultFVarID() const │ │ │ │ │ -Return the default face-varying ID. │ │ │ │ │ -DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_1_2_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ -_G_e_t_A_p_p_r_o_x_L_e_v_e_l_S_h_a_r_p │ │ │ │ │ -int GetApproxLevelSharp() const │ │ │ │ │ -Return maximum refinement level for sharp features. │ │ │ │ │ -DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_1_4_7 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_:_G_e_t_E_x_t_e_r_n_a_l_C_a_c_h_e │ │ │ │ │ -SurfaceFactoryCache * GetExternalCache() const │ │ │ │ │ -Return any assigned external cache. │ │ │ │ │ -DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h_:_1_3_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_C_a_c_h_e │ │ │ │ │ -Container used internally by SurfaceFactory to store reusable information. │ │ │ │ │ -DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_C_a_c_h_e_._h_:_5_9 │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r │ │ │ │ │ Abstract interface adapting SurfaceFactory to a connected mesh representation. │ │ │ │ │ DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_._h_:_6_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_:_: │ │ │ │ │ +_g_e_t_F_a_c_e_V_e_r_t_e_x_I_n_c_i_d_e_n_t_F_a_c_e_F_V_a_r_V_a_l_u_e_I_n_d_i_c_e_s │ │ │ │ │ +virtual int getFaceVertexIncidentFaceFVarValueIndices(Index faceIndex, int │ │ │ │ │ +faceVertex, FVarID fvarID, Index fvarValueIndices[]) const =0 │ │ │ │ │ +Gather face-varying indices of incident faces around a face-vertex. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_:_: │ │ │ │ │ +_g_e_t_F_a_c_e_V_e_r_t_e_x_I_n_c_i_d_e_n_t_F_a_c_e_V_e_r_t_e_x_I_n_d_i_c_e_s │ │ │ │ │ +virtual int getFaceVertexIncidentFaceVertexIndices(Index faceIndex, int │ │ │ │ │ +faceVertex, Index vertexIndices[]) const =0 │ │ │ │ │ +Gather vertex indices of incident faces around a face-vertex. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_:_:_g_e_t_F_a_c_e_S_i_z_e │ │ │ │ │ +virtual int getFaceSize(Index faceIndex) const =0 │ │ │ │ │ +Returns the size of a face (number of vertices) │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_:_:_I_n_d_e_x │ │ │ │ │ int Index │ │ │ │ │ Integer type representing a mesh index. │ │ │ │ │ DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_._h_:_6_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_:_: │ │ │ │ │ +_p_o_p_u_l_a_t_e_F_a_c_e_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ +virtual int populateFaceVertexDescriptor(Index faceIndex, int faceVertex, │ │ │ │ │ +VertexDescriptor *vertexDescriptor) const =0 │ │ │ │ │ +Describe the topology of incident faces around a face-vertex. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_:_: │ │ │ │ │ +_g_e_t_F_a_c_e_N_e_i_g_h_b_o_r_h_o_o_d_V_e_r_t_e_x_I_n_d_i_c_e_s_I_f_R_e_g_u_l_a_r │ │ │ │ │ +virtual bool getFaceNeighborhoodVertexIndicesIfRegular(Index faceIndex, Index │ │ │ │ │ +vertexIndices[]) const │ │ │ │ │ +DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_._h_:_2_1_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_:_: │ │ │ │ │ +_g_e_t_F_a_c_e_N_e_i_g_h_b_o_r_h_o_o_d_F_V_a_r_V_a_l_u_e_I_n_d_i_c_e_s_I_f_R_e_g_u_l_a_r │ │ │ │ │ +virtual bool getFaceNeighborhoodFVarValueIndicesIfRegular(Index faceIndex, │ │ │ │ │ +FVarID fvarID, Index fvarValueIndices[]) const │ │ │ │ │ +DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_._h_:_2_2_4 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_:_: │ │ │ │ │ +_g_e_t_F_a_c_e_F_V_a_r_V_a_l_u_e_I_n_d_i_c_e_s │ │ │ │ │ +virtual int getFaceFVarValueIndices(Index faceIndex, FVarID fvarID, Index │ │ │ │ │ +fvarValueIndices[]) const =0 │ │ │ │ │ +Gather the face-varying indices of the face's vertices. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_:_: │ │ │ │ │ +_g_e_t_F_a_c_e_V_e_r_t_e_x_I_n_d_i_c_e_s │ │ │ │ │ +virtual int getFaceVertexIndices(Index faceIndex, Index vertexIndices[]) const │ │ │ │ │ +=0 │ │ │ │ │ +Gather the indices of the face's vertices. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_:_:_i_s_F_a_c_e_H_o_l_e │ │ │ │ │ +virtual bool isFaceHole(Index faceIndex) const =0 │ │ │ │ │ +Returns if a face is a hole. │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_S_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_:_:_F_V_a_r_I_D │ │ │ │ │ std::intptr_t FVarID │ │ │ │ │ Type used to identify and specify face-varying primvars. │ │ │ │ │ DDeeffiinniittiioonn _s_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_._h_:_8_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_O_p_t_i_o_n_s │ │ │ │ │ -All supported options applying to subdivision scheme. │ │ │ │ │ -DDeeffiinniittiioonn _o_p_t_i_o_n_s_._h_:_5_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_B_f_r_:_:_V_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ +Simple class used by subclasses of SurfaceFactory to describe a vertex. │ │ │ │ │ +DDeeffiinniittiioonn _v_e_r_t_e_x_D_e_s_c_r_i_p_t_o_r_._h_:_1_3_1 │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _b_f_r │ │ │ │ │ - * _s_u_r_f_a_c_e_F_a_c_t_o_r_y_._h │ │ │ │ │ + * _s_u_r_f_a_c_e_F_a_c_t_o_r_y_M_e_s_h_A_d_a_p_t_e_r_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00689_source.html │ │ │ │ @@ -457,15 +457,15 @@ │ │ │ │
int EvaluateStencil(REAL const uv[2], REAL sP[]) const
Evaluation of the limit stencil for position.
Definition surface.h:416
│ │ │ │
Simple struct defining the size and stride of points in arrays.
Definition surface.h:63
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -
Base class providing initialization of a Surface for each face of a mesh.
│ │ │ │ +
Base class providing initialization of a Surface for each face of a mesh.
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ -#include "../bfr/surfaceFactory.h"
│ │ │ │ +#include "../bfr/surfaceFactory.h"
│ │ │ │ #include "../bfr/surfaceFactoryCache.h"
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00692_source.html │ │ │ │ @@ -248,29 +248,29 @@ │ │ │ │
int GetNumFVarChannels() const
Return the number of face-varying channels.
│ │ │ │
Far::TopologyRefiner const & GetMesh() const
Return the instance of the mesh.
│ │ │ │ │ │ │ │
RefinerSurfaceFactoryBase(Far::TopologyRefiner const &mesh, Options const &options)
│ │ │ │
Template for concrete subclasses of RefinerSurfaceFactoryBase.
│ │ │ │ │ │ │ │
RefinerSurfaceFactory(Far::TopologyRefiner const &mesh, Options const &options=Options())
│ │ │ │ -
Base class providing initialization of a Surface for each face of a mesh.
│ │ │ │ +
Base class providing initialization of a Surface for each face of a mesh.
│ │ │ │
void setInternalCache(SurfaceFactoryCache *cache)
Subclass to identify an internal cache for use by base class.
│ │ │ │ -
Simple set of options assigned to instances of SurfaceFactory.
│ │ │ │ +
Simple set of options assigned to instances of SurfaceFactory.
│ │ │ │
virtual int getFaceVertexIncidentFaceFVarValueIndices(Index faceIndex, int faceVertex, FVarID fvarID, Index fvarValueIndices[]) const =0
Gather face-varying indices of incident faces around a face-vertex.
│ │ │ │
virtual int getFaceVertexIncidentFaceVertexIndices(Index faceIndex, int faceVertex, Index vertexIndices[]) const =0
Gather vertex indices of incident faces around a face-vertex.
│ │ │ │
virtual int getFaceSize(Index faceIndex) const =0
Returns the size of a face (number of vertices)
│ │ │ │ - │ │ │ │ + │ │ │ │
virtual int populateFaceVertexDescriptor(Index faceIndex, int faceVertex, VertexDescriptor *vertexDescriptor) const =0
Describe the topology of incident faces around a face-vertex.
│ │ │ │ -
virtual bool getFaceNeighborhoodVertexIndicesIfRegular(Index faceIndex, Index vertexIndices[]) const
│ │ │ │ -
virtual bool getFaceNeighborhoodFVarValueIndicesIfRegular(Index faceIndex, FVarID fvarID, Index fvarValueIndices[]) const
│ │ │ │ +
virtual bool getFaceNeighborhoodVertexIndicesIfRegular(Index faceIndex, Index vertexIndices[]) const
│ │ │ │ +
virtual bool getFaceNeighborhoodFVarValueIndicesIfRegular(Index faceIndex, FVarID fvarID, Index fvarValueIndices[]) const
│ │ │ │
virtual int getFaceFVarValueIndices(Index faceIndex, FVarID fvarID, Index fvarValueIndices[]) const =0
Gather the face-varying indices of the face's vertices.
│ │ │ │
virtual int getFaceVertexIndices(Index faceIndex, Index vertexIndices[]) const =0
Gather the indices of the face's vertices.
│ │ │ │
virtual bool isFaceHole(Index faceIndex) const =0
Returns if a face is a hole.
│ │ │ │ -
std::intptr_t FVarID
Type used to identify and specify face-varying primvars.
│ │ │ │ -
Simple class used by subclasses of SurfaceFactory to describe a vertex.
│ │ │ │ +
std::intptr_t FVarID
Type used to identify and specify face-varying primvars.
│ │ │ │ +
Simple class used by subclasses of SurfaceFactory to describe a vertex.
│ │ │ │
Stores topology data for a specified set of refinement options.
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ -#include "../far/patchTable.h"
│ │ │ │ +#include "../far/patchTable.h"
│ │ │ │ #include <vector>
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │

│ │ │ │ Classes

class  RefinerSurfaceFactoryBase
│ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00716_source.html │ │ │ │ @@ -404,15 +404,15 @@ │ │ │ │
379} // end namespace OPENSUBDIV_VERSION
│ │ │ │
380using namespace OPENSUBDIV_VERSION;
│ │ │ │
381
│ │ │ │
382} // end namespace OpenSubdiv
│ │ │ │
383
│ │ │ │
384#endif // OPENSUBDIV3_FAR_STENCILTABLE_FACTORY_H
│ │ │ │ │ │ │ │ -
Container for arrays of parametric patches.
Definition patchTable.h:55
│ │ │ │ +
Container for arrays of parametric patches.
Definition patchTable.h:55
│ │ │ │ │ │ │ │
static StencilTableReal< REAL > const * Create(TopologyRefiner const &refiner, Options options=Options())
Instantiates StencilTable from TopologyRefiner that have been refined uniformly or adaptively.
│ │ │ │
static StencilTableReal< REAL > const * AppendLocalPointStencilTableFaceVarying(TopologyRefiner const &refiner, StencilTableReal< REAL > const *baseStencilTable, StencilTableReal< REAL > const *localPointStencilTable, int channel=0, bool factorize=true)
Utility function for stencil splicing for local point face-varying stencils.
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00725.html │ │ │ │ @@ -96,23 +96,23 @@ │ │ │ │ Namespaces │ │ │ │
primvarRefiner.h File Reference
│ │ │ │ │ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ #include "../sdc/types.h"
│ │ │ │ #include "../sdc/options.h"
│ │ │ │ -#include "../sdc/bilinearScheme.h"
│ │ │ │ -#include "../sdc/catmarkScheme.h"
│ │ │ │ +#include "../sdc/bilinearScheme.h"
│ │ │ │ +#include "../sdc/catmarkScheme.h"
│ │ │ │ #include "../sdc/loopScheme.h"
│ │ │ │ #include "../vtr/level.h"
│ │ │ │ -#include "../vtr/fvarLevel.h"
│ │ │ │ +#include "../vtr/fvarLevel.h"
│ │ │ │ #include "../vtr/refinement.h"
│ │ │ │ #include "../vtr/fvarRefinement.h"
│ │ │ │ #include "../vtr/stackBuffer.h"
│ │ │ │ -#include "../vtr/componentInterfaces.h"
│ │ │ │ +#include "../vtr/componentInterfaces.h"
│ │ │ │ #include "../far/types.h"
│ │ │ │ #include "../far/error.h"
│ │ │ │ #include "../far/topologyLevel.h"
│ │ │ │ #include "../far/topologyRefiner.h"
│ │ │ │ #include <cassert>
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00728.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/far/patchTableFactory.h File Reference │ │ │ │ +OpenSubdiv: opensubdiv/far/patchTable.h File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -90,33 +90,33 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
patchTableFactory.h File Reference
│ │ │ │ +
patchTable.h File Reference
│ │ │ │
│ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ -#include "../far/topologyRefiner.h"
│ │ │ │ -#include "../far/patchTable.h"
│ │ │ │ +#include "../far/patchDescriptor.h"
│ │ │ │ +#include "../far/patchParam.h"
│ │ │ │ +#include "../far/stencilTable.h"
│ │ │ │ +#include "../sdc/options.h"
│ │ │ │ +#include <vector>
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │

│ │ │ │ Classes

class  StencilTableFactoryReal< REAL >
│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  PatchTableFactory
 Factory for constructing a PatchTable from a TopologyRefiner. More...
class  PatchTable
 Container for arrays of parametric patches. More...
 
struct  PatchTableFactory::Options
 Public options for the PatchTable factory. More...
 
struct  PatchTableFactory::PatchFaceTag
 Obsolete internal struct not intended for public use – due to be deprecated. More...
class  PatchTable::PatchHandle
 Handle that can be used as unique patch identifier within PatchTable. More...
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -125,13 +125,13 @@ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  OpenSubdiv
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION
 
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,32 +1,32 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -patchTableFactory.h File Reference │ │ │ │ │ +patchTable.h File Reference │ │ │ │ │ #include "../version.h" │ │ │ │ │ -#include "_._._/_f_a_r_/_t_o_p_o_l_o_g_y_R_e_f_i_n_e_r_._h" │ │ │ │ │ -#include "_._._/_f_a_r_/_p_a_t_c_h_T_a_b_l_e_._h" │ │ │ │ │ +#include "_._._/_f_a_r_/_p_a_t_c_h_D_e_s_c_r_i_p_t_o_r_._h" │ │ │ │ │ +#include "_._._/_f_a_r_/_p_a_t_c_h_P_a_r_a_m_._h" │ │ │ │ │ +#include "_._._/_f_a_r_/_s_t_e_n_c_i_l_T_a_b_l_e_._h" │ │ │ │ │ +#include "_._._/_s_d_c_/_o_p_t_i_o_n_s_._h" │ │ │ │ │ +#include │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ - class   _P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y │ │ │ │ │ -  Factory for constructing a _P_a_t_c_h_T_a_b_l_e from a _T_o_p_o_l_o_g_y_R_e_f_i_n_e_r. _M_o_r_e_._._. │ │ │ │ │ +class   _P_a_t_c_h_T_a_b_l_e │ │ │ │ │ +  Container for arrays of parametric patches. _M_o_r_e_._._. │ │ │ │ │   │ │ │ │ │ -struct   _P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s │ │ │ │ │ -  Public options for the _P_a_t_c_h_T_a_b_l_e factory. _M_o_r_e_._._. │ │ │ │ │ -  │ │ │ │ │ -struct   _P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_P_a_t_c_h_F_a_c_e_T_a_g │ │ │ │ │ -  Obsolete internal struct not intended for public use – due to be │ │ │ │ │ - deprecated. _M_o_r_e_._._. │ │ │ │ │ +class   _P_a_t_c_h_T_a_b_l_e_:_:_P_a_t_c_h_H_a_n_d_l_e │ │ │ │ │ +  Handle that can be used as unique patch identifier within _P_a_t_c_h_T_a_b_l_e. │ │ │ │ │ + _M_o_r_e_._._. │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r │ │ │ │ │   │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _f_a_r │ │ │ │ │ - * _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h │ │ │ │ │ + * _p_a_t_c_h_T_a_b_l_e_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00728.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -1,5 +1,4 @@ │ │ │ │ │ var a00728 = [ │ │ │ │ │ - ["PatchTableFactory", "a01017.html", "a01017"], │ │ │ │ │ - ["Options", "a01021.html", "a01021"], │ │ │ │ │ - ["PatchFaceTag", "a01025.html", "a01025"] │ │ │ │ │ + ["PatchTable", "a00993.html", "a00993"], │ │ │ │ │ + ["PatchHandle", "a00997.html", "a00997"] │ │ │ │ │ ]; │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00728_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/far/patchTableFactory.h Source File │ │ │ │ +OpenSubdiv: opensubdiv/far/patchTable.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -92,15 +92,15 @@ │ │ │ │
No Matches
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
patchTableFactory.h
│ │ │ │ +
patchTable.h
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1//
│ │ │ │
2// Copyright 2013 Pixar
│ │ │ │
3//
│ │ │ │
4// Licensed under the Apache License, Version 2.0 (the "Apache License")
│ │ │ │
5// with the following modification; you may not use this file except in
│ │ │ │ @@ -119,249 +119,798 @@ │ │ │ │
18// Unless required by applicable law or agreed to in writing, software
│ │ │ │
19// distributed under the Apache License with the above modification is
│ │ │ │
20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
│ │ │ │
21// KIND, either express or implied. See the Apache License for the specific
│ │ │ │
22// language governing permissions and limitations under the Apache License.
│ │ │ │
23//
│ │ │ │
24
│ │ │ │ -
25#ifndef OPENSUBDIV3_FAR_PATCH_TABLE_FACTORY_H
│ │ │ │ -
26#define OPENSUBDIV3_FAR_PATCH_TABLE_FACTORY_H
│ │ │ │ +
25#ifndef OPENSUBDIV3_FAR_PATCH_TABLE_H
│ │ │ │ +
26#define OPENSUBDIV3_FAR_PATCH_TABLE_H
│ │ │ │
27
│ │ │ │
28#include "../version.h"
│ │ │ │
29
│ │ │ │ -
30#include "../far/topologyRefiner.h"
│ │ │ │ -
31#include "../far/patchTable.h"
│ │ │ │ -
32
│ │ │ │ -
33namespace OpenSubdiv {
│ │ │ │ -
34namespace OPENSUBDIV_VERSION {
│ │ │ │ +
30#include "../far/patchDescriptor.h"
│ │ │ │ +
31#include "../far/patchParam.h"
│ │ │ │ +
32#include "../far/stencilTable.h"
│ │ │ │ +
33
│ │ │ │ +
34#include "../sdc/options.h"
│ │ │ │
35
│ │ │ │ -
36namespace Far {
│ │ │ │ +
36#include <vector>
│ │ │ │
37
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
41public:
│ │ │ │ +
38namespace OpenSubdiv {
│ │ │ │ +
39namespace OPENSUBDIV_VERSION {
│ │ │ │ +
40
│ │ │ │ +
41namespace Far {
│ │ │ │
42
│ │ │ │ -
│ │ │ │ -
45 struct Options {
│ │ │ │ -
46
│ │ │ │
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
61 };
│ │ │ │ -
│ │ │ │ -
62
│ │ │ │ -
│ │ │ │ -
63 Options(unsigned int maxIsolation=10) :
│ │ │ │ -
64 generateAllLevels(false),
│ │ │ │ - │ │ │ │ - │ │ │ │ -
67 triangulateQuads(false),
│ │ │ │ - │ │ │ │ -
69 useInfSharpPatch(false),
│ │ │ │ -
70 maxIsolationLevel(maxIsolation & 0xf),
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
75 generateFVarTables(false),
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
82 { }
│ │ │ │ -
│ │ │ │ -
83
│ │ │ │ - │ │ │ │ -
86
│ │ │ │ -
88 void SetEndCapType(EndCapType e) { endCapType = e & 0x7; }
│ │ │ │ -
89
│ │ │ │ -
91 void SetMaxIsolationLevel(unsigned int level) { maxIsolationLevel = level & 0xf; }
│ │ │ │ -
92
│ │ │ │ -
94 template <typename REAL> void SetPatchPrecision();
│ │ │ │ -
95
│ │ │ │ -
97 template <typename REAL> void SetFVarPatchPrecision();
│ │ │ │ -
98
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ -
102
│ │ │ │ -
103 adaptiveOptions.useInfSharpPatch = useInfSharpPatch;
│ │ │ │ - │ │ │ │ -
105 adaptiveOptions.considerFVarChannels = generateFVarTables &&
│ │ │ │ - │ │ │ │ -
107 return adaptiveOptions;
│ │ │ │ -
108 }
│ │ │ │ -
│ │ │ │ -
109
│ │ │ │ -
110 unsigned int generateAllLevels : 1,
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ +
56
│ │ │ │ +
57public:
│ │ │ │ +
58
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
61 // XXXX manuelk members will eventually be made private
│ │ │ │ +
62 public:
│ │ │ │ +
63
│ │ │ │ +
64 friend class PatchTable;
│ │ │ │ +
65 friend class PatchMap;
│ │ │ │ +
66
│ │ │ │ +
67 Index arrayIndex, // Array index of the patch
│ │ │ │ +
68 patchIndex, // Absolute Index of the patch
│ │ │ │ +
69 vertIndex; // Relative offset to the first CV of the patch in array
│ │ │ │ +
70 };
│ │ │ │ +
│ │ │ │ +
71
│ │ │ │ +
72public:
│ │ │ │ +
73
│ │ │ │ +
75 PatchTable(PatchTable const & src);
│ │ │ │ +
76
│ │ │ │ + │ │ │ │ +
79
│ │ │ │ +
81 bool IsFeatureAdaptive() const;
│ │ │ │ +
82
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
85 return (int)_patchVerts.size();
│ │ │ │ +
86 }
│ │ │ │ +
│ │ │ │ +
87
│ │ │ │ +
89 int GetNumPatchesTotal() const;
│ │ │ │ +
90
│ │ │ │ +
92 int GetMaxValence() const { return _maxValence; }
│ │ │ │ +
93
│ │ │ │ +
95 int GetNumPtexFaces() const { return _numPtexFaces; }
│ │ │ │ +
96
│ │ │ │ +
97
│ │ │ │ +
99
│ │ │ │ +
105
│ │ │ │ + │ │ │ │ +
108
│ │ │ │ + │ │ │ │ +
111
│ │ │ │ +
113 PatchParam GetPatchParam(PatchHandle const & handle) const;
│ │ │ │
114
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
118
│ │ │ │ -
119 // end-capping
│ │ │ │ - │ │ │ │ - │ │ │ │ -
123
│ │ │ │ -
124 // varying
│ │ │ │ - │ │ │ │ - │ │ │ │ -
127
│ │ │ │ -
128 // face-varying
│ │ │ │ - │ │ │ │ +
116 ConstIndexArray GetPatchVertices(int array, int patch) const;
│ │ │ │ +
117
│ │ │ │ +
119 PatchParam GetPatchParam(int array, int patch) const;
│ │ │ │ +
121
│ │ │ │ +
122
│ │ │ │ +
124
│ │ │ │
130
│ │ │ │ -
131 // precision
│ │ │ │ - │ │ │ │ - │ │ │ │ -
134
│ │ │ │ -
135 // legacy behaviors (default to true)
│ │ │ │ - │ │ │ │ - │ │ │ │ -
138
│ │ │ │ - │ │ │ │ -
140 int const * fvarChannelIndices;
│ │ │ │ -
141 };
│ │ │ │ -
│ │ │ │ +
132 int GetNumPatchArrays() const;
│ │ │ │ +
133
│ │ │ │ +
135 int GetNumPatches(int array) const;
│ │ │ │ +
136
│ │ │ │ +
138 int GetNumControlVertices(int array) const;
│ │ │ │ +
139
│ │ │ │ + │ │ │ │
142
│ │ │ │ -
175 static PatchTable * Create(TopologyRefiner const & refiner,
│ │ │ │ -
176 Options options = Options(),
│ │ │ │ -
177 ConstIndexArray selectedFaces = ConstIndexArray());
│ │ │ │ -
178
│ │ │ │ -
179public:
│ │ │ │ -
180 // PatchFaceTag
│ │ │ │ -
181 //
│ │ │ │ -
182 // This simple struct was previously used within the factory to take inventory of
│ │ │ │ -
183 // various kinds of patches to fully allocate buffers prior to populating them. It
│ │ │ │ -
184 // was not intended to be exposed as part of the public interface.
│ │ │ │ -
185 //
│ │ │ │ -
186 // It is no longer used internally and is being kept here to respect preservation
│ │ │ │ -
187 // of the public interface, but it will be deprecated at the earliest opportunity.
│ │ │ │ -
188 //
│ │ │ │ -
191 //
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
193 public:
│ │ │ │ -
194 unsigned int _hasPatch : 1;
│ │ │ │ -
195 unsigned int _isRegular : 1;
│ │ │ │ -
196 unsigned int _transitionMask : 4;
│ │ │ │ -
197 unsigned int _boundaryMask : 4;
│ │ │ │ -
198 unsigned int _boundaryIndex : 2;
│ │ │ │ -
199 unsigned int _boundaryCount : 3;
│ │ │ │ -
200 unsigned int _hasBoundaryEdge : 3;
│ │ │ │ -
201 unsigned int _isSingleCrease : 1;
│ │ │ │ -
202
│ │ │ │ -
203 void clear();
│ │ │ │ -
204 void assignBoundaryPropertiesFromEdgeMask(int boundaryEdgeMask);
│ │ │ │ -
205 void assignBoundaryPropertiesFromVertexMask(int boundaryVertexMask);
│ │ │ │ -
206 void assignTransitionPropertiesFromEdgeMask(int boundaryVertexMask);
│ │ │ │ -
207 };
│ │ │ │ -
│ │ │ │ -
208 typedef std::vector<PatchFaceTag> PatchTagVector;
│ │ │ │ -
209};
│ │ │ │ -
│ │ │ │ -
210
│ │ │ │ -
211
│ │ │ │ -
│ │ │ │ -
212template <> inline void PatchTableFactory::Options::SetPatchPrecision<float>() {
│ │ │ │ -
213 patchPrecisionDouble = false;
│ │ │ │ -
214}
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
215template <> inline void PatchTableFactory::Options::SetFVarPatchPrecision<float>() {
│ │ │ │ -
216 fvarPatchPrecisionDouble = false;
│ │ │ │ -
217}
│ │ │ │ -
│ │ │ │ + │ │ │ │ +
145
│ │ │ │ +
147 ConstPatchParamArray const GetPatchParams(int array) const;
│ │ │ │ +
149
│ │ │ │ +
150
│ │ │ │ +
152
│ │ │ │ +
159
│ │ │ │ +
161 int GetNumLocalPoints() const;
│ │ │ │ +
162
│ │ │ │ + │ │ │ │ +
165
│ │ │ │ +
167 template <typename REAL>
│ │ │ │ + │ │ │ │ +
169
│ │ │ │ +
172 template <typename REAL> bool LocalPointStencilPrecisionMatchesType() const;
│ │ │ │ +
173
│ │ │ │ +
186 template <class T> void
│ │ │ │ +
187 ComputeLocalPointValues(T const *src, T *dst) const;
│ │ │ │ +
188
│ │ │ │ +
189
│ │ │ │ + │ │ │ │ +
192
│ │ │ │ + │ │ │ │ +
195
│ │ │ │ +
197 template <typename REAL>
│ │ │ │ + │ │ │ │ +
199
│ │ │ │ +
202 template <typename REAL> bool LocalPointVaryingStencilPrecisionMatchesType() const;
│ │ │ │ +
203
│ │ │ │ +
216 template <class T> void
│ │ │ │ +
217 ComputeLocalPointValuesVarying(T const *src, T *dst) const;
│ │ │ │
218
│ │ │ │ -
219template <> inline void PatchTableFactory::Options::SetPatchPrecision<double>() {
│ │ │ │ -
220 patchPrecisionDouble = true;
│ │ │ │ -
221}
│ │ │ │ -
222template <> inline void PatchTableFactory::Options::SetFVarPatchPrecision<double>() {
│ │ │ │ -
223 fvarPatchPrecisionDouble = true;
│ │ │ │ -
224}
│ │ │ │ +
219
│ │ │ │ +
221 int GetNumLocalPointsFaceVarying(int channel = 0) const;
│ │ │ │ +
222
│ │ │ │ +
224 StencilTable const *GetLocalPointFaceVaryingStencilTable(int channel = 0) const;
│ │ │ │
225
│ │ │ │ -
226
│ │ │ │ -
227} // end namespace Far
│ │ │ │ -
228
│ │ │ │ -
229} // end namespace OPENSUBDIV_VERSION
│ │ │ │ -
230using namespace OPENSUBDIV_VERSION;
│ │ │ │ -
231
│ │ │ │ -
232} // end namespace OpenSubdiv
│ │ │ │ +
227 template <typename REAL>
│ │ │ │ + │ │ │ │ +
229
│ │ │ │ +
232 template <typename REAL> bool LocalPointFaceVaryingStencilPrecisionMatchesType() const;
│ │ │ │
233
│ │ │ │ -
234
│ │ │ │ -
235#endif /* OPENSUBDIV3_FAR_PATCH_TABLE_FACTORY_H */
│ │ │ │ +
248 template <class T> void
│ │ │ │ +
249 ComputeLocalPointValuesFaceVarying(T const *src, T *dst, int channel = 0) const;
│ │ │ │ +
251
│ │ │ │ +
252
│ │ │ │ +
254
│ │ │ │ +
255
│ │ │ │ + │ │ │ │ +
260
│ │ │ │ + │ │ │ │ +
263
│ │ │ │ +
264 typedef std::vector<Index> VertexValenceTable;
│ │ │ │ +
265
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
268 return _vertexValenceTable;
│ │ │ │ +
269 }
│ │ │ │ +
│ │ │ │ +
271
│ │ │ │ +
272
│ │ │ │ +
274
│ │ │ │ +
280
│ │ │ │ + │ │ │ │ +
284
│ │ │ │ +
287 float GetSingleCreasePatchSharpnessValue(int array, int patch) const;
│ │ │ │ +
289
│ │ │ │ +
290
│ │ │ │ +
292
│ │ │ │ +
298
│ │ │ │ + │ │ │ │ +
301
│ │ │ │ + │ │ │ │ +
304
│ │ │ │ +
306 ConstIndexArray GetPatchVaryingVertices(int array, int patch) const;
│ │ │ │ +
307
│ │ │ │ + │ │ │ │ +
310
│ │ │ │ + │ │ │ │ +
314
│ │ │ │ +
315
│ │ │ │ +
317
│ │ │ │ +
323
│ │ │ │ + │ │ │ │ +
326
│ │ │ │ + │ │ │ │ +
329
│ │ │ │ + │ │ │ │ +
332
│ │ │ │ + │ │ │ │ +
335
│ │ │ │ +
337 ConstIndexArray GetPatchFVarValues(PatchHandle const & handle, int channel = 0) const;
│ │ │ │ +
338
│ │ │ │ +
340 ConstIndexArray GetPatchFVarValues(int array, int patch, int channel = 0) const;
│ │ │ │ +
341
│ │ │ │ +
343 ConstIndexArray GetPatchArrayFVarValues(int array, int channel = 0) const;
│ │ │ │ +
344
│ │ │ │ +
346 ConstIndexArray GetFVarValues(int channel = 0) const;
│ │ │ │ +
347
│ │ │ │ +
349 int GetFVarValueStride(int channel = 0) const;
│ │ │ │ +
350
│ │ │ │ +
352 PatchParam GetPatchFVarPatchParam(PatchHandle const & handle, int channel = 0) const;
│ │ │ │ +
353
│ │ │ │ +
355 PatchParam GetPatchFVarPatchParam(int array, int patch, int channel = 0) const;
│ │ │ │ +
356
│ │ │ │ +
358 ConstPatchParamArray GetPatchArrayFVarPatchParams(int array, int channel = 0) const;
│ │ │ │ +
359
│ │ │ │ + │ │ │ │ +
362
│ │ │ │ + │ │ │ │ +
366
│ │ │ │ +
367
│ │ │ │ +
369
│ │ │ │ +
374
│ │ │ │ +
375 typedef std::vector<Index> PatchVertsTable;
│ │ │ │ +
376
│ │ │ │ +
378 PatchVertsTable const & GetPatchControlVerticesTable() const { return _patchVerts; }
│ │ │ │ +
379
│ │ │ │ +
381 PatchParamTable const & GetPatchParamTable() const { return _paramTable; }
│ │ │ │ +
382
│ │ │ │ +
384 std::vector<Index> const &GetSharpnessIndexTable() const { return _sharpnessIndices; }
│ │ │ │ +
385
│ │ │ │ +
387 std::vector<float> const &GetSharpnessValues() const { return _sharpnessValues; }
│ │ │ │ +
388
│ │ │ │ +
389 typedef std::vector<unsigned int> QuadOffsetsTable;
│ │ │ │ +
390
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
393 return _quadOffsetsTable;
│ │ │ │ +
394 }
│ │ │ │ +
│ │ │ │ +
396
│ │ │ │ +
398 void print() const;
│ │ │ │ +
399
│ │ │ │ +
400public:
│ │ │ │ +
401
│ │ │ │ +
403
│ │ │ │ +
405
│ │ │ │ +
428 template <typename REAL>
│ │ │ │ +
429 void EvaluateBasis(PatchHandle const & handle, REAL u, REAL v,
│ │ │ │ +
430 REAL wP[], REAL wDu[] = 0, REAL wDv[] = 0,
│ │ │ │ +
431 REAL wDuu[] = 0, REAL wDuv[] = 0, REAL wDvv[] = 0) const;
│ │ │ │ +
432
│ │ │ │ +
435 void EvaluateBasis(PatchHandle const & handle, float u, float v,
│ │ │ │ +
436 float wP[], float wDu[] = 0, float wDv[] = 0,
│ │ │ │ +
437 float wDuu[] = 0, float wDuv[] = 0, float wDvv[] = 0) const;
│ │ │ │ +
438
│ │ │ │ +
441 void EvaluateBasis(PatchHandle const & handle, double u, double v,
│ │ │ │ +
442 double wP[], double wDu[] = 0, double wDv[] = 0,
│ │ │ │ +
443 double wDuu[] = 0, double wDuv[] = 0, double wDvv[] = 0) const;
│ │ │ │ +
444
│ │ │ │ +
467 template <typename REAL>
│ │ │ │ +
468 void EvaluateBasisVarying(PatchHandle const & handle, REAL u, REAL v,
│ │ │ │ +
469 REAL wP[], REAL wDu[] = 0, REAL wDv[] = 0,
│ │ │ │ +
470 REAL wDuu[] = 0, REAL wDuv[] = 0, REAL wDvv[] = 0) const;
│ │ │ │ +
471
│ │ │ │ +
474 void EvaluateBasisVarying(PatchHandle const & handle, float u, float v,
│ │ │ │ +
475 float wP[], float wDu[] = 0, float wDv[] = 0,
│ │ │ │ +
476 float wDuu[] = 0, float wDuv[] = 0, float wDvv[] = 0) const;
│ │ │ │ +
477
│ │ │ │ +
480 void EvaluateBasisVarying(PatchHandle const & handle, double u, double v,
│ │ │ │ +
481 double wP[], double wDu[] = 0, double wDv[] = 0,
│ │ │ │ +
482 double wDuu[] = 0, double wDuv[] = 0, double wDvv[] = 0) const;
│ │ │ │ +
483
│ │ │ │ +
508 template <typename REAL>
│ │ │ │ +
509 void EvaluateBasisFaceVarying(PatchHandle const & handle, REAL u, REAL v,
│ │ │ │ +
510 REAL wP[], REAL wDu[] = 0, REAL wDv[] = 0,
│ │ │ │ +
511 REAL wDuu[] = 0, REAL wDuv[] = 0, REAL wDvv[] = 0,
│ │ │ │ +
512 int channel = 0) const;
│ │ │ │ +
513
│ │ │ │ +
516 void EvaluateBasisFaceVarying(PatchHandle const & handle, float u, float v,
│ │ │ │ +
517 float wP[], float wDu[] = 0, float wDv[] = 0,
│ │ │ │ +
518 float wDuu[] = 0, float wDuv[] = 0, float wDvv[] = 0,
│ │ │ │ +
519 int channel = 0) const;
│ │ │ │ +
520
│ │ │ │ +
523 void EvaluateBasisFaceVarying(PatchHandle const & handle, double u, double v,
│ │ │ │ +
524 double wP[], double wDu[] = 0, double wDv[] = 0,
│ │ │ │ +
525 double wDuu[] = 0, double wDuv[] = 0, double wDvv[] = 0,
│ │ │ │ +
526 int channel = 0) const;
│ │ │ │ +
528
│ │ │ │ +
529protected:
│ │ │ │ +
530
│ │ │ │ +
531 friend class PatchTableBuilder;
│ │ │ │ +
532
│ │ │ │ +
533 // Factory constructor
│ │ │ │ +
534 PatchTable(int maxvalence);
│ │ │ │ +
535
│ │ │ │ +
536 Index getPatchIndex(int array, int patch) const;
│ │ │ │ +
537
│ │ │ │ + │ │ │ │ +
539
│ │ │ │ + │ │ │ │ +
541 float * getSharpnessValues(Index arrayIndex);
│ │ │ │ +
542
│ │ │ │ +
543private:
│ │ │ │ +
544
│ │ │ │ +
545 //
│ │ │ │ +
546 // Patch arrays
│ │ │ │ +
547 //
│ │ │ │ +
548 struct PatchArray {
│ │ │ │ +
549 PatchArray(PatchDescriptor d, int np, Index v, Index p, Index qo) :
│ │ │ │ +
550 desc(d), numPatches(np), vertIndex(v),
│ │ │ │ +
551 patchIndex(p), quadOffsetIndex (qo) { }
│ │ │ │ +
552
│ │ │ │ +
553 void print() const;
│ │ │ │ +
554
│ │ │ │ +
555 PatchDescriptor desc; // type of patches in the array
│ │ │ │ +
556
│ │ │ │ +
557 int numPatches; // number of patches in the array
│ │ │ │ +
558
│ │ │ │ +
559 Index vertIndex, // index to the first control vertex
│ │ │ │ +
560 patchIndex, // absolute index of the first patch in the array
│ │ │ │ +
561 quadOffsetIndex; // index of the first quad offset entry
│ │ │ │ +
562 };
│ │ │ │ +
563
│ │ │ │ +
564 typedef std::vector<PatchArray> PatchArrayVector;
│ │ │ │ +
565
│ │ │ │ +
566 PatchArray & getPatchArray(Index arrayIndex);
│ │ │ │ +
567 PatchArray const & getPatchArray(Index arrayIndex) const;
│ │ │ │ +
568
│ │ │ │ +
569 void reservePatchArrays(int numPatchArrays);
│ │ │ │ +
570 void pushPatchArray(PatchDescriptor desc, int npatches,
│ │ │ │ +
571 Index * vidx, Index * pidx, Index * qoidx=0);
│ │ │ │ +
572
│ │ │ │ +
573 IndexArray getPatchArrayVertices(int arrayIndex);
│ │ │ │ +
574
│ │ │ │ +
575 Index findPatchArray(PatchDescriptor desc);
│ │ │ │ +
576
│ │ │ │ +
577
│ │ │ │ +
578 //
│ │ │ │ +
579 // Varying patch arrays
│ │ │ │ +
580 //
│ │ │ │ +
581 IndexArray getPatchArrayVaryingVertices(int arrayIndex);
│ │ │ │ +
582
│ │ │ │ +
583 void allocateVaryingVertices(
│ │ │ │ +
584 PatchDescriptor desc, int numPatches);
│ │ │ │ +
585 void populateVaryingVertices();
│ │ │ │ +
586
│ │ │ │ +
587 //
│ │ │ │ +
588 // Face-varying patch channels
│ │ │ │ +
589 //
│ │ │ │ +
590
│ │ │ │ +
591 //
│ │ │ │ +
592 // FVarPatchChannel
│ │ │ │ +
593 //
│ │ │ │ +
594 // Stores a record for each patch in the primitive :
│ │ │ │ +
595 //
│ │ │ │ +
596 // - Each patch in the PatchTable has a corresponding patch in each
│ │ │ │ +
597 // face-varying patch channel. Patch vertex indices are sorted in the same
│ │ │ │ +
598 // patch-type order as PatchTable::PTables. Face-varying data for a patch
│ │ │ │ +
599 // can therefore be quickly accessed by using the patch primitive ID as
│ │ │ │ +
600 // index into patchValueOffsets to locate the face-varying control vertex
│ │ │ │ +
601 // indices.
│ │ │ │ +
602 //
│ │ │ │ +
603 // - Face-varying channels can have a different interpolation modes
│ │ │ │ +
604 //
│ │ │ │ +
605 // - Unlike "vertex" patches, there are no transition masks required
│ │ │ │ +
606 // for face-varying patches.
│ │ │ │ +
607 //
│ │ │ │ +
608 // - Face-varying patches still require boundary edge masks.
│ │ │ │ +
609 //
│ │ │ │ +
610 // - currently most patches with sharp boundaries but smooth interiors have
│ │ │ │ +
611 // to be isolated to level 10 : we need a special type of bicubic patch
│ │ │ │ +
612 // similar to single-crease to resolve this condition without requiring
│ │ │ │ +
613 // isolation if possible
│ │ │ │ +
614 //
│ │ │ │ +
615 struct FVarPatchChannel {
│ │ │ │ + │ │ │ │ +
617
│ │ │ │ +
618 PatchDescriptor regDesc;
│ │ │ │ +
619 PatchDescriptor irregDesc;
│ │ │ │ +
620
│ │ │ │ +
621 int stride;
│ │ │ │ +
622
│ │ │ │ +
623 std::vector<Index> patchValues;
│ │ │ │ +
624 std::vector<PatchParam> patchParam;
│ │ │ │ +
625 };
│ │ │ │ +
626 typedef std::vector<FVarPatchChannel> FVarPatchChannelVector;
│ │ │ │ +
627
│ │ │ │ +
628 FVarPatchChannel & getFVarPatchChannel(int channel);
│ │ │ │ +
629 FVarPatchChannel const & getFVarPatchChannel(int channel) const;
│ │ │ │ +
630
│ │ │ │ +
631 void allocateFVarPatchChannels(int numChannels);
│ │ │ │ +
632 void allocateFVarPatchChannelValues(
│ │ │ │ +
633 PatchDescriptor regDesc, PatchDescriptor irregDesc,
│ │ │ │ +
634 int numPatches, int channel);
│ │ │ │ +
635
│ │ │ │ +
636 // deprecated
│ │ │ │ +
637 void setFVarPatchChannelLinearInterpolation(
│ │ │ │ +
638 Sdc::Options::FVarLinearInterpolation interpolation, int channel);
│ │ │ │ +
639
│ │ │ │ +
640 IndexArray getFVarValues(int channel);
│ │ │ │ +
641 ConstIndexArray getPatchFVarValues(int patch, int channel) const;
│ │ │ │ +
642
│ │ │ │ +
643 PatchParamArray getFVarPatchParams(int channel);
│ │ │ │ +
644 PatchParam getPatchFVarPatchParam(int patch, int channel) const;
│ │ │ │ +
645
│ │ │ │ +
646private:
│ │ │ │ +
647 //
│ │ │ │ +
648 // Simple private class to hold stencil table pointers of varying precision,
│ │ │ │ +
649 // where the discriminant of the precision is external.
│ │ │ │ +
650 //
│ │ │ │ +
651 // NOTE that this is a simple pointer container and NOT a smart pointer that
│ │ │ │ +
652 // manages the ownership of the object referred to by it.
│ │ │ │ +
653 //
│ │ │ │ +
654 class StencilTablePtr {
│ │ │ │ +
655 private:
│ │ │ │ +
656 typedef StencilTableReal<float> float_type;
│ │ │ │ +
657 typedef StencilTableReal<double> double_type;
│ │ │ │ +
658
│ │ │ │ +
659 union {
│ │ │ │ +
660 float_type * _fPtr;
│ │ │ │ +
661 double_type * _dPtr;
│ │ │ │ +
662 };
│ │ │ │ +
663
│ │ │ │ +
664 public:
│ │ │ │ +
665 StencilTablePtr() { _fPtr = 0; }
│ │ │ │ +
666 StencilTablePtr(float_type * ptr) { _fPtr = ptr; }
│ │ │ │ +
667 StencilTablePtr(double_type * ptr) { _dPtr = ptr; }
│ │ │ │ +
668
│ │ │ │ +
669 operator bool() const { return _fPtr != 0; }
│ │ │ │ +
670
│ │ │ │ +
671 void Set() { _fPtr = 0; }
│ │ │ │ +
672 void Set(float_type * ptr) { _fPtr = ptr; }
│ │ │ │ +
673 void Set(double_type * ptr) { _dPtr = ptr; }
│ │ │ │ +
674
│ │ │ │ +
675 template <typename REAL> StencilTableReal<REAL> * Get() const;
│ │ │ │ +
676 };
│ │ │ │ +
677
│ │ │ │ +
678private:
│ │ │ │ +
679
│ │ │ │ +
680 //
│ │ │ │ +
681 // Topology
│ │ │ │ +
682 //
│ │ │ │ +
683
│ │ │ │ +
684 int _maxValence, // highest vertex valence found in the mesh
│ │ │ │ +
685 _numPtexFaces; // total number of ptex faces
│ │ │ │ +
686
│ │ │ │ +
687 PatchArrayVector _patchArrays; // Vector of descriptors for arrays of patches
│ │ │ │ +
688
│ │ │ │ +
689 std::vector<Index> _patchVerts; // Indices of the control vertices of the patches
│ │ │ │ +
690
│ │ │ │ +
691 PatchParamTable _paramTable; // PatchParam bitfields (one per patch)
│ │ │ │ +
692
│ │ │ │ +
693 //
│ │ │ │ +
694 // Extraordinary vertex closed-form evaluation / endcap basis conversion
│ │ │ │ +
695 //
│ │ │ │ +
696 // XXXtakahito: these data will probably be replaced with mask coefficient or something
│ │ │ │ +
697 // SchemeWorker populates.
│ │ │ │ +
698 //
│ │ │ │ +
699 QuadOffsetsTable _quadOffsetsTable; // Quad offsets (for Gregory patches)
│ │ │ │ +
700 VertexValenceTable _vertexValenceTable; // Vertex valence table (for Gregory patches)
│ │ │ │ +
701
│ │ │ │ +
702 StencilTablePtr _localPointStencils; // local point conversion stencils
│ │ │ │ +
703 StencilTablePtr _localPointVaryingStencils; // local point varying stencils
│ │ │ │ +
704
│ │ │ │ +
705 //
│ │ │ │ +
706 // Varying data
│ │ │ │ +
707 //
│ │ │ │ +
708 PatchDescriptor _varyingDesc;
│ │ │ │ +
709
│ │ │ │ +
710 std::vector<Index> _varyingVerts;
│ │ │ │ +
711
│ │ │ │ +
712 //
│ │ │ │ +
713 // Face-varying data
│ │ │ │ +
714 //
│ │ │ │ +
715 FVarPatchChannelVector _fvarChannels;
│ │ │ │ +
716
│ │ │ │ +
717 std::vector<StencilTablePtr> _localPointFaceVaryingStencils;
│ │ │ │ +
718
│ │ │ │ +
719 //
│ │ │ │ +
720 // 'single-crease' patch sharpness tables
│ │ │ │ +
721 //
│ │ │ │ +
722 std::vector<Index> _sharpnessIndices; // Indices of single-crease sharpness (one per patch)
│ │ │ │ +
723 std::vector<float> _sharpnessValues; // Sharpness values.
│ │ │ │ +
724
│ │ │ │ +
725 //
│ │ │ │ +
726 // Construction history -- relevant to at least one public query:
│ │ │ │ +
727 //
│ │ │ │ +
728 unsigned int _isUniformLinear : 1;
│ │ │ │ +
729
│ │ │ │ +
730 //
│ │ │ │ +
731 // Precision -- only applies to local-point stencil tables
│ │ │ │ +
732 //
│ │ │ │ +
733 unsigned int _vertexPrecisionIsDouble : 1;
│ │ │ │ +
734 unsigned int _varyingPrecisionIsDouble : 1;
│ │ │ │ +
735 unsigned int _faceVaryingPrecisionIsDouble : 1;
│ │ │ │ +
736};
│ │ │ │ +
│ │ │ │ +
737
│ │ │ │ +
738
│ │ │ │ +
739//
│ │ │ │ +
740// Template specializations for float/double -- to be defined before used:
│ │ │ │ +
741//
│ │ │ │ +
742template <> inline StencilTableReal<float> *
│ │ │ │ +
743PatchTable::StencilTablePtr::Get<float>() const { return _fPtr; }
│ │ │ │ +
744
│ │ │ │ +
745template <> inline StencilTableReal<double> *
│ │ │ │ +
746PatchTable::StencilTablePtr::Get<double>() const { return _dPtr; }
│ │ │ │ +
747
│ │ │ │ +
│ │ │ │ +
748template <> inline bool
│ │ │ │ +
749PatchTable::LocalPointStencilPrecisionMatchesType<float>() const {
│ │ │ │ +
750 return !_vertexPrecisionIsDouble;
│ │ │ │ +
751}
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
752template <> inline bool
│ │ │ │ +
753PatchTable::LocalPointVaryingStencilPrecisionMatchesType<float>() const {
│ │ │ │ +
754 return !_varyingPrecisionIsDouble;
│ │ │ │ +
755}
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
756template <> inline bool
│ │ │ │ +
757PatchTable::LocalPointFaceVaryingStencilPrecisionMatchesType<float>() const {
│ │ │ │ +
758 return !_faceVaryingPrecisionIsDouble;
│ │ │ │ +
759}
│ │ │ │ +
│ │ │ │ +
760
│ │ │ │ +
│ │ │ │ +
761template <> inline bool
│ │ │ │ +
762PatchTable::LocalPointStencilPrecisionMatchesType<double>() const {
│ │ │ │ +
763 return _vertexPrecisionIsDouble;
│ │ │ │ +
764}
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
765template <> inline bool
│ │ │ │ +
766PatchTable::LocalPointVaryingStencilPrecisionMatchesType<double>() const {
│ │ │ │ +
767 return _varyingPrecisionIsDouble;
│ │ │ │ +
768}
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
769template <> inline bool
│ │ │ │ +
770PatchTable::LocalPointFaceVaryingStencilPrecisionMatchesType<double>() const {
│ │ │ │ +
771 return _faceVaryingPrecisionIsDouble;
│ │ │ │ +
772}
│ │ │ │ +
│ │ │ │ +
773
│ │ │ │ +
774//
│ │ │ │ +
775// StencilTable access -- backward compatible and generic:
│ │ │ │ +
776//
│ │ │ │ +
777inline StencilTable const *
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
779 assert(LocalPointStencilPrecisionMatchesType<float>());
│ │ │ │ +
780 return static_cast<StencilTable const *>(_localPointStencils.Get<float>());
│ │ │ │ +
781}
│ │ │ │ +
│ │ │ │ +
782inline StencilTable const *
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
784 assert(LocalPointVaryingStencilPrecisionMatchesType<float>());
│ │ │ │ +
785 return static_cast<StencilTable const *>(
│ │ │ │ +
786 _localPointVaryingStencils.Get<float>());
│ │ │ │ +
787}
│ │ │ │ +
│ │ │ │ +
788inline StencilTable const *
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
790 assert(LocalPointFaceVaryingStencilPrecisionMatchesType<float>());
│ │ │ │ +
791 if (channel >= 0 && channel < (int)_localPointFaceVaryingStencils.size()) {
│ │ │ │ +
792 return static_cast<StencilTable const *>(
│ │ │ │ +
793 _localPointFaceVaryingStencils[channel].Get<float>());
│ │ │ │ +
794 }
│ │ │ │ +
795 return NULL;
│ │ │ │ +
796}
│ │ │ │ +
│ │ │ │ +
797
│ │ │ │ +
798template <typename REAL>
│ │ │ │ +
799inline StencilTableReal<REAL> const *
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
801 assert(LocalPointStencilPrecisionMatchesType<REAL>());
│ │ │ │ +
802 return _localPointStencils.Get<REAL>();
│ │ │ │ +
803}
│ │ │ │ +
│ │ │ │ +
804template <typename REAL>
│ │ │ │ +
805inline StencilTableReal<REAL> const *
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
807 assert(LocalPointVaryingStencilPrecisionMatchesType<REAL>());
│ │ │ │ +
808 return _localPointVaryingStencils.Get<REAL>();
│ │ │ │ +
809}
│ │ │ │ +
│ │ │ │ +
810template <typename REAL>
│ │ │ │ +
811inline StencilTableReal<REAL> const *
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
813 assert(LocalPointFaceVaryingStencilPrecisionMatchesType<REAL>());
│ │ │ │ +
814 if (channel >= 0 && channel < (int)_localPointFaceVaryingStencils.size()) {
│ │ │ │ +
815 return _localPointFaceVaryingStencils[channel].Get<REAL>();
│ │ │ │ +
816 }
│ │ │ │ +
817 return NULL;
│ │ │ │ +
818}
│ │ │ │ +
│ │ │ │ +
819
│ │ │ │ +
820
│ │ │ │ +
821//
│ │ │ │ +
822// Computation of local point values:
│ │ │ │ +
823//
│ │ │ │ +
824template <class T>
│ │ │ │ +
825inline void
│ │ │ │ +
│ │ │ │ +
826PatchTable::ComputeLocalPointValues(T const *src, T *dst) const {
│ │ │ │ +
827 assert(LocalPointStencilPrecisionMatchesType<float>());
│ │ │ │ +
828 if (_localPointStencils) {
│ │ │ │ +
829 _localPointStencils.Get<float>()->UpdateValues(src, dst);
│ │ │ │ +
830 }
│ │ │ │ +
831}
│ │ │ │ +
│ │ │ │ +
832
│ │ │ │ +
833template <class T>
│ │ │ │ +
834inline void
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
836 assert(LocalPointVaryingStencilPrecisionMatchesType<float>());
│ │ │ │ +
837 if (_localPointVaryingStencils) {
│ │ │ │ +
838 _localPointVaryingStencils.Get<float>()->UpdateValues(src, dst);
│ │ │ │ +
839 }
│ │ │ │ +
840}
│ │ │ │ +
│ │ │ │ +
841
│ │ │ │ +
842template <class T>
│ │ │ │ +
843inline void
│ │ │ │ +
│ │ │ │ +
844PatchTable::ComputeLocalPointValuesFaceVarying(T const *src, T *dst, int channel) const {
│ │ │ │ +
845 assert(LocalPointFaceVaryingStencilPrecisionMatchesType<float>());
│ │ │ │ +
846 if (channel >= 0 && channel < (int)_localPointFaceVaryingStencils.size()) {
│ │ │ │ +
847 if (_localPointFaceVaryingStencils[channel]) {
│ │ │ │ +
848 _localPointFaceVaryingStencils[channel].Get<float>()->UpdateValues(src, dst);
│ │ │ │ +
849 }
│ │ │ │ +
850 }
│ │ │ │ +
851}
│ │ │ │ +
│ │ │ │ +
852
│ │ │ │ +
853
│ │ │ │ +
854//
│ │ │ │ +
855// Basis evaluation overloads
│ │ │ │ +
856//
│ │ │ │ +
857inline void
│ │ │ │ +
│ │ │ │ +
858PatchTable::EvaluateBasis(PatchHandle const & handle, float u, float v,
│ │ │ │ +
859 float wP[], float wDu[], float wDv[],
│ │ │ │ +
860 float wDuu[], float wDuv[], float wDvv[]) const {
│ │ │ │ +
861
│ │ │ │ +
862 EvaluateBasis<float>(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv);
│ │ │ │ +
863}
│ │ │ │ +
│ │ │ │ +
864inline void
│ │ │ │ +
│ │ │ │ +
865PatchTable::EvaluateBasis(PatchHandle const & handle, double u, double v,
│ │ │ │ +
866 double wP[], double wDu[], double wDv[],
│ │ │ │ +
867 double wDuu[], double wDuv[], double wDvv[]) const {
│ │ │ │ +
868
│ │ │ │ +
869 EvaluateBasis<double>(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv);
│ │ │ │ +
870}
│ │ │ │ +
│ │ │ │ +
871
│ │ │ │ +
872inline void
│ │ │ │ +
│ │ │ │ +
873PatchTable::EvaluateBasisVarying(PatchHandle const & handle, float u, float v,
│ │ │ │ +
874 float wP[], float wDu[], float wDv[],
│ │ │ │ +
875 float wDuu[], float wDuv[], float wDvv[]) const {
│ │ │ │ +
876
│ │ │ │ +
877 EvaluateBasisVarying<float>(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv);
│ │ │ │ +
878}
│ │ │ │ +
│ │ │ │ +
879inline void
│ │ │ │ +
│ │ │ │ +
880PatchTable::EvaluateBasisVarying(PatchHandle const & handle, double u, double v,
│ │ │ │ +
881 double wP[], double wDu[], double wDv[],
│ │ │ │ +
882 double wDuu[], double wDuv[], double wDvv[]) const {
│ │ │ │ +
883
│ │ │ │ +
884 EvaluateBasisVarying<double>(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv);
│ │ │ │ +
885}
│ │ │ │ +
│ │ │ │ +
886
│ │ │ │ +
887inline void
│ │ │ │ +
│ │ │ │ +
888PatchTable::EvaluateBasisFaceVarying(PatchHandle const & handle, float u, float v,
│ │ │ │ +
889 float wP[], float wDu[], float wDv[],
│ │ │ │ +
890 float wDuu[], float wDuv[], float wDvv[], int channel) const {
│ │ │ │ +
891
│ │ │ │ +
892 EvaluateBasisFaceVarying<float>(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv, channel);
│ │ │ │ +
893}
│ │ │ │ +
│ │ │ │ +
894inline void
│ │ │ │ +
│ │ │ │ +
895PatchTable::EvaluateBasisFaceVarying(PatchHandle const & handle, double u, double v,
│ │ │ │ +
896 double wP[], double wDu[], double wDv[],
│ │ │ │ +
897 double wDuu[], double wDuv[], double wDvv[], int channel) const {
│ │ │ │ +
898
│ │ │ │ +
899 EvaluateBasisFaceVarying<double>(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv, channel);
│ │ │ │ +
900}
│ │ │ │ +
│ │ │ │ +
901
│ │ │ │ +
902} // end namespace Far
│ │ │ │ +
903
│ │ │ │ +
904} // end namespace OPENSUBDIV_VERSION
│ │ │ │ +
905using namespace OPENSUBDIV_VERSION;
│ │ │ │ +
906
│ │ │ │ +
907} // end namespace OpenSubdiv
│ │ │ │ +
908
│ │ │ │ +
909#endif /* OPENSUBDIV3_FAR_PATCH_TABLE */
│ │ │ │ │ │ │ │
Vtr::ConstIndexArray ConstIndexArray
Definition types.h:47
│ │ │ │ -
Container for arrays of parametric patches.
Definition patchTable.h:55
│ │ │ │ -
Factory for constructing a PatchTable from a TopologyRefiner.
│ │ │ │ - │ │ │ │ -
static PatchTable * Create(TopologyRefiner const &refiner, Options options=Options(), ConstIndexArray selectedFaces=ConstIndexArray())
Instantiates a PatchTable from a client-provided TopologyRefiner.
│ │ │ │ - │ │ │ │ -
unsigned int generateVaryingTables
Generate varying patch tables.
│ │ │ │ -
unsigned int generateLegacySharpCornerPatches
Generate sharp regular patches at smooth corners (legacy)
│ │ │ │ - │ │ │ │ -
TopologyRefiner::AdaptiveOptions GetRefineAdaptiveOptions() const
Determine adaptive refinement options to match assigned patch options.
│ │ │ │ -
unsigned int maxIsolationLevel
Cap adaptive feature isolation to the given level (max. 10)
│ │ │ │ - │ │ │ │ -
unsigned int generateFVarLegacyLinearPatches
Generate all linear face-varying patches (legacy)
│ │ │ │ -
void SetPatchPrecision()
Set precision of vertex patches.
│ │ │ │ -
unsigned int fvarPatchPrecisionDouble
Generate double-precision stencils for face-varying patches.
│ │ │ │ -
void SetMaxIsolationLevel(unsigned int level)
Set maximum isolation level.
│ │ │ │ - │ │ │ │ -
int const * fvarChannelIndices
List containing the indices of the channels selected for the factory.
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
unsigned int generateVaryingLocalPoints
Generate local points with varying patches.
│ │ │ │ -
unsigned int includeFVarBaseLevelIndices
Include base level in face-varying patch point indices (Uniform mode only)
│ │ │ │ -
unsigned int generateAllLevels
Generate levels from 'firstLevel' to 'maxLevel' (Uniform mode only)
│ │ │ │ -
unsigned int patchPrecisionDouble
Generate double-precision stencils for vertex patches.
│ │ │ │ -
unsigned int generateFVarTables
Generate face-varying patch tables.
│ │ │ │ -
unsigned int includeBaseLevelIndices
Include base level in patch point indices (Uniform mode only)
│ │ │ │ -
void SetFVarPatchPrecision()
Set precision of face-varying patches.
│ │ │ │ -
int numFVarChannels
Number of channel indices and interpolation modes passed.
│ │ │ │ -
unsigned int triangulateQuads
Triangulate 'QUADS' primitives (Uniform mode only)
│ │ │ │ -
EndCapType
Choice for approximating irregular patches (end-caps)
│ │ │ │ -
@ ENDCAP_LEGACY_GREGORY
legacy option for 2.x style Gregory patches (Catmark only)
│ │ │ │ -
@ ENDCAP_GREGORY_BASIS
use Gregory patches (highest quality, recommended default)
│ │ │ │ - │ │ │ │ -
@ ENDCAP_BILINEAR_BASIS
use linear patches (simple quads or tris)
│ │ │ │ -
@ ENDCAP_BSPLINE_BASIS
use BSpline-like patches (same patch type as regular)
│ │ │ │ - │ │ │ │ -
Obsolete internal struct not intended for public use – due to be deprecated.
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
Stores topology data for a specified set of refinement options.
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ +
std::vector< PatchParam > PatchParamTable
Definition patchParam.h:243
│ │ │ │ + │ │ │ │ + │ │ │ │ +
Vtr::Array< PatchParam > PatchParamArray
Definition patchParam.h:245
│ │ │ │ +
std::vector< PatchArray > PatchArrayVector
Definition types.h:132
│ │ │ │ + │ │ │ │ +
An quadtree-based map connecting coarse faces to their sub-patches.
Definition patchMap.h:49
│ │ │ │ + │ │ │ │ +
Container for arrays of parametric patches.
Definition patchTable.h:55
│ │ │ │ +
ConstIndexArray GetPatchArrayVaryingVertices(int array) const
Returns the varying vertex indices for the patches in array.
│ │ │ │ + │ │ │ │ +
PatchVertsTable const & GetPatchControlVerticesTable() const
Get the table of patch control vertices.
Definition patchTable.h:378
│ │ │ │ +
void ComputeLocalPointValuesFaceVarying(T const *src, T *dst, int channel=0) const
Updates local point face-varying values.
Definition patchTable.h:844
│ │ │ │ +
ConstIndexArray GetVaryingVertices() const
Returns an array of varying vertex indices for the patches.
│ │ │ │ +
void ComputeLocalPointValuesVarying(T const *src, T *dst) const
Updates local point varying values.
Definition patchTable.h:835
│ │ │ │ +
ConstIndexArray GetPatchVaryingVertices(PatchHandle const &handle) const
Returns the varying vertex indices for a given patch.
│ │ │ │ +
bool IsFeatureAdaptive() const
True if the patches are of feature adaptive types.
│ │ │ │ +
int GetMaxValence() const
Returns max vertex valence.
Definition patchTable.h:92
│ │ │ │ +
StencilTableReal< REAL > const * GetLocalPointStencilTable() const
Returns the stencil table to compute local point vertex values.
│ │ │ │ +
StencilTable const * GetLocalPointStencilTable() const
Returns the stencil table to compute local point vertex values.
Definition patchTable.h:778
│ │ │ │ +
PatchParamArray getPatchParams(int arrayIndex)
│ │ │ │ +
ConstIndexArray GetPatchArrayFVarValues(int array, int channel=0) const
Returns the value indices for the patches in array in channel.
│ │ │ │ +
std::vector< float > const & GetSharpnessValues() const
Returns sharpness values table.
Definition patchTable.h:387
│ │ │ │ + │ │ │ │ +
PatchParam GetPatchFVarPatchParam(int array, int patch, int channel=0) const
Returns the face-varying params for a given patch channel.
│ │ │ │ +
ConstIndexArray GetPatchVaryingVertices(int array, int patch) const
Returns the varying vertex indices for a given patch.
│ │ │ │ +
PatchTable(PatchTable const &src)
Copy constructor.
│ │ │ │ +
int GetNumPatchArrays() const
Returns the number of patch arrays in the table.
│ │ │ │ +
ConstIndexArray GetPatchVertices(PatchHandle const &handle) const
Returns the control vertex indices for the patch identified by handle.
│ │ │ │ + │ │ │ │ +
bool LocalPointFaceVaryingStencilPrecisionMatchesType() const
Tests if the precision of the stencil table to compute local point face-varying values matches the gi...
│ │ │ │ +
PatchParamTable const & GetPatchParamTable() const
Returns the PatchParamTable (PatchParams order matches patch array sorting)
Definition patchTable.h:381
│ │ │ │ +
VertexValenceTable const & GetVertexValenceTable() const
Returns the 'VertexValences' table (vertex neighborhoods table)
Definition patchTable.h:267
│ │ │ │ +
StencilTable const * GetLocalPointFaceVaryingStencilTable(int channel=0) const
Returns the stencil table to compute local point face-varying values.
Definition patchTable.h:789
│ │ │ │ +
int GetNumControlVertices(int array) const
Returns the number of control vertices in array.
│ │ │ │ + │ │ │ │ +
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
Evaluate basis functions for a face-varying value and derivatives at a given (u,v) parametric locatio...
│ │ │ │ +
ConstQuadOffsetsArray GetPatchQuadOffsets(PatchHandle const &handle) const
Returns the 'QuadOffsets' for the Gregory patch identified by handle.
│ │ │ │ +
PatchDescriptor GetFVarPatchDescriptorIrregular(int channel=0) const
Returns the irregular patch descriptor for channel.
│ │ │ │ +
float GetSingleCreasePatchSharpnessValue(int array, int patch) const
Returns the crease sharpness for the patch in array if it is a single-crease patch,...
│ │ │ │ + │ │ │ │ +
void ComputeLocalPointValues(T const *src, T *dst) const
Updates local point vertex values.
Definition patchTable.h:826
│ │ │ │ +
float GetSingleCreasePatchSharpnessValue(PatchHandle const &handle) const
Returns the crease sharpness for the patch identified by handle if it is a single-crease patch,...
│ │ │ │ +
PatchParam GetPatchParam(int array, int patch) const
Returns the PatchParam for patch in array.
│ │ │ │ +
ConstIndexArray GetPatchFVarValues(int array, int patch, int channel=0) const
Returns the value indices for a given patch in channel.
│ │ │ │ +
PatchDescriptor GetFVarPatchDescriptorRegular(int channel=0) const
Returns the regular patch descriptor for channel.
│ │ │ │ +
PatchDescriptor GetPatchDescriptor(PatchHandle const &handle) const
Returns the PatchDescriptor for the patch identified by handle.
│ │ │ │ + │ │ │ │ +
QuadOffsetsTable const & GetQuadOffsetsTable() const
Returns the quad-offsets table.
Definition patchTable.h:392
│ │ │ │ +
int GetNumPatches(int array) const
Returns the number of patches in array.
│ │ │ │ +
PatchDescriptor GetVaryingPatchDescriptor() const
Returns the varying patch descriptor.
│ │ │ │ +
ConstIndexArray GetPatchFVarValues(PatchHandle const &handle, int channel=0) const
Returns the value indices for a given patch in channel.
│ │ │ │ +
ConstPatchParamArray const GetPatchParams(int array) const
Returns the PatchParams for the patches in array.
│ │ │ │ +
int GetNumControlVerticesTotal() const
Returns the total number of control vertex indices in the table.
Definition patchTable.h:84
│ │ │ │ +
int GetNumFVarChannels() const
Returns the number of face-varying channels.
│ │ │ │ +
ConstPatchParamArray GetPatchArrayFVarPatchParams(int array, int channel=0) const
Returns the face-varying for a given patch in array in channel.
│ │ │ │ +
Index getPatchIndex(int array, int patch) const
│ │ │ │ +
int GetNumLocalPoints() const
Returns the number of local vertex points.
│ │ │ │ +
bool LocalPointVaryingStencilPrecisionMatchesType() const
Tests if the precision of the stencil table to compute local point varying values matches the given f...
│ │ │ │ +
ConstIndexArray GetPatchArrayVertices(int array) const
Returns the control vertex indices for the patches in array.
│ │ │ │ +
int GetNumPtexFaces() const
Returns the total number of ptex faces in the mesh.
Definition patchTable.h:95
│ │ │ │ +
ConstIndexArray GetFVarValues(int channel=0) const
Returns an array of value indices for the patches in channel.
│ │ │ │ +
Vtr::ConstArray< unsigned int > ConstQuadOffsetsArray
Accessors for the gregory patch evaluation buffers. These methods will be deprecated.
Definition patchTable.h:259
│ │ │ │ +
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
Evaluate basis functions for position and derivatives at a given (u,v) parametric location of a patch...
│ │ │ │ +
StencilTableReal< REAL > const * GetLocalPointFaceVaryingStencilTable(int channel=0) const
Returns the stencil table to compute local point face-varying values.
│ │ │ │ +
int GetNumPatchesTotal() const
Returns the total number of patches stored in the table.
│ │ │ │ +
PatchParam GetPatchParam(PatchHandle const &handle) const
Returns a PatchParam for the patch identified by handle.
│ │ │ │ + │ │ │ │ +
Sdc::Options::FVarLinearInterpolation GetFVarChannelLinearInterpolation(int channel=0) const
Deprecated.
│ │ │ │ +
std::vector< Index > const & GetSharpnessIndexTable() const
Returns a sharpness index table for each patch (if exists)
Definition patchTable.h:384
│ │ │ │ +
PatchDescriptor GetPatchArrayDescriptor(int array) const
Returns the PatchDescriptor for the patches in array.
│ │ │ │ + │ │ │ │ +
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
Evaluate basis functions for a varying value and derivatives at a given (u,v) parametric location of ...
│ │ │ │ +
StencilTable const * GetLocalPointVaryingStencilTable() const
Returns the stencil table to compute local point varying values.
Definition patchTable.h:783
│ │ │ │ +
std::vector< unsigned int > QuadOffsetsTable
Definition patchTable.h:389
│ │ │ │ +
ConstIndexArray GetPatchVertices(int array, int patch) const
Returns the control vertex indices for patch in array.
│ │ │ │ +
PatchParam GetPatchFVarPatchParam(PatchHandle const &handle, int channel=0) const
Returns the value indices for a given patch in channel.
│ │ │ │ +
int GetFVarValueStride(int channel=0) const
Returns the stride between patches in the value index array of channel.
│ │ │ │ +
ConstPatchParamArray GetFVarPatchParams(int channel=0) const
Returns an array of face-varying patch param for channel.
│ │ │ │ +
PatchDescriptor GetFVarPatchDescriptor(int channel=0) const
Returns the default/irregular patch descriptor for channel.
│ │ │ │ +
int GetNumLocalPointsVarying() const
Returns the number of local varying points.
│ │ │ │ +
bool LocalPointStencilPrecisionMatchesType() const
Tests if the precision of the stencil table to compute local point vertex values matches the given fl...
│ │ │ │ +
StencilTableReal< REAL > const * GetLocalPointVaryingStencilTable() const
Returns the stencil table to compute local point varying values.
│ │ │ │ +
int GetNumLocalPointsFaceVarying(int channel=0) const
Returns the number of local face-varying points for channel.
│ │ │ │ +
Handle that can be used as unique patch identifier within PatchTable.
Definition patchTable.h:60
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
Stencil table class wrapping the template for compatibility.
│ │ │ │ + │ │ │ │ │ │ │ │ + │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── encoding │ │ │ │ │ @@ -1 +1 @@ │ │ │ │ │ -utf-8 │ │ │ │ │ +us-ascii │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,12 +1,12 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ -patchTableFactory.h │ │ │ │ │ +patchTable.h │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// │ │ │ │ │ 2// Copyright 2013 Pixar │ │ │ │ │ 3// │ │ │ │ │ 4// Licensed under the Apache License, Version 2.0 (the "Apache License") │ │ │ │ │ 5// with the following modification; you may not use this file except in │ │ │ │ │ 6// compliance with the Apache License and the following modification to it: │ │ │ │ │ @@ -24,409 +24,1002 @@ │ │ │ │ │ 18// Unless required by applicable law or agreed to in writing, software │ │ │ │ │ 19// distributed under the Apache License with the above modification is │ │ │ │ │ 20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY │ │ │ │ │ 21// KIND, either express or implied. See the Apache License for the specific │ │ │ │ │ 22// language governing permissions and limitations under the Apache License. │ │ │ │ │ 23// │ │ │ │ │ 24 │ │ │ │ │ -25#ifndef OPENSUBDIV3_FAR_PATCH_TABLE_FACTORY_H │ │ │ │ │ -26#define OPENSUBDIV3_FAR_PATCH_TABLE_FACTORY_H │ │ │ │ │ +25#ifndef OPENSUBDIV3_FAR_PATCH_TABLE_H │ │ │ │ │ +26#define OPENSUBDIV3_FAR_PATCH_TABLE_H │ │ │ │ │ 27 │ │ │ │ │ 28#include "../version.h" │ │ │ │ │ 29 │ │ │ │ │ -30#include "../far/topologyRefiner.h" │ │ │ │ │ -31#include "../far/patchTable.h" │ │ │ │ │ -32 │ │ │ │ │ -33namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ -34namespace OPENSUBDIV_VERSION { │ │ │ │ │ +30#include "../far/patchDescriptor.h" │ │ │ │ │ +31#include "../far/patchParam.h" │ │ │ │ │ +32#include "../far/stencilTable.h" │ │ │ │ │ +33 │ │ │ │ │ +34#include "../sdc/options.h" │ │ │ │ │ 35 │ │ │ │ │ -36namespace Far { │ │ │ │ │ +36#include │ │ │ │ │ 37 │ │ │ │ │ -_4_0class _P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y { │ │ │ │ │ -41public: │ │ │ │ │ +38namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ +39namespace OPENSUBDIV_VERSION { │ │ │ │ │ +40 │ │ │ │ │ +41namespace Far { │ │ │ │ │ 42 │ │ │ │ │ -_4_5 struct _O_p_t_i_o_n_s { │ │ │ │ │ -46 │ │ │ │ │ -_5_5 enum _E_n_d_C_a_p_T_y_p_e { │ │ │ │ │ -_5_6 _E_N_D_C_A_P___N_O_N_E = 0, │ │ │ │ │ -_5_7 _E_N_D_C_A_P___B_I_L_I_N_E_A_R___B_A_S_I_S, │ │ │ │ │ -_5_8 _E_N_D_C_A_P___B_S_P_L_I_N_E___B_A_S_I_S, │ │ │ │ │ -_5_9 _E_N_D_C_A_P___G_R_E_G_O_R_Y___B_A_S_I_S, │ │ │ │ │ -60 _E_N_D_C_A_P___L_E_G_A_C_Y___G_R_E_G_O_R_Y │ │ │ │ │ -_6_1 }; │ │ │ │ │ -62 │ │ │ │ │ -_6_3 _O_p_t_i_o_n_s(unsigned int maxIsolation=10) : │ │ │ │ │ -64 _g_e_n_e_r_a_t_e_A_l_l_L_e_v_e_l_s(false), │ │ │ │ │ -65 _i_n_c_l_u_d_e_B_a_s_e_L_e_v_e_l_I_n_d_i_c_e_s(true), │ │ │ │ │ -66 _i_n_c_l_u_d_e_F_V_a_r_B_a_s_e_L_e_v_e_l_I_n_d_i_c_e_s(false), │ │ │ │ │ -67 _t_r_i_a_n_g_u_l_a_t_e_Q_u_a_d_s(false), │ │ │ │ │ -68 _u_s_e_S_i_n_g_l_e_C_r_e_a_s_e_P_a_t_c_h(false), │ │ │ │ │ -69 _u_s_e_I_n_f_S_h_a_r_p_P_a_t_c_h(false), │ │ │ │ │ -70 _m_a_x_I_s_o_l_a_t_i_o_n_L_e_v_e_l(maxIsolation & 0xf), │ │ │ │ │ -71 _e_n_d_C_a_p_T_y_p_e(_E_N_D_C_A_P___G_R_E_G_O_R_Y___B_A_S_I_S), │ │ │ │ │ -72 _s_h_a_r_e_E_n_d_C_a_p_P_a_t_c_h_P_o_i_n_t_s(true), │ │ │ │ │ -73 _g_e_n_e_r_a_t_e_V_a_r_y_i_n_g_T_a_b_l_e_s(true), │ │ │ │ │ -74 _g_e_n_e_r_a_t_e_V_a_r_y_i_n_g_L_o_c_a_l_P_o_i_n_t_s(true), │ │ │ │ │ -75 _g_e_n_e_r_a_t_e_F_V_a_r_T_a_b_l_e_s(false), │ │ │ │ │ -76 _p_a_t_c_h_P_r_e_c_i_s_i_o_n_D_o_u_b_l_e(false), │ │ │ │ │ -77 _f_v_a_r_P_a_t_c_h_P_r_e_c_i_s_i_o_n_D_o_u_b_l_e(false), │ │ │ │ │ -78 _g_e_n_e_r_a_t_e_F_V_a_r_L_e_g_a_c_y_L_i_n_e_a_r_P_a_t_c_h_e_s(true), │ │ │ │ │ -79 _g_e_n_e_r_a_t_e_L_e_g_a_c_y_S_h_a_r_p_C_o_r_n_e_r_P_a_t_c_h_e_s(true), │ │ │ │ │ -80 _n_u_m_F_V_a_r_C_h_a_n_n_e_l_s(-1), │ │ │ │ │ -81 _f_v_a_r_C_h_a_n_n_e_l_I_n_d_i_c_e_s(0) │ │ │ │ │ -82 { } │ │ │ │ │ -83 │ │ │ │ │ -_8_5 _E_n_d_C_a_p_T_y_p_e _G_e_t_E_n_d_C_a_p_T_y_p_e() const { return (_E_n_d_C_a_p_T_y_p_e)_e_n_d_C_a_p_T_y_p_e; } │ │ │ │ │ -86 │ │ │ │ │ -_8_8 void _S_e_t_E_n_d_C_a_p_T_y_p_e(_E_n_d_C_a_p_T_y_p_e e) { _e_n_d_C_a_p_T_y_p_e = e & 0x7; } │ │ │ │ │ -89 │ │ │ │ │ -_9_1 void _S_e_t_M_a_x_I_s_o_l_a_t_i_o_n_L_e_v_e_l(unsigned int level) { _m_a_x_I_s_o_l_a_t_i_o_n_L_e_v_e_l = level & │ │ │ │ │ -0xf; } │ │ │ │ │ -92 │ │ │ │ │ -_9_4 template void _S_e_t_P_a_t_c_h_P_r_e_c_i_s_i_o_n(); │ │ │ │ │ -95 │ │ │ │ │ -_9_7 template void _S_e_t_F_V_a_r_P_a_t_c_h_P_r_e_c_i_s_i_o_n(); │ │ │ │ │ -98 │ │ │ │ │ -_1_0_0 _T_o_p_o_l_o_g_y_R_e_f_i_n_e_r_:_:_A_d_a_p_t_i_v_e_O_p_t_i_o_n_s _G_e_t_R_e_f_i_n_e_A_d_a_p_t_i_v_e_O_p_t_i_o_n_s() const { │ │ │ │ │ -101 _T_o_p_o_l_o_g_y_R_e_f_i_n_e_r_:_:_A_d_a_p_t_i_v_e_O_p_t_i_o_n_s adaptiveOptions(_m_a_x_I_s_o_l_a_t_i_o_n_L_e_v_e_l); │ │ │ │ │ -102 │ │ │ │ │ -103 adaptiveOptions._u_s_e_I_n_f_S_h_a_r_p_P_a_t_c_h = _u_s_e_I_n_f_S_h_a_r_p_P_a_t_c_h; │ │ │ │ │ -104 adaptiveOptions._u_s_e_S_i_n_g_l_e_C_r_e_a_s_e_P_a_t_c_h = _u_s_e_S_i_n_g_l_e_C_r_e_a_s_e_P_a_t_c_h; │ │ │ │ │ -105 adaptiveOptions._c_o_n_s_i_d_e_r_F_V_a_r_C_h_a_n_n_e_l_s = _g_e_n_e_r_a_t_e_F_V_a_r_T_a_b_l_e_s && │ │ │ │ │ -106 !_g_e_n_e_r_a_t_e_F_V_a_r_L_e_g_a_c_y_L_i_n_e_a_r_P_a_t_c_h_e_s; │ │ │ │ │ -107 return adaptiveOptions; │ │ │ │ │ -108 } │ │ │ │ │ -109 │ │ │ │ │ -_1_1_0 unsigned int _g_e_n_e_r_a_t_e_A_l_l_L_e_v_e_l_s : 1, │ │ │ │ │ -_1_1_1 _i_n_c_l_u_d_e_B_a_s_e_L_e_v_e_l_I_n_d_i_c_e_s : 1, │ │ │ │ │ -_1_1_2 _i_n_c_l_u_d_e_F_V_a_r_B_a_s_e_L_e_v_e_l_I_n_d_i_c_e_s : 1, │ │ │ │ │ -_1_1_3 _t_r_i_a_n_g_u_l_a_t_e_Q_u_a_d_s : 1, │ │ │ │ │ +_5_5class _P_a_t_c_h_T_a_b_l_e { │ │ │ │ │ +56 │ │ │ │ │ +57public: │ │ │ │ │ +58 │ │ │ │ │ +_6_0 class _P_a_t_c_h_H_a_n_d_l_e { │ │ │ │ │ +61 // XXXX manuelk members will eventually be made private │ │ │ │ │ +62 public: │ │ │ │ │ +63 │ │ │ │ │ +_6_4 friend class _P_a_t_c_h_T_a_b_l_e; │ │ │ │ │ +_6_5 friend class _P_a_t_c_h_M_a_p; │ │ │ │ │ +66 │ │ │ │ │ +_6_7 _I_n_d_e_x _a_r_r_a_y_I_n_d_e_x, // Array index of the patch │ │ │ │ │ +_6_8 _p_a_t_c_h_I_n_d_e_x, // Absolute Index of the patch │ │ │ │ │ +_6_9 _v_e_r_t_I_n_d_e_x; // Relative offset to the first CV of the patch in array │ │ │ │ │ +70 }; │ │ │ │ │ +71 │ │ │ │ │ +72public: │ │ │ │ │ +73 │ │ │ │ │ +_7_5 _P_a_t_c_h_T_a_b_l_e(_P_a_t_c_h_T_a_b_l_e const & src); │ │ │ │ │ +76 │ │ │ │ │ +_7_8 _~_P_a_t_c_h_T_a_b_l_e(); │ │ │ │ │ +79 │ │ │ │ │ +_8_1 bool _I_s_F_e_a_t_u_r_e_A_d_a_p_t_i_v_e() const; │ │ │ │ │ +82 │ │ │ │ │ +_8_4 int _G_e_t_N_u_m_C_o_n_t_r_o_l_V_e_r_t_i_c_e_s_T_o_t_a_l() const { │ │ │ │ │ +85 return (int)_patchVerts.size(); │ │ │ │ │ +86 } │ │ │ │ │ +87 │ │ │ │ │ +_8_9 int _G_e_t_N_u_m_P_a_t_c_h_e_s_T_o_t_a_l() const; │ │ │ │ │ +90 │ │ │ │ │ +_9_2 int _G_e_t_M_a_x_V_a_l_e_n_c_e() const { return _maxValence; } │ │ │ │ │ +93 │ │ │ │ │ +_9_5 int _G_e_t_N_u_m_P_t_e_x_F_a_c_e_s() const { return _numPtexFaces; } │ │ │ │ │ +96 │ │ │ │ │ +97 │ │ │ │ │ +99 │ │ │ │ │ +105 │ │ │ │ │ +_1_0_7 _P_a_t_c_h_D_e_s_c_r_i_p_t_o_r _G_e_t_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r(_P_a_t_c_h_H_a_n_d_l_e const & handle) const; │ │ │ │ │ +108 │ │ │ │ │ +_1_1_0 _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y _G_e_t_P_a_t_c_h_V_e_r_t_i_c_e_s(_P_a_t_c_h_H_a_n_d_l_e const & handle) const; │ │ │ │ │ +111 │ │ │ │ │ +_1_1_3 _P_a_t_c_h_P_a_r_a_m _G_e_t_P_a_t_c_h_P_a_r_a_m(_P_a_t_c_h_H_a_n_d_l_e const & handle) const; │ │ │ │ │ 114 │ │ │ │ │ -_1_1_5 _u_s_e_S_i_n_g_l_e_C_r_e_a_s_e_P_a_t_c_h : 1, │ │ │ │ │ -_1_1_6 _u_s_e_I_n_f_S_h_a_r_p_P_a_t_c_h : 1, │ │ │ │ │ -_1_1_7 _m_a_x_I_s_o_l_a_t_i_o_n_L_e_v_e_l : 4, │ │ │ │ │ -118 │ │ │ │ │ -119 // end-capping │ │ │ │ │ -_1_2_0 _e_n_d_C_a_p_T_y_p_e : 3, │ │ │ │ │ -_1_2_1 _s_h_a_r_e_E_n_d_C_a_p_P_a_t_c_h_P_o_i_n_t_s : 1, │ │ │ │ │ -123 │ │ │ │ │ -124 // varying │ │ │ │ │ -_1_2_5 _g_e_n_e_r_a_t_e_V_a_r_y_i_n_g_T_a_b_l_e_s : 1, │ │ │ │ │ -_1_2_6 _g_e_n_e_r_a_t_e_V_a_r_y_i_n_g_L_o_c_a_l_P_o_i_n_t_s : 1, │ │ │ │ │ -127 │ │ │ │ │ -128 // face-varying │ │ │ │ │ -_1_2_9 _g_e_n_e_r_a_t_e_F_V_a_r_T_a_b_l_e_s : 1, │ │ │ │ │ +_1_1_6 _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y _G_e_t_P_a_t_c_h_V_e_r_t_i_c_e_s(int array, int patch) const; │ │ │ │ │ +117 │ │ │ │ │ +_1_1_9 _P_a_t_c_h_P_a_r_a_m _G_e_t_P_a_t_c_h_P_a_r_a_m(int array, int patch) const; │ │ │ │ │ +121 │ │ │ │ │ +122 │ │ │ │ │ +124 │ │ │ │ │ 130 │ │ │ │ │ -131 // precision │ │ │ │ │ -_1_3_2 _p_a_t_c_h_P_r_e_c_i_s_i_o_n_D_o_u_b_l_e : 1, │ │ │ │ │ -_1_3_3 _f_v_a_r_P_a_t_c_h_P_r_e_c_i_s_i_o_n_D_o_u_b_l_e : 1, │ │ │ │ │ -134 │ │ │ │ │ -135 // legacy behaviors (default to true) │ │ │ │ │ -_1_3_6 _g_e_n_e_r_a_t_e_F_V_a_r_L_e_g_a_c_y_L_i_n_e_a_r_P_a_t_c_h_e_s : 1, │ │ │ │ │ -_1_3_7 _g_e_n_e_r_a_t_e_L_e_g_a_c_y_S_h_a_r_p_C_o_r_n_e_r_P_a_t_c_h_e_s : 1; │ │ │ │ │ -138 │ │ │ │ │ -_1_3_9 int _n_u_m_F_V_a_r_C_h_a_n_n_e_l_s; │ │ │ │ │ -_1_4_0 int const * _f_v_a_r_C_h_a_n_n_e_l_I_n_d_i_c_e_s; │ │ │ │ │ -141 }; │ │ │ │ │ +_1_3_2 int _G_e_t_N_u_m_P_a_t_c_h_A_r_r_a_y_s() const; │ │ │ │ │ +133 │ │ │ │ │ +_1_3_5 int _G_e_t_N_u_m_P_a_t_c_h_e_s(int array) const; │ │ │ │ │ +136 │ │ │ │ │ +_1_3_8 int _G_e_t_N_u_m_C_o_n_t_r_o_l_V_e_r_t_i_c_e_s(int array) const; │ │ │ │ │ +139 │ │ │ │ │ +_1_4_1 _P_a_t_c_h_D_e_s_c_r_i_p_t_o_r _G_e_t_P_a_t_c_h_A_r_r_a_y_D_e_s_c_r_i_p_t_o_r(int array) const; │ │ │ │ │ 142 │ │ │ │ │ -_1_7_5 static _P_a_t_c_h_T_a_b_l_e * _C_r_e_a_t_e(_T_o_p_o_l_o_g_y_R_e_f_i_n_e_r const & refiner, │ │ │ │ │ -176 _O_p_t_i_o_n_s options = _O_p_t_i_o_n_s(), │ │ │ │ │ -177 _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y selectedFaces = _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y()); │ │ │ │ │ -178 │ │ │ │ │ -179public: │ │ │ │ │ -180 // PatchFaceTag │ │ │ │ │ -181 // │ │ │ │ │ -182 // This simple struct was previously used within the factory to take │ │ │ │ │ -inventory of │ │ │ │ │ -183 // various kinds of patches to fully allocate buffers prior to populating │ │ │ │ │ -them. It │ │ │ │ │ -184 // was not intended to be exposed as part of the public interface. │ │ │ │ │ -185 // │ │ │ │ │ -186 // It is no longer used internally and is being kept here to respect │ │ │ │ │ -preservation │ │ │ │ │ -187 // of the public interface, but it will be deprecated at the earliest │ │ │ │ │ -opportunity. │ │ │ │ │ -188 // │ │ │ │ │ -191 // │ │ │ │ │ -_1_9_2 struct _P_a_t_c_h_F_a_c_e_T_a_g { │ │ │ │ │ -193 public: │ │ │ │ │ -_1_9_4 unsigned int ___h_a_s_P_a_t_c_h : 1; │ │ │ │ │ -_1_9_5 unsigned int ___i_s_R_e_g_u_l_a_r : 1; │ │ │ │ │ -_1_9_6 unsigned int ___t_r_a_n_s_i_t_i_o_n_M_a_s_k : 4; │ │ │ │ │ -_1_9_7 unsigned int ___b_o_u_n_d_a_r_y_M_a_s_k : 4; │ │ │ │ │ -_1_9_8 unsigned int ___b_o_u_n_d_a_r_y_I_n_d_e_x : 2; │ │ │ │ │ -_1_9_9 unsigned int ___b_o_u_n_d_a_r_y_C_o_u_n_t : 3; │ │ │ │ │ -_2_0_0 unsigned int ___h_a_s_B_o_u_n_d_a_r_y_E_d_g_e : 3; │ │ │ │ │ -_2_0_1 unsigned int ___i_s_S_i_n_g_l_e_C_r_e_a_s_e : 1; │ │ │ │ │ -202 │ │ │ │ │ -_2_0_3 void _c_l_e_a_r(); │ │ │ │ │ -_2_0_4 void _a_s_s_i_g_n_B_o_u_n_d_a_r_y_P_r_o_p_e_r_t_i_e_s_F_r_o_m_E_d_g_e_M_a_s_k(int boundaryEdgeMask); │ │ │ │ │ -_2_0_5 void _a_s_s_i_g_n_B_o_u_n_d_a_r_y_P_r_o_p_e_r_t_i_e_s_F_r_o_m_V_e_r_t_e_x_M_a_s_k(int boundaryVertexMask); │ │ │ │ │ -_2_0_6 void _a_s_s_i_g_n_T_r_a_n_s_i_t_i_o_n_P_r_o_p_e_r_t_i_e_s_F_r_o_m_E_d_g_e_M_a_s_k(int boundaryVertexMask); │ │ │ │ │ -207 }; │ │ │ │ │ -_2_0_8 typedef std::vector _P_a_t_c_h_T_a_g_V_e_c_t_o_r; │ │ │ │ │ -209}; │ │ │ │ │ -210 │ │ │ │ │ -211 │ │ │ │ │ -_2_1_2template <> inline void PatchTableFactory::Options::SetPatchPrecision │ │ │ │ │ -() { │ │ │ │ │ -213 _p_a_t_c_h_P_r_e_c_i_s_i_o_n_D_o_u_b_l_e = false; │ │ │ │ │ -214} │ │ │ │ │ -_2_1_5template <> inline void PatchTableFactory::Options:: │ │ │ │ │ -SetFVarPatchPrecision() { │ │ │ │ │ -216 fvarPatchPrecisionDouble = false; │ │ │ │ │ -217} │ │ │ │ │ +_1_4_4 _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y _G_e_t_P_a_t_c_h_A_r_r_a_y_V_e_r_t_i_c_e_s(int array) const; │ │ │ │ │ +145 │ │ │ │ │ +_1_4_7 _C_o_n_s_t_P_a_t_c_h_P_a_r_a_m_A_r_r_a_y const _G_e_t_P_a_t_c_h_P_a_r_a_m_s(int array) const; │ │ │ │ │ +149 │ │ │ │ │ +150 │ │ │ │ │ +152 │ │ │ │ │ +159 │ │ │ │ │ +_1_6_1 int _G_e_t_N_u_m_L_o_c_a_l_P_o_i_n_t_s() const; │ │ │ │ │ +162 │ │ │ │ │ +164 _S_t_e_n_c_i_l_T_a_b_l_e const *_G_e_t_L_o_c_a_l_P_o_i_n_t_S_t_e_n_c_i_l_T_a_b_l_e() const; │ │ │ │ │ +165 │ │ │ │ │ +167 template │ │ │ │ │ +_1_6_8 _S_t_e_n_c_i_l_T_a_b_l_e_R_e_a_l_<_R_E_A_L_> const *_G_e_t_L_o_c_a_l_P_o_i_n_t_S_t_e_n_c_i_l_T_a_b_l_e() const; │ │ │ │ │ +169 │ │ │ │ │ +_1_7_2 template bool _L_o_c_a_l_P_o_i_n_t_S_t_e_n_c_i_l_P_r_e_c_i_s_i_o_n_M_a_t_c_h_e_s_T_y_p_e() │ │ │ │ │ +const; │ │ │ │ │ +173 │ │ │ │ │ +186 template void │ │ │ │ │ +187 _C_o_m_p_u_t_e_L_o_c_a_l_P_o_i_n_t_V_a_l_u_e_s(T const *src, T *dst) const; │ │ │ │ │ +188 │ │ │ │ │ +189 │ │ │ │ │ +_1_9_1 int _G_e_t_N_u_m_L_o_c_a_l_P_o_i_n_t_s_V_a_r_y_i_n_g() const; │ │ │ │ │ +192 │ │ │ │ │ +194 _S_t_e_n_c_i_l_T_a_b_l_e const *_G_e_t_L_o_c_a_l_P_o_i_n_t_V_a_r_y_i_n_g_S_t_e_n_c_i_l_T_a_b_l_e() const; │ │ │ │ │ +195 │ │ │ │ │ +197 template │ │ │ │ │ +_1_9_8 _S_t_e_n_c_i_l_T_a_b_l_e_R_e_a_l_<_R_E_A_L_> const *_G_e_t_L_o_c_a_l_P_o_i_n_t_V_a_r_y_i_n_g_S_t_e_n_c_i_l_T_a_b_l_e() const; │ │ │ │ │ +199 │ │ │ │ │ +_2_0_2 template bool _L_o_c_a_l_P_o_i_n_t_V_a_r_y_i_n_g_S_t_e_n_c_i_l_P_r_e_c_i_s_i_o_n_M_a_t_c_h_e_s_T_y_p_e │ │ │ │ │ +() const; │ │ │ │ │ +203 │ │ │ │ │ +216 template void │ │ │ │ │ +217 _C_o_m_p_u_t_e_L_o_c_a_l_P_o_i_n_t_V_a_l_u_e_s_V_a_r_y_i_n_g(T const *src, T *dst) const; │ │ │ │ │ 218 │ │ │ │ │ -219template <> inline void PatchTableFactory::Options:: │ │ │ │ │ -SetPatchPrecision() { │ │ │ │ │ -220 patchPrecisionDouble = true; │ │ │ │ │ -221} │ │ │ │ │ -222template <> inline void PatchTableFactory::Options:: │ │ │ │ │ -SetFVarPatchPrecision() { │ │ │ │ │ -223 fvarPatchPrecisionDouble = true; │ │ │ │ │ -224} │ │ │ │ │ +219 │ │ │ │ │ +_2_2_1 int _G_e_t_N_u_m_L_o_c_a_l_P_o_i_n_t_s_F_a_c_e_V_a_r_y_i_n_g(int channel = 0) const; │ │ │ │ │ +222 │ │ │ │ │ +224 _S_t_e_n_c_i_l_T_a_b_l_e const *_G_e_t_L_o_c_a_l_P_o_i_n_t_F_a_c_e_V_a_r_y_i_n_g_S_t_e_n_c_i_l_T_a_b_l_e(int channel = 0) │ │ │ │ │ +const; │ │ │ │ │ 225 │ │ │ │ │ -226 │ │ │ │ │ -227} // end namespace Far │ │ │ │ │ -228 │ │ │ │ │ -229} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ -230using namespace OPENSUBDIV_VERSION; │ │ │ │ │ -231 │ │ │ │ │ -232} // end namespace OpenSubdiv │ │ │ │ │ +227 template │ │ │ │ │ +_2_2_8 _S_t_e_n_c_i_l_T_a_b_l_e_R_e_a_l_<_R_E_A_L_> const * _G_e_t_L_o_c_a_l_P_o_i_n_t_F_a_c_e_V_a_r_y_i_n_g_S_t_e_n_c_i_l_T_a_b_l_e(int │ │ │ │ │ +channel = 0) const; │ │ │ │ │ +229 │ │ │ │ │ +_2_3_2 template bool │ │ │ │ │ +_L_o_c_a_l_P_o_i_n_t_F_a_c_e_V_a_r_y_i_n_g_S_t_e_n_c_i_l_P_r_e_c_i_s_i_o_n_M_a_t_c_h_e_s_T_y_p_e() const; │ │ │ │ │ 233 │ │ │ │ │ -234 │ │ │ │ │ -235#endif /* OPENSUBDIV3_FAR_PATCH_TABLE_FACTORY_H */ │ │ │ │ │ +248 template void │ │ │ │ │ +249 _C_o_m_p_u_t_e_L_o_c_a_l_P_o_i_n_t_V_a_l_u_e_s_F_a_c_e_V_a_r_y_i_n_g(T const *src, T *dst, int channel = 0) │ │ │ │ │ +const; │ │ │ │ │ +251 │ │ │ │ │ +252 │ │ │ │ │ +254 │ │ │ │ │ +255 │ │ │ │ │ +_2_5_9 typedef _V_t_r_:_:_C_o_n_s_t_A_r_r_a_y_<_u_n_s_i_g_n_e_d_ _i_n_t_> _C_o_n_s_t_Q_u_a_d_O_f_f_s_e_t_s_A_r_r_a_y; │ │ │ │ │ +260 │ │ │ │ │ +_2_6_2 _C_o_n_s_t_Q_u_a_d_O_f_f_s_e_t_s_A_r_r_a_y _G_e_t_P_a_t_c_h_Q_u_a_d_O_f_f_s_e_t_s(_P_a_t_c_h_H_a_n_d_l_e const & handle) │ │ │ │ │ +const; │ │ │ │ │ +263 │ │ │ │ │ +_2_6_4 typedef std::vector _V_e_r_t_e_x_V_a_l_e_n_c_e_T_a_b_l_e; │ │ │ │ │ +265 │ │ │ │ │ +_2_6_7 _V_e_r_t_e_x_V_a_l_e_n_c_e_T_a_b_l_e const & _G_e_t_V_e_r_t_e_x_V_a_l_e_n_c_e_T_a_b_l_e() const { │ │ │ │ │ +268 return _vertexValenceTable; │ │ │ │ │ +269 } │ │ │ │ │ +271 │ │ │ │ │ +272 │ │ │ │ │ +274 │ │ │ │ │ +280 │ │ │ │ │ +_2_8_3 float _G_e_t_S_i_n_g_l_e_C_r_e_a_s_e_P_a_t_c_h_S_h_a_r_p_n_e_s_s_V_a_l_u_e(_P_a_t_c_h_H_a_n_d_l_e const & handle) const; │ │ │ │ │ +284 │ │ │ │ │ +_2_8_7 float _G_e_t_S_i_n_g_l_e_C_r_e_a_s_e_P_a_t_c_h_S_h_a_r_p_n_e_s_s_V_a_l_u_e(int array, int patch) const; │ │ │ │ │ +289 │ │ │ │ │ +290 │ │ │ │ │ +292 │ │ │ │ │ +298 │ │ │ │ │ +_3_0_0 _P_a_t_c_h_D_e_s_c_r_i_p_t_o_r _G_e_t_V_a_r_y_i_n_g_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r() const; │ │ │ │ │ +301 │ │ │ │ │ +_3_0_3 _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y _G_e_t_P_a_t_c_h_V_a_r_y_i_n_g_V_e_r_t_i_c_e_s(_P_a_t_c_h_H_a_n_d_l_e const & handle) const; │ │ │ │ │ +304 │ │ │ │ │ +_3_0_6 _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y _G_e_t_P_a_t_c_h_V_a_r_y_i_n_g_V_e_r_t_i_c_e_s(int array, int patch) const; │ │ │ │ │ +307 │ │ │ │ │ +_3_0_9 _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y _G_e_t_P_a_t_c_h_A_r_r_a_y_V_a_r_y_i_n_g_V_e_r_t_i_c_e_s(int array) const; │ │ │ │ │ +310 │ │ │ │ │ +_3_1_2 _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y _G_e_t_V_a_r_y_i_n_g_V_e_r_t_i_c_e_s() const; │ │ │ │ │ +314 │ │ │ │ │ +315 │ │ │ │ │ +317 │ │ │ │ │ +323 │ │ │ │ │ +_3_2_5 int _G_e_t_N_u_m_F_V_a_r_C_h_a_n_n_e_l_s() const; │ │ │ │ │ +326 │ │ │ │ │ +_3_2_8 _P_a_t_c_h_D_e_s_c_r_i_p_t_o_r _G_e_t_F_V_a_r_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r_R_e_g_u_l_a_r(int channel = 0) const; │ │ │ │ │ +329 │ │ │ │ │ +_3_3_1 _P_a_t_c_h_D_e_s_c_r_i_p_t_o_r _G_e_t_F_V_a_r_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r_I_r_r_e_g_u_l_a_r(int channel = 0) const; │ │ │ │ │ +332 │ │ │ │ │ +_3_3_4 _P_a_t_c_h_D_e_s_c_r_i_p_t_o_r _G_e_t_F_V_a_r_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r(int channel = 0) const; │ │ │ │ │ +335 │ │ │ │ │ +_3_3_7 _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y _G_e_t_P_a_t_c_h_F_V_a_r_V_a_l_u_e_s(_P_a_t_c_h_H_a_n_d_l_e const & handle, int channel │ │ │ │ │ += 0) const; │ │ │ │ │ +338 │ │ │ │ │ +_3_4_0 _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y _G_e_t_P_a_t_c_h_F_V_a_r_V_a_l_u_e_s(int array, int patch, int channel = 0) │ │ │ │ │ +const; │ │ │ │ │ +341 │ │ │ │ │ +_3_4_3 _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y _G_e_t_P_a_t_c_h_A_r_r_a_y_F_V_a_r_V_a_l_u_e_s(int array, int channel = 0) const; │ │ │ │ │ +344 │ │ │ │ │ +_3_4_6 _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y _G_e_t_F_V_a_r_V_a_l_u_e_s(int channel = 0) const; │ │ │ │ │ +347 │ │ │ │ │ +_3_4_9 int _G_e_t_F_V_a_r_V_a_l_u_e_S_t_r_i_d_e(int channel = 0) const; │ │ │ │ │ +350 │ │ │ │ │ +_3_5_2 _P_a_t_c_h_P_a_r_a_m _G_e_t_P_a_t_c_h_F_V_a_r_P_a_t_c_h_P_a_r_a_m(_P_a_t_c_h_H_a_n_d_l_e const & handle, int channel = │ │ │ │ │ +0) const; │ │ │ │ │ +353 │ │ │ │ │ +_3_5_5 _P_a_t_c_h_P_a_r_a_m _G_e_t_P_a_t_c_h_F_V_a_r_P_a_t_c_h_P_a_r_a_m(int array, int patch, int channel = 0) │ │ │ │ │ +const; │ │ │ │ │ +356 │ │ │ │ │ +_3_5_8 _C_o_n_s_t_P_a_t_c_h_P_a_r_a_m_A_r_r_a_y _G_e_t_P_a_t_c_h_A_r_r_a_y_F_V_a_r_P_a_t_c_h_P_a_r_a_m_s(int array, int channel = │ │ │ │ │ +0) const; │ │ │ │ │ +359 │ │ │ │ │ +_3_6_1 _C_o_n_s_t_P_a_t_c_h_P_a_r_a_m_A_r_r_a_y _G_e_t_F_V_a_r_P_a_t_c_h_P_a_r_a_m_s(int channel = 0) const; │ │ │ │ │ +362 │ │ │ │ │ +_3_6_4 _S_d_c_:_:_O_p_t_i_o_n_s_:_:_F_V_a_r_L_i_n_e_a_r_I_n_t_e_r_p_o_l_a_t_i_o_n _G_e_t_F_V_a_r_C_h_a_n_n_e_l_L_i_n_e_a_r_I_n_t_e_r_p_o_l_a_t_i_o_n(int │ │ │ │ │ +channel = 0) const; │ │ │ │ │ +366 │ │ │ │ │ +367 │ │ │ │ │ +369 │ │ │ │ │ +374 │ │ │ │ │ +_3_7_5 typedef std::vector _P_a_t_c_h_V_e_r_t_s_T_a_b_l_e; │ │ │ │ │ +376 │ │ │ │ │ +_3_7_8 _P_a_t_c_h_V_e_r_t_s_T_a_b_l_e const & _G_e_t_P_a_t_c_h_C_o_n_t_r_o_l_V_e_r_t_i_c_e_s_T_a_b_l_e() const { return │ │ │ │ │ +_patchVerts; } │ │ │ │ │ +379 │ │ │ │ │ +_3_8_1 _P_a_t_c_h_P_a_r_a_m_T_a_b_l_e const & _G_e_t_P_a_t_c_h_P_a_r_a_m_T_a_b_l_e() const { return _paramTable; } │ │ │ │ │ +382 │ │ │ │ │ +_3_8_4 std::vector const &_G_e_t_S_h_a_r_p_n_e_s_s_I_n_d_e_x_T_a_b_l_e() const { return │ │ │ │ │ +_sharpnessIndices; } │ │ │ │ │ +385 │ │ │ │ │ +_3_8_7 std::vector const &_G_e_t_S_h_a_r_p_n_e_s_s_V_a_l_u_e_s() const { return │ │ │ │ │ +_sharpnessValues; } │ │ │ │ │ +388 │ │ │ │ │ +_3_8_9 typedef std::vector _Q_u_a_d_O_f_f_s_e_t_s_T_a_b_l_e; │ │ │ │ │ +390 │ │ │ │ │ +_3_9_2 _Q_u_a_d_O_f_f_s_e_t_s_T_a_b_l_e const & _G_e_t_Q_u_a_d_O_f_f_s_e_t_s_T_a_b_l_e() const { │ │ │ │ │ +393 return _quadOffsetsTable; │ │ │ │ │ +394 } │ │ │ │ │ +396 │ │ │ │ │ +_3_9_8 void _p_r_i_n_t() const; │ │ │ │ │ +399 │ │ │ │ │ +400public: │ │ │ │ │ +401 │ │ │ │ │ +403 │ │ │ │ │ +405 │ │ │ │ │ +428 template │ │ │ │ │ +_4_2_9 void _E_v_a_l_u_a_t_e_B_a_s_i_s(_P_a_t_c_h_H_a_n_d_l_e const & handle, REAL u, REAL v, │ │ │ │ │ +430 REAL wP[], REAL wDu[] = 0, REAL wDv[] = 0, │ │ │ │ │ +431 REAL wDuu[] = 0, REAL wDuv[] = 0, REAL wDvv[] = 0) const; │ │ │ │ │ +432 │ │ │ │ │ +435 void _E_v_a_l_u_a_t_e_B_a_s_i_s(_P_a_t_c_h_H_a_n_d_l_e const & handle, float u, float v, │ │ │ │ │ +436 float wP[], float wDu[] = 0, float wDv[] = 0, │ │ │ │ │ +437 float wDuu[] = 0, float wDuv[] = 0, float wDvv[] = 0) const; │ │ │ │ │ +438 │ │ │ │ │ +441 void _E_v_a_l_u_a_t_e_B_a_s_i_s(_P_a_t_c_h_H_a_n_d_l_e const & handle, double u, double v, │ │ │ │ │ +442 double wP[], double wDu[] = 0, double wDv[] = 0, │ │ │ │ │ +443 double wDuu[] = 0, double wDuv[] = 0, double wDvv[] = 0) const; │ │ │ │ │ +444 │ │ │ │ │ +467 template │ │ │ │ │ +_4_6_8 void _E_v_a_l_u_a_t_e_B_a_s_i_s_V_a_r_y_i_n_g(_P_a_t_c_h_H_a_n_d_l_e const & handle, REAL u, REAL v, │ │ │ │ │ +469 REAL wP[], REAL wDu[] = 0, REAL wDv[] = 0, │ │ │ │ │ +470 REAL wDuu[] = 0, REAL wDuv[] = 0, REAL wDvv[] = 0) const; │ │ │ │ │ +471 │ │ │ │ │ +474 void _E_v_a_l_u_a_t_e_B_a_s_i_s_V_a_r_y_i_n_g(_P_a_t_c_h_H_a_n_d_l_e const & handle, float u, float v, │ │ │ │ │ +475 float wP[], float wDu[] = 0, float wDv[] = 0, │ │ │ │ │ +476 float wDuu[] = 0, float wDuv[] = 0, float wDvv[] = 0) const; │ │ │ │ │ +477 │ │ │ │ │ +480 void _E_v_a_l_u_a_t_e_B_a_s_i_s_V_a_r_y_i_n_g(_P_a_t_c_h_H_a_n_d_l_e const & handle, double u, double v, │ │ │ │ │ +481 double wP[], double wDu[] = 0, double wDv[] = 0, │ │ │ │ │ +482 double wDuu[] = 0, double wDuv[] = 0, double wDvv[] = 0) const; │ │ │ │ │ +483 │ │ │ │ │ +508 template │ │ │ │ │ +_5_0_9 void _E_v_a_l_u_a_t_e_B_a_s_i_s_F_a_c_e_V_a_r_y_i_n_g(_P_a_t_c_h_H_a_n_d_l_e const & handle, REAL u, REAL v, │ │ │ │ │ +510 REAL wP[], REAL wDu[] = 0, REAL wDv[] = 0, │ │ │ │ │ +511 REAL wDuu[] = 0, REAL wDuv[] = 0, REAL wDvv[] = 0, │ │ │ │ │ +512 int channel = 0) const; │ │ │ │ │ +513 │ │ │ │ │ +516 void _E_v_a_l_u_a_t_e_B_a_s_i_s_F_a_c_e_V_a_r_y_i_n_g(_P_a_t_c_h_H_a_n_d_l_e const & handle, float u, float v, │ │ │ │ │ +517 float wP[], float wDu[] = 0, float wDv[] = 0, │ │ │ │ │ +518 float wDuu[] = 0, float wDuv[] = 0, float wDvv[] = 0, │ │ │ │ │ +519 int channel = 0) const; │ │ │ │ │ +520 │ │ │ │ │ +523 void _E_v_a_l_u_a_t_e_B_a_s_i_s_F_a_c_e_V_a_r_y_i_n_g(_P_a_t_c_h_H_a_n_d_l_e const & handle, double u, double │ │ │ │ │ +v, │ │ │ │ │ +524 double wP[], double wDu[] = 0, double wDv[] = 0, │ │ │ │ │ +525 double wDuu[] = 0, double wDuv[] = 0, double wDvv[] = 0, │ │ │ │ │ +526 int channel = 0) const; │ │ │ │ │ +528 │ │ │ │ │ +529protected: │ │ │ │ │ +530 │ │ │ │ │ +_5_3_1 friend class _P_a_t_c_h_T_a_b_l_e_B_u_i_l_d_e_r; │ │ │ │ │ +532 │ │ │ │ │ +533 // Factory constructor │ │ │ │ │ +_5_3_4 _P_a_t_c_h_T_a_b_l_e(int maxvalence); │ │ │ │ │ +535 │ │ │ │ │ +_5_3_6 _I_n_d_e_x _g_e_t_P_a_t_c_h_I_n_d_e_x(int array, int patch) const; │ │ │ │ │ +537 │ │ │ │ │ +_5_3_8 _P_a_t_c_h_P_a_r_a_m_A_r_r_a_y _g_e_t_P_a_t_c_h_P_a_r_a_m_s(int arrayIndex); │ │ │ │ │ +539 │ │ │ │ │ +_5_4_0 _I_n_d_e_x * _g_e_t_S_h_a_r_p_n_e_s_s_I_n_d_i_c_e_s(_I_n_d_e_x arrayIndex); │ │ │ │ │ +_5_4_1 float * _g_e_t_S_h_a_r_p_n_e_s_s_V_a_l_u_e_s(_I_n_d_e_x arrayIndex); │ │ │ │ │ +542 │ │ │ │ │ +543private: │ │ │ │ │ +544 │ │ │ │ │ +545 // │ │ │ │ │ +546 // Patch arrays │ │ │ │ │ +547 // │ │ │ │ │ +548 struct PatchArray { │ │ │ │ │ +549 PatchArray(_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r d, int np, _I_n_d_e_x v, _I_n_d_e_x p, _I_n_d_e_x qo) : │ │ │ │ │ +550 desc(d), numPatches(np), vertIndex(v), │ │ │ │ │ +551 patchIndex(p), quadOffsetIndex (qo) { } │ │ │ │ │ +552 │ │ │ │ │ +553 void print() const; │ │ │ │ │ +554 │ │ │ │ │ +555 _P_a_t_c_h_D_e_s_c_r_i_p_t_o_r desc; // type of patches in the array │ │ │ │ │ +556 │ │ │ │ │ +557 int numPatches; // number of patches in the array │ │ │ │ │ +558 │ │ │ │ │ +559 _I_n_d_e_x vertIndex, // index to the first control vertex │ │ │ │ │ +560 patchIndex, // absolute index of the first patch in the array │ │ │ │ │ +561 quadOffsetIndex; // index of the first quad offset entry │ │ │ │ │ +562 }; │ │ │ │ │ +563 │ │ │ │ │ +564 typedef std::vector PatchArrayVector; │ │ │ │ │ +565 │ │ │ │ │ +566 PatchArray & getPatchArray(_I_n_d_e_x arrayIndex); │ │ │ │ │ +567 PatchArray const & getPatchArray(_I_n_d_e_x arrayIndex) const; │ │ │ │ │ +568 │ │ │ │ │ +569 void reservePatchArrays(int numPatchArrays); │ │ │ │ │ +570 void pushPatchArray(PatchDescriptor desc, int npatches, │ │ │ │ │ +571 _I_n_d_e_x * vidx, _I_n_d_e_x * pidx, _I_n_d_e_x * qoidx=0); │ │ │ │ │ +572 │ │ │ │ │ +573 _I_n_d_e_x_A_r_r_a_y getPatchArrayVertices(int arrayIndex); │ │ │ │ │ +574 │ │ │ │ │ +575 _I_n_d_e_x findPatchArray(PatchDescriptor desc); │ │ │ │ │ +576 │ │ │ │ │ +577 │ │ │ │ │ +578 // │ │ │ │ │ +579 // Varying patch arrays │ │ │ │ │ +580 // │ │ │ │ │ +581 _I_n_d_e_x_A_r_r_a_y getPatchArrayVaryingVertices(int arrayIndex); │ │ │ │ │ +582 │ │ │ │ │ +583 void allocateVaryingVertices( │ │ │ │ │ +584 PatchDescriptor desc, int numPatches); │ │ │ │ │ +585 void populateVaryingVertices(); │ │ │ │ │ +586 │ │ │ │ │ +587 // │ │ │ │ │ +588 // Face-varying patch channels │ │ │ │ │ +589 // │ │ │ │ │ +590 │ │ │ │ │ +591 // │ │ │ │ │ +592 // FVarPatchChannel │ │ │ │ │ +593 // │ │ │ │ │ +594 // Stores a record for each patch in the primitive : │ │ │ │ │ +595 // │ │ │ │ │ +596 // - Each patch in the PatchTable has a corresponding patch in each │ │ │ │ │ +597 // face-varying patch channel. Patch vertex indices are sorted in the same │ │ │ │ │ +598 // patch-type order as PatchTable::PTables. Face-varying data for a patch │ │ │ │ │ +599 // can therefore be quickly accessed by using the patch primitive ID as │ │ │ │ │ +600 // index into patchValueOffsets to locate the face-varying control vertex │ │ │ │ │ +601 // indices. │ │ │ │ │ +602 // │ │ │ │ │ +603 // - Face-varying channels can have a different interpolation modes │ │ │ │ │ +604 // │ │ │ │ │ +605 // - Unlike "vertex" patches, there are no transition masks required │ │ │ │ │ +606 // for face-varying patches. │ │ │ │ │ +607 // │ │ │ │ │ +608 // - Face-varying patches still require boundary edge masks. │ │ │ │ │ +609 // │ │ │ │ │ +610 // - currently most patches with sharp boundaries but smooth interiors have │ │ │ │ │ +611 // to be isolated to level 10 : we need a special type of bicubic patch │ │ │ │ │ +612 // similar to single-crease to resolve this condition without requiring │ │ │ │ │ +613 // isolation if possible │ │ │ │ │ +614 // │ │ │ │ │ +615 struct FVarPatchChannel { │ │ │ │ │ +616 _S_d_c_:_:_O_p_t_i_o_n_s_:_:_F_V_a_r_L_i_n_e_a_r_I_n_t_e_r_p_o_l_a_t_i_o_n interpolation; │ │ │ │ │ +617 │ │ │ │ │ +618 PatchDescriptor regDesc; │ │ │ │ │ +619 PatchDescriptor irregDesc; │ │ │ │ │ +620 │ │ │ │ │ +621 int stride; │ │ │ │ │ +622 │ │ │ │ │ +623 std::vector patchValues; │ │ │ │ │ +624 std::vector patchParam; │ │ │ │ │ +625 }; │ │ │ │ │ +626 typedef std::vector FVarPatchChannelVector; │ │ │ │ │ +627 │ │ │ │ │ +628 FVarPatchChannel & getFVarPatchChannel(int channel); │ │ │ │ │ +629 FVarPatchChannel const & getFVarPatchChannel(int channel) const; │ │ │ │ │ +630 │ │ │ │ │ +631 void allocateFVarPatchChannels(int numChannels); │ │ │ │ │ +632 void allocateFVarPatchChannelValues( │ │ │ │ │ +633 PatchDescriptor regDesc, PatchDescriptor irregDesc, │ │ │ │ │ +634 int numPatches, int channel); │ │ │ │ │ +635 │ │ │ │ │ +636 // deprecated │ │ │ │ │ +637 void setFVarPatchChannelLinearInterpolation( │ │ │ │ │ +638 _S_d_c_:_:_O_p_t_i_o_n_s_:_:_F_V_a_r_L_i_n_e_a_r_I_n_t_e_r_p_o_l_a_t_i_o_n interpolation, int channel); │ │ │ │ │ +639 │ │ │ │ │ +640 _I_n_d_e_x_A_r_r_a_y getFVarValues(int channel); │ │ │ │ │ +641 _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y getPatchFVarValues(int patch, int channel) const; │ │ │ │ │ +642 │ │ │ │ │ +643 _P_a_t_c_h_P_a_r_a_m_A_r_r_a_y getFVarPatchParams(int channel); │ │ │ │ │ +644 PatchParam getPatchFVarPatchParam(int patch, int channel) const; │ │ │ │ │ +645 │ │ │ │ │ +646private: │ │ │ │ │ +647 // │ │ │ │ │ +648 // Simple private class to hold stencil table pointers of varying │ │ │ │ │ +precision, │ │ │ │ │ +649 // where the discriminant of the precision is external. │ │ │ │ │ +650 // │ │ │ │ │ +651 // NOTE that this is a simple pointer container and NOT a smart pointer │ │ │ │ │ +that │ │ │ │ │ +652 // manages the ownership of the object referred to by it. │ │ │ │ │ +653 // │ │ │ │ │ +654 class StencilTablePtr { │ │ │ │ │ +655 private: │ │ │ │ │ +656 typedef StencilTableReal float_type; │ │ │ │ │ +657 typedef StencilTableReal double_type; │ │ │ │ │ +658 │ │ │ │ │ +659 union { │ │ │ │ │ +660 float_type * _fPtr; │ │ │ │ │ +661 double_type * _dPtr; │ │ │ │ │ +662 }; │ │ │ │ │ +663 │ │ │ │ │ +664 public: │ │ │ │ │ +665 StencilTablePtr() { _fPtr = 0; } │ │ │ │ │ +666 StencilTablePtr(float_type * ptr) { _fPtr = ptr; } │ │ │ │ │ +667 StencilTablePtr(double_type * ptr) { _dPtr = ptr; } │ │ │ │ │ +668 │ │ │ │ │ +669 operator bool() const { return _fPtr != 0; } │ │ │ │ │ +670 │ │ │ │ │ +671 void Set() { _fPtr = 0; } │ │ │ │ │ +672 void Set(float_type * ptr) { _fPtr = ptr; } │ │ │ │ │ +673 void Set(double_type * ptr) { _dPtr = ptr; } │ │ │ │ │ +674 │ │ │ │ │ +675 template StencilTableReal * Get() const; │ │ │ │ │ +676 }; │ │ │ │ │ +677 │ │ │ │ │ +678private: │ │ │ │ │ +679 │ │ │ │ │ +680 // │ │ │ │ │ +681 // Topology │ │ │ │ │ +682 // │ │ │ │ │ +683 │ │ │ │ │ +684 int _maxValence, // highest vertex valence found in the mesh │ │ │ │ │ +685 _numPtexFaces; // total number of ptex faces │ │ │ │ │ +686 │ │ │ │ │ +687 _P_a_t_c_h_A_r_r_a_y_V_e_c_t_o_r _patchArrays; // Vector of descriptors for arrays of │ │ │ │ │ +patches │ │ │ │ │ +688 │ │ │ │ │ +689 std::vector _patchVerts; // Indices of the control vertices of the │ │ │ │ │ +patches │ │ │ │ │ +690 │ │ │ │ │ +691 _P_a_t_c_h_P_a_r_a_m_T_a_b_l_e _paramTable; // PatchParam bitfields (one per patch) │ │ │ │ │ +692 │ │ │ │ │ +693 // │ │ │ │ │ +694 // Extraordinary vertex closed-form evaluation / endcap basis conversion │ │ │ │ │ +695 // │ │ │ │ │ +696 // XXXtakahito: these data will probably be replaced with mask coefficient │ │ │ │ │ +or something │ │ │ │ │ +697 // SchemeWorker populates. │ │ │ │ │ +698 // │ │ │ │ │ +699 _Q_u_a_d_O_f_f_s_e_t_s_T_a_b_l_e _quadOffsetsTable; // Quad offsets (for Gregory patches) │ │ │ │ │ +700 _V_e_r_t_e_x_V_a_l_e_n_c_e_T_a_b_l_e _vertexValenceTable; // Vertex valence table (for │ │ │ │ │ +Gregory patches) │ │ │ │ │ +701 │ │ │ │ │ +702 StencilTablePtr _localPointStencils; // local point conversion stencils │ │ │ │ │ +703 StencilTablePtr _localPointVaryingStencils; // local point varying stencils │ │ │ │ │ +704 │ │ │ │ │ +705 // │ │ │ │ │ +706 // Varying data │ │ │ │ │ +707 // │ │ │ │ │ +708 PatchDescriptor _varyingDesc; │ │ │ │ │ +709 │ │ │ │ │ +710 std::vector _varyingVerts; │ │ │ │ │ +711 │ │ │ │ │ +712 // │ │ │ │ │ +713 // Face-varying data │ │ │ │ │ +714 // │ │ │ │ │ +715 FVarPatchChannelVector _fvarChannels; │ │ │ │ │ +716 │ │ │ │ │ +717 std::vector _localPointFaceVaryingStencils; │ │ │ │ │ +718 │ │ │ │ │ +719 // │ │ │ │ │ +720 // 'single-crease' patch sharpness tables │ │ │ │ │ +721 // │ │ │ │ │ +722 std::vector _sharpnessIndices; // Indices of single-crease sharpness │ │ │ │ │ +(one per patch) │ │ │ │ │ +723 std::vector _sharpnessValues; // Sharpness values. │ │ │ │ │ +724 │ │ │ │ │ +725 // │ │ │ │ │ +726 // Construction history -- relevant to at least one public query: │ │ │ │ │ +727 // │ │ │ │ │ +728 unsigned int _isUniformLinear : 1; │ │ │ │ │ +729 │ │ │ │ │ +730 // │ │ │ │ │ +731 // Precision -- only applies to local-point stencil tables │ │ │ │ │ +732 // │ │ │ │ │ +733 unsigned int _vertexPrecisionIsDouble : 1; │ │ │ │ │ +734 unsigned int _varyingPrecisionIsDouble : 1; │ │ │ │ │ +735 unsigned int _faceVaryingPrecisionIsDouble : 1; │ │ │ │ │ +736}; │ │ │ │ │ +737 │ │ │ │ │ +738 │ │ │ │ │ +739// │ │ │ │ │ +740// Template specializations for float/double -- to be defined before used: │ │ │ │ │ +741// │ │ │ │ │ +742template <> inline StencilTableReal * │ │ │ │ │ +743PatchTable::StencilTablePtr::Get() const { return _fPtr; } │ │ │ │ │ +744 │ │ │ │ │ +745template <> inline StencilTableReal * │ │ │ │ │ +746PatchTable::StencilTablePtr::Get() const { return _dPtr; } │ │ │ │ │ +747 │ │ │ │ │ +_7_4_8template <> inline bool │ │ │ │ │ +749PatchTable::LocalPointStencilPrecisionMatchesType() const { │ │ │ │ │ +750 return !_vertexPrecisionIsDouble; │ │ │ │ │ +751} │ │ │ │ │ +_7_5_2template <> inline bool │ │ │ │ │ +753PatchTable::LocalPointVaryingStencilPrecisionMatchesType() const { │ │ │ │ │ +754 return !_varyingPrecisionIsDouble; │ │ │ │ │ +755} │ │ │ │ │ +_7_5_6template <> inline bool │ │ │ │ │ +757PatchTable::LocalPointFaceVaryingStencilPrecisionMatchesType() const │ │ │ │ │ +{ │ │ │ │ │ +758 return !_faceVaryingPrecisionIsDouble; │ │ │ │ │ +759} │ │ │ │ │ +760 │ │ │ │ │ +_7_6_1template <> inline bool │ │ │ │ │ +762PatchTable::LocalPointStencilPrecisionMatchesType() const { │ │ │ │ │ +763 return _vertexPrecisionIsDouble; │ │ │ │ │ +764} │ │ │ │ │ +_7_6_5template <> inline bool │ │ │ │ │ +766PatchTable::LocalPointVaryingStencilPrecisionMatchesType() const { │ │ │ │ │ +767 return _varyingPrecisionIsDouble; │ │ │ │ │ +768} │ │ │ │ │ +_7_6_9template <> inline bool │ │ │ │ │ +770PatchTable::LocalPointFaceVaryingStencilPrecisionMatchesType() const │ │ │ │ │ +{ │ │ │ │ │ +771 return _faceVaryingPrecisionIsDouble; │ │ │ │ │ +772} │ │ │ │ │ +773 │ │ │ │ │ +774// │ │ │ │ │ +775// StencilTable access -- backward compatible and generic: │ │ │ │ │ +776// │ │ │ │ │ +777inline _S_t_e_n_c_i_l_T_a_b_l_e const * │ │ │ │ │ +_7_7_8_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_L_o_c_a_l_P_o_i_n_t_S_t_e_n_c_i_l_T_a_b_l_e() const { │ │ │ │ │ +779 assert(LocalPointStencilPrecisionMatchesType()); │ │ │ │ │ +780 return static_cast<_S_t_e_n_c_i_l_T_a_b_l_e const *>(_localPointStencils.Get()); │ │ │ │ │ +781} │ │ │ │ │ +782inline _S_t_e_n_c_i_l_T_a_b_l_e const * │ │ │ │ │ +_7_8_3_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_L_o_c_a_l_P_o_i_n_t_V_a_r_y_i_n_g_S_t_e_n_c_i_l_T_a_b_l_e() const { │ │ │ │ │ +784 assert(LocalPointVaryingStencilPrecisionMatchesType()); │ │ │ │ │ +785 return static_cast<_S_t_e_n_c_i_l_T_a_b_l_e const *>( │ │ │ │ │ +786 _localPointVaryingStencils.Get()); │ │ │ │ │ +787} │ │ │ │ │ +788inline _S_t_e_n_c_i_l_T_a_b_l_e const * │ │ │ │ │ +_7_8_9_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_L_o_c_a_l_P_o_i_n_t_F_a_c_e_V_a_r_y_i_n_g_S_t_e_n_c_i_l_T_a_b_l_e(int channel) const { │ │ │ │ │ +790 assert(LocalPointFaceVaryingStencilPrecisionMatchesType()); │ │ │ │ │ +791 if (channel >= 0 && channel < (int)_localPointFaceVaryingStencils.size()) { │ │ │ │ │ +792 return static_cast<_S_t_e_n_c_i_l_T_a_b_l_e const *>( │ │ │ │ │ +793 _localPointFaceVaryingStencils[channel].Get()); │ │ │ │ │ +794 } │ │ │ │ │ +795 return NULL; │ │ │ │ │ +796} │ │ │ │ │ +797 │ │ │ │ │ +798template │ │ │ │ │ +799inline _S_t_e_n_c_i_l_T_a_b_l_e_R_e_a_l_<_R_E_A_L_> const * │ │ │ │ │ +_8_0_0_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_L_o_c_a_l_P_o_i_n_t_S_t_e_n_c_i_l_T_a_b_l_e() const { │ │ │ │ │ +801 assert(LocalPointStencilPrecisionMatchesType()); │ │ │ │ │ +802 return _localPointStencils.Get(); │ │ │ │ │ +803} │ │ │ │ │ +804template │ │ │ │ │ +805inline _S_t_e_n_c_i_l_T_a_b_l_e_R_e_a_l_<_R_E_A_L_> const * │ │ │ │ │ +_8_0_6_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_L_o_c_a_l_P_o_i_n_t_V_a_r_y_i_n_g_S_t_e_n_c_i_l_T_a_b_l_e() const { │ │ │ │ │ +807 assert(LocalPointVaryingStencilPrecisionMatchesType()); │ │ │ │ │ +808 return _localPointVaryingStencils.Get(); │ │ │ │ │ +809} │ │ │ │ │ +810template │ │ │ │ │ +811inline _S_t_e_n_c_i_l_T_a_b_l_e_R_e_a_l_<_R_E_A_L_> const * │ │ │ │ │ +_8_1_2_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_L_o_c_a_l_P_o_i_n_t_F_a_c_e_V_a_r_y_i_n_g_S_t_e_n_c_i_l_T_a_b_l_e(int channel) const { │ │ │ │ │ +813 assert(LocalPointFaceVaryingStencilPrecisionMatchesType()); │ │ │ │ │ +814 if (channel >= 0 && channel < (int)_localPointFaceVaryingStencils.size()) { │ │ │ │ │ +815 return _localPointFaceVaryingStencils[channel].Get(); │ │ │ │ │ +816 } │ │ │ │ │ +817 return NULL; │ │ │ │ │ +818} │ │ │ │ │ +819 │ │ │ │ │ +820 │ │ │ │ │ +821// │ │ │ │ │ +822// Computation of local point values: │ │ │ │ │ +823// │ │ │ │ │ +824template │ │ │ │ │ +825inline void │ │ │ │ │ +_8_2_6_P_a_t_c_h_T_a_b_l_e_:_:_C_o_m_p_u_t_e_L_o_c_a_l_P_o_i_n_t_V_a_l_u_e_s(T const *src, T *dst) const { │ │ │ │ │ +827 assert(LocalPointStencilPrecisionMatchesType()); │ │ │ │ │ +828 if (_localPointStencils) { │ │ │ │ │ +829 _localPointStencils.Get()->UpdateValues(src, dst); │ │ │ │ │ +830 } │ │ │ │ │ +831} │ │ │ │ │ +832 │ │ │ │ │ +833template │ │ │ │ │ +834inline void │ │ │ │ │ +_8_3_5_P_a_t_c_h_T_a_b_l_e_:_:_C_o_m_p_u_t_e_L_o_c_a_l_P_o_i_n_t_V_a_l_u_e_s_V_a_r_y_i_n_g(T const *src, T *dst) const { │ │ │ │ │ +836 assert(LocalPointVaryingStencilPrecisionMatchesType()); │ │ │ │ │ +837 if (_localPointVaryingStencils) { │ │ │ │ │ +838 _localPointVaryingStencils.Get()->UpdateValues(src, dst); │ │ │ │ │ +839 } │ │ │ │ │ +840} │ │ │ │ │ +841 │ │ │ │ │ +842template │ │ │ │ │ +843inline void │ │ │ │ │ +_8_4_4_P_a_t_c_h_T_a_b_l_e_:_:_C_o_m_p_u_t_e_L_o_c_a_l_P_o_i_n_t_V_a_l_u_e_s_F_a_c_e_V_a_r_y_i_n_g(T const *src, T *dst, int │ │ │ │ │ +channel) const { │ │ │ │ │ +845 assert(LocalPointFaceVaryingStencilPrecisionMatchesType()); │ │ │ │ │ +846 if (channel >= 0 && channel < (int)_localPointFaceVaryingStencils.size()) { │ │ │ │ │ +847 if (_localPointFaceVaryingStencils[channel]) { │ │ │ │ │ +848 _localPointFaceVaryingStencils[channel].Get()->UpdateValues(src, │ │ │ │ │ +dst); │ │ │ │ │ +849 } │ │ │ │ │ +850 } │ │ │ │ │ +851} │ │ │ │ │ +852 │ │ │ │ │ +853 │ │ │ │ │ +854// │ │ │ │ │ +855// Basis evaluation overloads │ │ │ │ │ +856// │ │ │ │ │ +857inline void │ │ │ │ │ +_8_5_8_P_a_t_c_h_T_a_b_l_e_:_:_E_v_a_l_u_a_t_e_B_a_s_i_s(_P_a_t_c_h_H_a_n_d_l_e const & handle, float u, float v, │ │ │ │ │ +859 float wP[], float wDu[], float wDv[], │ │ │ │ │ +860 float wDuu[], float wDuv[], float wDvv[]) const { │ │ │ │ │ +861 │ │ │ │ │ +862 EvaluateBasis(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv); │ │ │ │ │ +863} │ │ │ │ │ +864inline void │ │ │ │ │ +_8_6_5_P_a_t_c_h_T_a_b_l_e_:_:_E_v_a_l_u_a_t_e_B_a_s_i_s(_P_a_t_c_h_H_a_n_d_l_e const & handle, double u, double v, │ │ │ │ │ +866 double wP[], double wDu[], double wDv[], │ │ │ │ │ +867 double wDuu[], double wDuv[], double wDvv[]) const { │ │ │ │ │ +868 │ │ │ │ │ +869 EvaluateBasis(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv); │ │ │ │ │ +870} │ │ │ │ │ +871 │ │ │ │ │ +872inline void │ │ │ │ │ +_8_7_3_P_a_t_c_h_T_a_b_l_e_:_:_E_v_a_l_u_a_t_e_B_a_s_i_s_V_a_r_y_i_n_g(_P_a_t_c_h_H_a_n_d_l_e const & handle, float u, float │ │ │ │ │ +v, │ │ │ │ │ +874 float wP[], float wDu[], float wDv[], │ │ │ │ │ +875 float wDuu[], float wDuv[], float wDvv[]) const { │ │ │ │ │ +876 │ │ │ │ │ +877 EvaluateBasisVarying(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv); │ │ │ │ │ +878} │ │ │ │ │ +879inline void │ │ │ │ │ +_8_8_0_P_a_t_c_h_T_a_b_l_e_:_:_E_v_a_l_u_a_t_e_B_a_s_i_s_V_a_r_y_i_n_g(_P_a_t_c_h_H_a_n_d_l_e const & handle, double u, │ │ │ │ │ +double v, │ │ │ │ │ +881 double wP[], double wDu[], double wDv[], │ │ │ │ │ +882 double wDuu[], double wDuv[], double wDvv[]) const { │ │ │ │ │ +883 │ │ │ │ │ +884 EvaluateBasisVarying(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv); │ │ │ │ │ +885} │ │ │ │ │ +886 │ │ │ │ │ +887inline void │ │ │ │ │ +_8_8_8_P_a_t_c_h_T_a_b_l_e_:_:_E_v_a_l_u_a_t_e_B_a_s_i_s_F_a_c_e_V_a_r_y_i_n_g(_P_a_t_c_h_H_a_n_d_l_e const & handle, float u, │ │ │ │ │ +float v, │ │ │ │ │ +889 float wP[], float wDu[], float wDv[], │ │ │ │ │ +890 float wDuu[], float wDuv[], float wDvv[], int channel) const { │ │ │ │ │ +891 │ │ │ │ │ +892 EvaluateBasisFaceVarying(handle, u, v, wP, wDu, wDv, wDuu, wDuv, │ │ │ │ │ +wDvv, channel); │ │ │ │ │ +893} │ │ │ │ │ +894inline void │ │ │ │ │ +_8_9_5_P_a_t_c_h_T_a_b_l_e_:_:_E_v_a_l_u_a_t_e_B_a_s_i_s_F_a_c_e_V_a_r_y_i_n_g(_P_a_t_c_h_H_a_n_d_l_e const & handle, double u, │ │ │ │ │ +double v, │ │ │ │ │ +896 double wP[], double wDu[], double wDv[], │ │ │ │ │ +897 double wDuu[], double wDuv[], double wDvv[], int channel) const { │ │ │ │ │ +898 │ │ │ │ │ +899 EvaluateBasisFaceVarying(handle, u, v, wP, wDu, wDv, wDuu, wDuv, │ │ │ │ │ +wDvv, channel); │ │ │ │ │ +900} │ │ │ │ │ +901 │ │ │ │ │ +902} // end namespace Far │ │ │ │ │ +903 │ │ │ │ │ +904} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ +905using namespace OPENSUBDIV_VERSION; │ │ │ │ │ +906 │ │ │ │ │ +907} // end namespace OpenSubdiv │ │ │ │ │ +908 │ │ │ │ │ +909#endif /* OPENSUBDIV3_FAR_PATCH_TABLE */ │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v │ │ │ │ │ DDeeffiinniittiioonn _l_i_m_i_t_s_._h_:_3_2 │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_C_o_n_s_t_I_n_d_e_x_A_r_r_a_y │ │ │ │ │ Vtr::ConstIndexArray ConstIndexArray │ │ │ │ │ DDeeffiinniittiioonn _t_y_p_e_s_._h_:_4_7 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_P_a_r_a_m_T_a_b_l_e │ │ │ │ │ +std::vector< PatchParam > PatchParamTable │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_P_a_r_a_m_._h_:_2_4_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_I_n_d_e_x_A_r_r_a_y │ │ │ │ │ +Vtr::IndexArray IndexArray │ │ │ │ │ +DDeeffiinniittiioonn _t_y_p_e_s_._h_:_4_4 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_I_n_d_e_x │ │ │ │ │ +Vtr::Index Index │ │ │ │ │ +DDeeffiinniittiioonn _t_y_p_e_s_._h_:_4_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_P_a_r_a_m_A_r_r_a_y │ │ │ │ │ +Vtr::Array< PatchParam > PatchParamArray │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_P_a_r_a_m_._h_:_2_4_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_P_a_t_c_h_A_r_r_a_y_V_e_c_t_o_r │ │ │ │ │ +std::vector< PatchArray > PatchArrayVector │ │ │ │ │ +DDeeffiinniittiioonn _t_y_p_e_s_._h_:_1_3_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ +Describes the type of a patch. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_D_e_s_c_r_i_p_t_o_r_._h_:_4_4 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_M_a_p │ │ │ │ │ +An quadtree-based map connecting coarse faces to their sub-patches. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_M_a_p_._h_:_4_9 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_P_a_r_a_m │ │ │ │ │ +Patch parameterization. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_P_a_r_a_m_._h_:_1_5_2 │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ Container for arrays of parametric patches. │ │ │ │ │ DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_5_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y │ │ │ │ │ -Factory for constructing a PatchTable from a TopologyRefiner. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_4_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_P_a_t_c_h_T_a_g_V_e_c_t_o_r │ │ │ │ │ -std::vector< PatchFaceTag > PatchTagVector │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_2_0_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_C_r_e_a_t_e │ │ │ │ │ -static PatchTable * Create(TopologyRefiner const &refiner, Options │ │ │ │ │ -options=Options(), ConstIndexArray selectedFaces=ConstIndexArray()) │ │ │ │ │ -Instantiates a PatchTable from a client-provided TopologyRefiner. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s │ │ │ │ │ -Public options for the PatchTable factory. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_4_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ -_g_e_n_e_r_a_t_e_V_a_r_y_i_n_g_T_a_b_l_e_s │ │ │ │ │ -unsigned int generateVaryingTables │ │ │ │ │ -Generate varying patch tables. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_2_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ -_g_e_n_e_r_a_t_e_L_e_g_a_c_y_S_h_a_r_p_C_o_r_n_e_r_P_a_t_c_h_e_s │ │ │ │ │ -unsigned int generateLegacySharpCornerPatches │ │ │ │ │ -Generate sharp regular patches at smooth corners (legacy) │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_3_7 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ -_s_h_a_r_e_E_n_d_C_a_p_P_a_t_c_h_P_o_i_n_t_s │ │ │ │ │ -unsigned int shareEndCapPatchPoints │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_2_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ -_G_e_t_R_e_f_i_n_e_A_d_a_p_t_i_v_e_O_p_t_i_o_n_s │ │ │ │ │ -TopologyRefiner::AdaptiveOptions GetRefineAdaptiveOptions() const │ │ │ │ │ -Determine adaptive refinement options to match assigned patch options. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_0_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ -_m_a_x_I_s_o_l_a_t_i_o_n_L_e_v_e_l │ │ │ │ │ -unsigned int maxIsolationLevel │ │ │ │ │ -Cap adaptive feature isolation to the given level (max. 10) │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_1_7 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_:_G_e_t_E_n_d_C_a_p_T_y_p_e │ │ │ │ │ -EndCapType GetEndCapType() const │ │ │ │ │ -Get endcap basis type. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_8_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ -_g_e_n_e_r_a_t_e_F_V_a_r_L_e_g_a_c_y_L_i_n_e_a_r_P_a_t_c_h_e_s │ │ │ │ │ -unsigned int generateFVarLegacyLinearPatches │ │ │ │ │ -Generate all linear face-varying patches (legacy) │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_3_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ -_S_e_t_P_a_t_c_h_P_r_e_c_i_s_i_o_n │ │ │ │ │ -void SetPatchPrecision() │ │ │ │ │ -Set precision of vertex patches. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ -_f_v_a_r_P_a_t_c_h_P_r_e_c_i_s_i_o_n_D_o_u_b_l_e │ │ │ │ │ -unsigned int fvarPatchPrecisionDouble │ │ │ │ │ -Generate double-precision stencils for face-varying patches. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_3_3 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ -_S_e_t_M_a_x_I_s_o_l_a_t_i_o_n_L_e_v_e_l │ │ │ │ │ -void SetMaxIsolationLevel(unsigned int level) │ │ │ │ │ -Set maximum isolation level. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_9_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_:_e_n_d_C_a_p_T_y_p_e │ │ │ │ │ -unsigned int endCapType │ │ │ │ │ -EndCapType. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_2_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ -_f_v_a_r_C_h_a_n_n_e_l_I_n_d_i_c_e_s │ │ │ │ │ -int const * fvarChannelIndices │ │ │ │ │ -List containing the indices of the channels selected for the factory. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_4_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ -_u_s_e_S_i_n_g_l_e_C_r_e_a_s_e_P_a_t_c_h │ │ │ │ │ -unsigned int useSingleCreasePatch │ │ │ │ │ -Use single crease patch. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_1_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ -_u_s_e_I_n_f_S_h_a_r_p_P_a_t_c_h │ │ │ │ │ -unsigned int useInfSharpPatch │ │ │ │ │ -Use infinitely-sharp patch. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_1_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_:_S_e_t_E_n_d_C_a_p_T_y_p_e │ │ │ │ │ -void SetEndCapType(EndCapType e) │ │ │ │ │ -Set endcap basis type. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_8_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ -_g_e_n_e_r_a_t_e_V_a_r_y_i_n_g_L_o_c_a_l_P_o_i_n_t_s │ │ │ │ │ -unsigned int generateVaryingLocalPoints │ │ │ │ │ -Generate local points with varying patches. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_2_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ -_i_n_c_l_u_d_e_F_V_a_r_B_a_s_e_L_e_v_e_l_I_n_d_i_c_e_s │ │ │ │ │ -unsigned int includeFVarBaseLevelIndices │ │ │ │ │ -Include base level in face-varying patch point indices (Uniform mode only) │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_1_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ -_g_e_n_e_r_a_t_e_A_l_l_L_e_v_e_l_s │ │ │ │ │ -unsigned int generateAllLevels │ │ │ │ │ -Generate levels from 'firstLevel' to 'maxLevel' (Uniform mode only) │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_1_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ -_p_a_t_c_h_P_r_e_c_i_s_i_o_n_D_o_u_b_l_e │ │ │ │ │ -unsigned int patchPrecisionDouble │ │ │ │ │ -Generate double-precision stencils for vertex patches. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_3_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ -_g_e_n_e_r_a_t_e_F_V_a_r_T_a_b_l_e_s │ │ │ │ │ -unsigned int generateFVarTables │ │ │ │ │ -Generate face-varying patch tables. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_2_9 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ -_i_n_c_l_u_d_e_B_a_s_e_L_e_v_e_l_I_n_d_i_c_e_s │ │ │ │ │ -unsigned int includeBaseLevelIndices │ │ │ │ │ -Include base level in patch point indices (Uniform mode only) │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_1_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ -_S_e_t_F_V_a_r_P_a_t_c_h_P_r_e_c_i_s_i_o_n │ │ │ │ │ -void SetFVarPatchPrecision() │ │ │ │ │ -Set precision of face-varying patches. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ -_n_u_m_F_V_a_r_C_h_a_n_n_e_l_s │ │ │ │ │ -int numFVarChannels │ │ │ │ │ -Number of channel indices and interpolation modes passed. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_3_9 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ -_t_r_i_a_n_g_u_l_a_t_e_Q_u_a_d_s │ │ │ │ │ -unsigned int triangulateQuads │ │ │ │ │ -Triangulate 'QUADS' primitives (Uniform mode only) │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_1_3 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_:_E_n_d_C_a_p_T_y_p_e │ │ │ │ │ -EndCapType │ │ │ │ │ -Choice for approximating irregular patches (end-caps) │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_5_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ -_E_N_D_C_A_P___L_E_G_A_C_Y___G_R_E_G_O_R_Y │ │ │ │ │ -@ ENDCAP_LEGACY_GREGORY │ │ │ │ │ -legacy option for 2.x style Gregory patches (Catmark only) │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_6_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ -_E_N_D_C_A_P___G_R_E_G_O_R_Y___B_A_S_I_S │ │ │ │ │ -@ ENDCAP_GREGORY_BASIS │ │ │ │ │ -use Gregory patches (highest quality, recommended default) │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_5_9 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_:_E_N_D_C_A_P___N_O_N_E │ │ │ │ │ -@ ENDCAP_NONE │ │ │ │ │ -unspecified │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_5_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ -_E_N_D_C_A_P___B_I_L_I_N_E_A_R___B_A_S_I_S │ │ │ │ │ -@ ENDCAP_BILINEAR_BASIS │ │ │ │ │ -use linear patches (simple quads or tris) │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_5_7 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ -_E_N_D_C_A_P___B_S_P_L_I_N_E___B_A_S_I_S │ │ │ │ │ -@ ENDCAP_BSPLINE_BASIS │ │ │ │ │ -use BSpline-like patches (same patch type as regular) │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_5_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_:_O_p_t_i_o_n_s │ │ │ │ │ -Options(unsigned int maxIsolation=10) │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_6_3 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_P_a_t_c_h_F_a_c_e_T_a_g │ │ │ │ │ -Obsolete internal struct not intended for public use – due to be deprecated. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_9_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_P_a_t_c_h_F_a_c_e_T_a_g_:_: │ │ │ │ │ -___i_s_S_i_n_g_l_e_C_r_e_a_s_e │ │ │ │ │ -unsigned int _isSingleCrease │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_2_0_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_P_a_t_c_h_F_a_c_e_T_a_g_:_: │ │ │ │ │ -___i_s_R_e_g_u_l_a_r │ │ │ │ │ -unsigned int _isRegular │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_9_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_P_a_t_c_h_F_a_c_e_T_a_g_:_: │ │ │ │ │ -___b_o_u_n_d_a_r_y_I_n_d_e_x │ │ │ │ │ -unsigned int _boundaryIndex │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_9_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_P_a_t_c_h_F_a_c_e_T_a_g_:_: │ │ │ │ │ -_a_s_s_i_g_n_B_o_u_n_d_a_r_y_P_r_o_p_e_r_t_i_e_s_F_r_o_m_V_e_r_t_e_x_M_a_s_k │ │ │ │ │ -void assignBoundaryPropertiesFromVertexMask(int boundaryVertexMask) │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_P_a_t_c_h_F_a_c_e_T_a_g_:_: │ │ │ │ │ -___t_r_a_n_s_i_t_i_o_n_M_a_s_k │ │ │ │ │ -unsigned int _transitionMask │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_9_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_P_a_t_c_h_F_a_c_e_T_a_g_:_: │ │ │ │ │ -___h_a_s_B_o_u_n_d_a_r_y_E_d_g_e │ │ │ │ │ -unsigned int _hasBoundaryEdge │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_2_0_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_P_a_t_c_h_F_a_c_e_T_a_g_:_: │ │ │ │ │ -___b_o_u_n_d_a_r_y_M_a_s_k │ │ │ │ │ -unsigned int _boundaryMask │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_9_7 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_P_a_t_c_h_F_a_c_e_T_a_g_:_:___h_a_s_P_a_t_c_h │ │ │ │ │ -unsigned int _hasPatch │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_9_4 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_P_a_t_c_h_F_a_c_e_T_a_g_:_: │ │ │ │ │ -_a_s_s_i_g_n_T_r_a_n_s_i_t_i_o_n_P_r_o_p_e_r_t_i_e_s_F_r_o_m_E_d_g_e_M_a_s_k │ │ │ │ │ -void assignTransitionPropertiesFromEdgeMask(int boundaryVertexMask) │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_P_a_t_c_h_F_a_c_e_T_a_g_:_:_c_l_e_a_r │ │ │ │ │ -void clear() │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_P_a_t_c_h_F_a_c_e_T_a_g_:_: │ │ │ │ │ -_a_s_s_i_g_n_B_o_u_n_d_a_r_y_P_r_o_p_e_r_t_i_e_s_F_r_o_m_E_d_g_e_M_a_s_k │ │ │ │ │ -void assignBoundaryPropertiesFromEdgeMask(int boundaryEdgeMask) │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_P_a_t_c_h_F_a_c_e_T_a_g_:_: │ │ │ │ │ -___b_o_u_n_d_a_r_y_C_o_u_n_t │ │ │ │ │ -unsigned int _boundaryCount │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_9_9 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_T_o_p_o_l_o_g_y_R_e_f_i_n_e_r │ │ │ │ │ -Stores topology data for a specified set of refinement options. │ │ │ │ │ -DDeeffiinniittiioonn _t_o_p_o_l_o_g_y_R_e_f_i_n_e_r_._h_:_5_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_T_o_p_o_l_o_g_y_R_e_f_i_n_e_r_:_:_A_d_a_p_t_i_v_e_O_p_t_i_o_n_s │ │ │ │ │ -Adaptive refinement options. │ │ │ │ │ -DDeeffiinniittiioonn _t_o_p_o_l_o_g_y_R_e_f_i_n_e_r_._h_:_1_5_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_T_o_p_o_l_o_g_y_R_e_f_i_n_e_r_:_:_A_d_a_p_t_i_v_e_O_p_t_i_o_n_s_:_: │ │ │ │ │ -_u_s_e_S_i_n_g_l_e_C_r_e_a_s_e_P_a_t_c_h │ │ │ │ │ -unsigned int useSingleCreasePatch │ │ │ │ │ -DDeeffiinniittiioonn _t_o_p_o_l_o_g_y_R_e_f_i_n_e_r_._h_:_1_7_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_T_o_p_o_l_o_g_y_R_e_f_i_n_e_r_:_:_A_d_a_p_t_i_v_e_O_p_t_i_o_n_s_:_: │ │ │ │ │ -_u_s_e_I_n_f_S_h_a_r_p_P_a_t_c_h │ │ │ │ │ -unsigned int useInfSharpPatch │ │ │ │ │ -DDeeffiinniittiioonn _t_o_p_o_l_o_g_y_R_e_f_i_n_e_r_._h_:_1_7_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_T_o_p_o_l_o_g_y_R_e_f_i_n_e_r_:_:_A_d_a_p_t_i_v_e_O_p_t_i_o_n_s_:_: │ │ │ │ │ -_c_o_n_s_i_d_e_r_F_V_a_r_C_h_a_n_n_e_l_s │ │ │ │ │ -unsigned int considerFVarChannels │ │ │ │ │ -DDeeffiinniittiioonn _t_o_p_o_l_o_g_y_R_e_f_i_n_e_r_._h_:_1_8_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_A_r_r_a_y_V_a_r_y_i_n_g_V_e_r_t_i_c_e_s │ │ │ │ │ +ConstIndexArray GetPatchArrayVaryingVertices(int array) const │ │ │ │ │ +Returns the varying vertex indices for the patches in array. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_g_e_t_S_h_a_r_p_n_e_s_s_V_a_l_u_e_s │ │ │ │ │ +float * getSharpnessValues(Index arrayIndex) │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_C_o_n_t_r_o_l_V_e_r_t_i_c_e_s_T_a_b_l_e │ │ │ │ │ +PatchVertsTable const & GetPatchControlVerticesTable() const │ │ │ │ │ +Get the table of patch control vertices. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_3_7_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ +_C_o_m_p_u_t_e_L_o_c_a_l_P_o_i_n_t_V_a_l_u_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ +void ComputeLocalPointValuesFaceVarying(T const *src, T *dst, int channel=0) │ │ │ │ │ +const │ │ │ │ │ +Updates local point face-varying values. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_8_4_4 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_V_a_r_y_i_n_g_V_e_r_t_i_c_e_s │ │ │ │ │ +ConstIndexArray GetVaryingVertices() const │ │ │ │ │ +Returns an array of varying vertex indices for the patches. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_C_o_m_p_u_t_e_L_o_c_a_l_P_o_i_n_t_V_a_l_u_e_s_V_a_r_y_i_n_g │ │ │ │ │ +void ComputeLocalPointValuesVarying(T const *src, T *dst) const │ │ │ │ │ +Updates local point varying values. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_8_3_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_V_a_r_y_i_n_g_V_e_r_t_i_c_e_s │ │ │ │ │ +ConstIndexArray GetPatchVaryingVertices(PatchHandle const &handle) const │ │ │ │ │ +Returns the varying vertex indices for a given patch. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_I_s_F_e_a_t_u_r_e_A_d_a_p_t_i_v_e │ │ │ │ │ +bool IsFeatureAdaptive() const │ │ │ │ │ +True if the patches are of feature adaptive types. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_M_a_x_V_a_l_e_n_c_e │ │ │ │ │ +int GetMaxValence() const │ │ │ │ │ +Returns max vertex valence. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_9_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_L_o_c_a_l_P_o_i_n_t_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ +StencilTableReal< REAL > const * GetLocalPointStencilTable() const │ │ │ │ │ +Returns the stencil table to compute local point vertex values. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_L_o_c_a_l_P_o_i_n_t_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ +StencilTable const * GetLocalPointStencilTable() const │ │ │ │ │ +Returns the stencil table to compute local point vertex values. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_7_7_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_g_e_t_P_a_t_c_h_P_a_r_a_m_s │ │ │ │ │ +PatchParamArray getPatchParams(int arrayIndex) │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_A_r_r_a_y_F_V_a_r_V_a_l_u_e_s │ │ │ │ │ +ConstIndexArray GetPatchArrayFVarValues(int array, int channel=0) const │ │ │ │ │ +Returns the value indices for the patches in array in channel. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_S_h_a_r_p_n_e_s_s_V_a_l_u_e_s │ │ │ │ │ +std::vector< float > const & GetSharpnessValues() const │ │ │ │ │ +Returns sharpness values table. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_3_8_7 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_V_e_r_t_e_x_V_a_l_e_n_c_e_T_a_b_l_e │ │ │ │ │ +std::vector< Index > VertexValenceTable │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_2_6_4 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_F_V_a_r_P_a_t_c_h_P_a_r_a_m │ │ │ │ │ +PatchParam GetPatchFVarPatchParam(int array, int patch, int channel=0) const │ │ │ │ │ +Returns the face-varying params for a given patch channel. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_V_a_r_y_i_n_g_V_e_r_t_i_c_e_s │ │ │ │ │ +ConstIndexArray GetPatchVaryingVertices(int array, int patch) const │ │ │ │ │ +Returns the varying vertex indices for a given patch. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ +PatchTable(PatchTable const &src) │ │ │ │ │ +Copy constructor. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_N_u_m_P_a_t_c_h_A_r_r_a_y_s │ │ │ │ │ +int GetNumPatchArrays() const │ │ │ │ │ +Returns the number of patch arrays in the table. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_V_e_r_t_i_c_e_s │ │ │ │ │ +ConstIndexArray GetPatchVertices(PatchHandle const &handle) const │ │ │ │ │ +Returns the control vertex indices for the patch identified by handle. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ +PatchTable(int maxvalence) │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ +_L_o_c_a_l_P_o_i_n_t_F_a_c_e_V_a_r_y_i_n_g_S_t_e_n_c_i_l_P_r_e_c_i_s_i_o_n_M_a_t_c_h_e_s_T_y_p_e │ │ │ │ │ +bool LocalPointFaceVaryingStencilPrecisionMatchesType() const │ │ │ │ │ +Tests if the precision of the stencil table to compute local point face-varying │ │ │ │ │ +values matches the gi... │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_P_a_r_a_m_T_a_b_l_e │ │ │ │ │ +PatchParamTable const & GetPatchParamTable() const │ │ │ │ │ +Returns the PatchParamTable (PatchParams order matches patch array sorting) │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_3_8_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_V_e_r_t_e_x_V_a_l_e_n_c_e_T_a_b_l_e │ │ │ │ │ +VertexValenceTable const & GetVertexValenceTable() const │ │ │ │ │ +Returns the 'VertexValences' table (vertex neighborhoods table) │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_2_6_7 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ +_G_e_t_L_o_c_a_l_P_o_i_n_t_F_a_c_e_V_a_r_y_i_n_g_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ +StencilTable const * GetLocalPointFaceVaryingStencilTable(int channel=0) const │ │ │ │ │ +Returns the stencil table to compute local point face-varying values. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_7_8_9 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_N_u_m_C_o_n_t_r_o_l_V_e_r_t_i_c_e_s │ │ │ │ │ +int GetNumControlVertices(int array) const │ │ │ │ │ +Returns the number of control vertices in array. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_~_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ +~PatchTable() │ │ │ │ │ +Destructor. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_E_v_a_l_u_a_t_e_B_a_s_i_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ +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 │ │ │ │ │ +Evaluate basis functions for a face-varying value and derivatives at a given │ │ │ │ │ +(u,v) parametric locatio... │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_Q_u_a_d_O_f_f_s_e_t_s │ │ │ │ │ +ConstQuadOffsetsArray GetPatchQuadOffsets(PatchHandle const &handle) const │ │ │ │ │ +Returns the 'QuadOffsets' for the Gregory patch identified by handle. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ +_G_e_t_F_V_a_r_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r_I_r_r_e_g_u_l_a_r │ │ │ │ │ +PatchDescriptor GetFVarPatchDescriptorIrregular(int channel=0) const │ │ │ │ │ +Returns the irregular patch descriptor for channel. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ +_G_e_t_S_i_n_g_l_e_C_r_e_a_s_e_P_a_t_c_h_S_h_a_r_p_n_e_s_s_V_a_l_u_e │ │ │ │ │ +float GetSingleCreasePatchSharpnessValue(int array, int patch) const │ │ │ │ │ +Returns the crease sharpness for the patch in array if it is a single-crease │ │ │ │ │ +patch,... │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_g_e_t_S_h_a_r_p_n_e_s_s_I_n_d_i_c_e_s │ │ │ │ │ +Index * getSharpnessIndices(Index arrayIndex) │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_C_o_m_p_u_t_e_L_o_c_a_l_P_o_i_n_t_V_a_l_u_e_s │ │ │ │ │ +void ComputeLocalPointValues(T const *src, T *dst) const │ │ │ │ │ +Updates local point vertex values. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_8_2_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ +_G_e_t_S_i_n_g_l_e_C_r_e_a_s_e_P_a_t_c_h_S_h_a_r_p_n_e_s_s_V_a_l_u_e │ │ │ │ │ +float GetSingleCreasePatchSharpnessValue(PatchHandle const &handle) const │ │ │ │ │ +Returns the crease sharpness for the patch identified by handle if it is a │ │ │ │ │ +single-crease patch,... │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_P_a_r_a_m │ │ │ │ │ +PatchParam GetPatchParam(int array, int patch) const │ │ │ │ │ +Returns the PatchParam for patch in array. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_F_V_a_r_V_a_l_u_e_s │ │ │ │ │ +ConstIndexArray GetPatchFVarValues(int array, int patch, int channel=0) const │ │ │ │ │ +Returns the value indices for a given patch in channel. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_F_V_a_r_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r_R_e_g_u_l_a_r │ │ │ │ │ +PatchDescriptor GetFVarPatchDescriptorRegular(int channel=0) const │ │ │ │ │ +Returns the regular patch descriptor for channel. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ +PatchDescriptor GetPatchDescriptor(PatchHandle const &handle) const │ │ │ │ │ +Returns the PatchDescriptor for the patch identified by handle. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_P_a_t_c_h_V_e_r_t_s_T_a_b_l_e │ │ │ │ │ +std::vector< Index > PatchVertsTable │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_3_7_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_Q_u_a_d_O_f_f_s_e_t_s_T_a_b_l_e │ │ │ │ │ +QuadOffsetsTable const & GetQuadOffsetsTable() const │ │ │ │ │ +Returns the quad-offsets table. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_3_9_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_N_u_m_P_a_t_c_h_e_s │ │ │ │ │ +int GetNumPatches(int array) const │ │ │ │ │ +Returns the number of patches in array. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_V_a_r_y_i_n_g_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ +PatchDescriptor GetVaryingPatchDescriptor() const │ │ │ │ │ +Returns the varying patch descriptor. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_F_V_a_r_V_a_l_u_e_s │ │ │ │ │ +ConstIndexArray GetPatchFVarValues(PatchHandle const &handle, int channel=0) │ │ │ │ │ +const │ │ │ │ │ +Returns the value indices for a given patch in channel. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_P_a_r_a_m_s │ │ │ │ │ +ConstPatchParamArray const GetPatchParams(int array) const │ │ │ │ │ +Returns the PatchParams for the patches in array. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_N_u_m_C_o_n_t_r_o_l_V_e_r_t_i_c_e_s_T_o_t_a_l │ │ │ │ │ +int GetNumControlVerticesTotal() const │ │ │ │ │ +Returns the total number of control vertex indices in the table. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_8_4 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_N_u_m_F_V_a_r_C_h_a_n_n_e_l_s │ │ │ │ │ +int GetNumFVarChannels() const │ │ │ │ │ +Returns the number of face-varying channels. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_A_r_r_a_y_F_V_a_r_P_a_t_c_h_P_a_r_a_m_s │ │ │ │ │ +ConstPatchParamArray GetPatchArrayFVarPatchParams(int array, int channel=0) │ │ │ │ │ +const │ │ │ │ │ +Returns the face-varying for a given patch in array in channel. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_g_e_t_P_a_t_c_h_I_n_d_e_x │ │ │ │ │ +Index getPatchIndex(int array, int patch) const │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_N_u_m_L_o_c_a_l_P_o_i_n_t_s │ │ │ │ │ +int GetNumLocalPoints() const │ │ │ │ │ +Returns the number of local vertex points. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ +_L_o_c_a_l_P_o_i_n_t_V_a_r_y_i_n_g_S_t_e_n_c_i_l_P_r_e_c_i_s_i_o_n_M_a_t_c_h_e_s_T_y_p_e │ │ │ │ │ +bool LocalPointVaryingStencilPrecisionMatchesType() const │ │ │ │ │ +Tests if the precision of the stencil table to compute local point varying │ │ │ │ │ +values matches the given f... │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_A_r_r_a_y_V_e_r_t_i_c_e_s │ │ │ │ │ +ConstIndexArray GetPatchArrayVertices(int array) const │ │ │ │ │ +Returns the control vertex indices for the patches in array. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_N_u_m_P_t_e_x_F_a_c_e_s │ │ │ │ │ +int GetNumPtexFaces() const │ │ │ │ │ +Returns the total number of ptex faces in the mesh. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_9_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_F_V_a_r_V_a_l_u_e_s │ │ │ │ │ +ConstIndexArray GetFVarValues(int channel=0) const │ │ │ │ │ +Returns an array of value indices for the patches in channel. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_C_o_n_s_t_Q_u_a_d_O_f_f_s_e_t_s_A_r_r_a_y │ │ │ │ │ +Vtr::ConstArray< unsigned int > ConstQuadOffsetsArray │ │ │ │ │ +Accessors for the gregory patch evaluation buffers. These methods will be │ │ │ │ │ +deprecated. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_2_5_9 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_E_v_a_l_u_a_t_e_B_a_s_i_s │ │ │ │ │ +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 │ │ │ │ │ +Evaluate basis functions for position and derivatives at a given (u,v) │ │ │ │ │ +parametric location of a patch... │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ +_G_e_t_L_o_c_a_l_P_o_i_n_t_F_a_c_e_V_a_r_y_i_n_g_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ +StencilTableReal< REAL > const * GetLocalPointFaceVaryingStencilTable(int │ │ │ │ │ +channel=0) const │ │ │ │ │ +Returns the stencil table to compute local point face-varying values. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_N_u_m_P_a_t_c_h_e_s_T_o_t_a_l │ │ │ │ │ +int GetNumPatchesTotal() const │ │ │ │ │ +Returns the total number of patches stored in the table. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_P_a_r_a_m │ │ │ │ │ +PatchParam GetPatchParam(PatchHandle const &handle) const │ │ │ │ │ +Returns a PatchParam for the patch identified by handle. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_p_r_i_n_t │ │ │ │ │ +void print() const │ │ │ │ │ +debug helper │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ +_G_e_t_F_V_a_r_C_h_a_n_n_e_l_L_i_n_e_a_r_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ +Sdc::Options::FVarLinearInterpolation GetFVarChannelLinearInterpolation(int │ │ │ │ │ +channel=0) const │ │ │ │ │ +Deprecated. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_S_h_a_r_p_n_e_s_s_I_n_d_e_x_T_a_b_l_e │ │ │ │ │ +std::vector< Index > const & GetSharpnessIndexTable() const │ │ │ │ │ +Returns a sharpness index table for each patch (if exists) │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_3_8_4 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_A_r_r_a_y_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ +PatchDescriptor GetPatchArrayDescriptor(int array) const │ │ │ │ │ +Returns the PatchDescriptor for the patches in array. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_P_a_t_c_h_T_a_b_l_e_B_u_i_l_d_e_r │ │ │ │ │ +friend class PatchTableBuilder │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_5_3_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_E_v_a_l_u_a_t_e_B_a_s_i_s_V_a_r_y_i_n_g │ │ │ │ │ +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 │ │ │ │ │ +Evaluate basis functions for a varying value and derivatives at a given (u,v) │ │ │ │ │ +parametric location of ... │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ +_G_e_t_L_o_c_a_l_P_o_i_n_t_V_a_r_y_i_n_g_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ +StencilTable const * GetLocalPointVaryingStencilTable() const │ │ │ │ │ +Returns the stencil table to compute local point varying values. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_7_8_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_Q_u_a_d_O_f_f_s_e_t_s_T_a_b_l_e │ │ │ │ │ +std::vector< unsigned int > QuadOffsetsTable │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_3_8_9 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_V_e_r_t_i_c_e_s │ │ │ │ │ +ConstIndexArray GetPatchVertices(int array, int patch) const │ │ │ │ │ +Returns the control vertex indices for patch in array. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_F_V_a_r_P_a_t_c_h_P_a_r_a_m │ │ │ │ │ +PatchParam GetPatchFVarPatchParam(PatchHandle const &handle, int channel=0) │ │ │ │ │ +const │ │ │ │ │ +Returns the value indices for a given patch in channel. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_F_V_a_r_V_a_l_u_e_S_t_r_i_d_e │ │ │ │ │ +int GetFVarValueStride(int channel=0) const │ │ │ │ │ +Returns the stride between patches in the value index array of channel. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_F_V_a_r_P_a_t_c_h_P_a_r_a_m_s │ │ │ │ │ +ConstPatchParamArray GetFVarPatchParams(int channel=0) const │ │ │ │ │ +Returns an array of face-varying patch param for channel. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_F_V_a_r_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ +PatchDescriptor GetFVarPatchDescriptor(int channel=0) const │ │ │ │ │ +Returns the default/irregular patch descriptor for channel. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_N_u_m_L_o_c_a_l_P_o_i_n_t_s_V_a_r_y_i_n_g │ │ │ │ │ +int GetNumLocalPointsVarying() const │ │ │ │ │ +Returns the number of local varying points. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ +_L_o_c_a_l_P_o_i_n_t_S_t_e_n_c_i_l_P_r_e_c_i_s_i_o_n_M_a_t_c_h_e_s_T_y_p_e │ │ │ │ │ +bool LocalPointStencilPrecisionMatchesType() const │ │ │ │ │ +Tests if the precision of the stencil table to compute local point vertex │ │ │ │ │ +values matches the given fl... │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ +_G_e_t_L_o_c_a_l_P_o_i_n_t_V_a_r_y_i_n_g_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ +StencilTableReal< REAL > const * GetLocalPointVaryingStencilTable() const │ │ │ │ │ +Returns the stencil table to compute local point varying values. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_N_u_m_L_o_c_a_l_P_o_i_n_t_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ +int GetNumLocalPointsFaceVarying(int channel=0) const │ │ │ │ │ +Returns the number of local face-varying points for channel. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_P_a_t_c_h_H_a_n_d_l_e │ │ │ │ │ +Handle that can be used as unique patch identifier within PatchTable. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_6_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_P_a_t_c_h_H_a_n_d_l_e_:_:_p_a_t_c_h_I_n_d_e_x │ │ │ │ │ +Index patchIndex │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_6_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_P_a_t_c_h_H_a_n_d_l_e_:_:_a_r_r_a_y_I_n_d_e_x │ │ │ │ │ +Index arrayIndex │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_6_7 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_P_a_t_c_h_H_a_n_d_l_e_:_:_v_e_r_t_I_n_d_e_x │ │ │ │ │ +Index vertIndex │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_6_9 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_S_t_e_n_c_i_l_T_a_b_l_e_R_e_a_l │ │ │ │ │ +Table of subdivision stencils. │ │ │ │ │ +DDeeffiinniittiioonn _s_t_e_n_c_i_l_T_a_b_l_e_._h_:_1_4_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ +Stencil table class wrapping the template for compatibility. │ │ │ │ │ +DDeeffiinniittiioonn _s_t_e_n_c_i_l_T_a_b_l_e_._h_:_2_7_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_O_p_t_i_o_n_s_:_:_F_V_a_r_L_i_n_e_a_r_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ +FVarLinearInterpolation │ │ │ │ │ +DDeeffiinniittiioonn _o_p_t_i_o_n_s_._h_:_6_0 │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_V_t_r_:_:_C_o_n_s_t_A_r_r_a_y │ │ │ │ │ DDeeffiinniittiioonn _a_r_r_a_y_._h_:_5_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_V_t_r_:_:_A_r_r_a_y │ │ │ │ │ +DDeeffiinniittiioonn _a_r_r_a_y_._h_:_1_0_5 │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _f_a_r │ │ │ │ │ - * _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h │ │ │ │ │ + * _p_a_t_c_h_T_a_b_l_e_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00731.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/far/patchTable.h File Reference │ │ │ │ +OpenSubdiv: opensubdiv/far/patchTableFactory.h File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -90,33 +90,33 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
patchTable.h File Reference
│ │ │ │ +
patchTableFactory.h File Reference
│ │ │ │
│ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ -#include "../far/patchDescriptor.h"
│ │ │ │ -#include "../far/patchParam.h"
│ │ │ │ -#include "../far/stencilTable.h"
│ │ │ │ -#include "../sdc/options.h"
│ │ │ │ -#include <vector>
│ │ │ │ +#include "../far/topologyRefiner.h"
│ │ │ │ +#include "../far/patchTable.h"
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  PatchTable
 Container for arrays of parametric patches. More...
class  PatchTableFactory
 Factory for constructing a PatchTable from a TopologyRefiner. More...
 
class  PatchTable::PatchHandle
 Handle that can be used as unique patch identifier within PatchTable. More...
struct  PatchTableFactory::Options
 Public options for the PatchTable factory. More...
 
struct  PatchTableFactory::PatchFaceTag
 Obsolete internal struct not intended for public use – due to be deprecated. More...
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -125,13 +125,13 @@ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  OpenSubdiv
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION
 
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,32 +1,32 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -patchTable.h File Reference │ │ │ │ │ +patchTableFactory.h File Reference │ │ │ │ │ #include "../version.h" │ │ │ │ │ -#include "_._._/_f_a_r_/_p_a_t_c_h_D_e_s_c_r_i_p_t_o_r_._h" │ │ │ │ │ -#include "_._._/_f_a_r_/_p_a_t_c_h_P_a_r_a_m_._h" │ │ │ │ │ -#include "_._._/_f_a_r_/_s_t_e_n_c_i_l_T_a_b_l_e_._h" │ │ │ │ │ -#include "_._._/_s_d_c_/_o_p_t_i_o_n_s_._h" │ │ │ │ │ -#include │ │ │ │ │ +#include "_._._/_f_a_r_/_t_o_p_o_l_o_g_y_R_e_f_i_n_e_r_._h" │ │ │ │ │ +#include "_._._/_f_a_r_/_p_a_t_c_h_T_a_b_l_e_._h" │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -class   _P_a_t_c_h_T_a_b_l_e │ │ │ │ │ -  Container for arrays of parametric patches. _M_o_r_e_._._. │ │ │ │ │ + class   _P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y │ │ │ │ │ +  Factory for constructing a _P_a_t_c_h_T_a_b_l_e from a _T_o_p_o_l_o_g_y_R_e_f_i_n_e_r. _M_o_r_e_._._. │ │ │ │ │   │ │ │ │ │ -class   _P_a_t_c_h_T_a_b_l_e_:_:_P_a_t_c_h_H_a_n_d_l_e │ │ │ │ │ -  Handle that can be used as unique patch identifier within _P_a_t_c_h_T_a_b_l_e. │ │ │ │ │ - _M_o_r_e_._._. │ │ │ │ │ +struct   _P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s │ │ │ │ │ +  Public options for the _P_a_t_c_h_T_a_b_l_e factory. _M_o_r_e_._._. │ │ │ │ │ +  │ │ │ │ │ +struct   _P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_P_a_t_c_h_F_a_c_e_T_a_g │ │ │ │ │ +  Obsolete internal struct not intended for public use – due to be │ │ │ │ │ + deprecated. _M_o_r_e_._._. │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r │ │ │ │ │   │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _f_a_r │ │ │ │ │ - * _p_a_t_c_h_T_a_b_l_e_._h │ │ │ │ │ + * _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00731.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -1,4 +1,5 @@ │ │ │ │ │ var a00731 = [ │ │ │ │ │ - ["PatchTable", "a00993.html", "a00993"], │ │ │ │ │ - ["PatchHandle", "a00997.html", "a00997"] │ │ │ │ │ + ["PatchTableFactory", "a01017.html", "a01017"], │ │ │ │ │ + ["Options", "a01021.html", "a01021"], │ │ │ │ │ + ["PatchFaceTag", "a01025.html", "a01025"] │ │ │ │ │ ]; │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00731_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/far/patchTable.h Source File │ │ │ │ +OpenSubdiv: opensubdiv/far/patchTableFactory.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -92,15 +92,15 @@ │ │ │ │
No Matches
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
patchTable.h
│ │ │ │ +
patchTableFactory.h
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1//
│ │ │ │
2// Copyright 2013 Pixar
│ │ │ │
3//
│ │ │ │
4// Licensed under the Apache License, Version 2.0 (the "Apache License")
│ │ │ │
5// with the following modification; you may not use this file except in
│ │ │ │ @@ -119,798 +119,249 @@ │ │ │ │
18// Unless required by applicable law or agreed to in writing, software
│ │ │ │
19// distributed under the Apache License with the above modification is
│ │ │ │
20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
│ │ │ │
21// KIND, either express or implied. See the Apache License for the specific
│ │ │ │
22// language governing permissions and limitations under the Apache License.
│ │ │ │
23//
│ │ │ │
24
│ │ │ │ -
25#ifndef OPENSUBDIV3_FAR_PATCH_TABLE_H
│ │ │ │ -
26#define OPENSUBDIV3_FAR_PATCH_TABLE_H
│ │ │ │ +
25#ifndef OPENSUBDIV3_FAR_PATCH_TABLE_FACTORY_H
│ │ │ │ +
26#define OPENSUBDIV3_FAR_PATCH_TABLE_FACTORY_H
│ │ │ │
27
│ │ │ │
28#include "../version.h"
│ │ │ │
29
│ │ │ │ -
30#include "../far/patchDescriptor.h"
│ │ │ │ -
31#include "../far/patchParam.h"
│ │ │ │ -
32#include "../far/stencilTable.h"
│ │ │ │ -
33
│ │ │ │ -
34#include "../sdc/options.h"
│ │ │ │ +
30#include "../far/topologyRefiner.h"
│ │ │ │ +
31#include "../far/patchTable.h"
│ │ │ │ +
32
│ │ │ │ +
33namespace OpenSubdiv {
│ │ │ │ +
34namespace OPENSUBDIV_VERSION {
│ │ │ │
35
│ │ │ │ -
36#include <vector>
│ │ │ │ +
36namespace Far {
│ │ │ │
37
│ │ │ │ -
38namespace OpenSubdiv {
│ │ │ │ -
39namespace OPENSUBDIV_VERSION {
│ │ │ │ -
40
│ │ │ │ -
41namespace Far {
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
41public:
│ │ │ │
42
│ │ │ │ +
│ │ │ │ +
45 struct Options {
│ │ │ │ +
46
│ │ │ │
│ │ │ │ - │ │ │ │ -
56
│ │ │ │ -
57public:
│ │ │ │ -
58
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
61 // XXXX manuelk members will eventually be made private
│ │ │ │ -
62 public:
│ │ │ │ -
63
│ │ │ │ -
64 friend class PatchTable;
│ │ │ │ -
65 friend class PatchMap;
│ │ │ │ -
66
│ │ │ │ -
67 Index arrayIndex, // Array index of the patch
│ │ │ │ -
68 patchIndex, // Absolute Index of the patch
│ │ │ │ -
69 vertIndex; // Relative offset to the first CV of the patch in array
│ │ │ │ -
70 };
│ │ │ │ -
│ │ │ │ -
71
│ │ │ │ -
72public:
│ │ │ │ -
73
│ │ │ │ -
75 PatchTable(PatchTable const & src);
│ │ │ │ -
76
│ │ │ │ - │ │ │ │ -
79
│ │ │ │ -
81 bool IsFeatureAdaptive() const;
│ │ │ │ -
82
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
85 return (int)_patchVerts.size();
│ │ │ │ -
86 }
│ │ │ │ -
│ │ │ │ -
87
│ │ │ │ -
89 int GetNumPatchesTotal() const;
│ │ │ │ -
90
│ │ │ │ -
92 int GetMaxValence() const { return _maxValence; }
│ │ │ │ -
93
│ │ │ │ -
95 int GetNumPtexFaces() const { return _numPtexFaces; }
│ │ │ │ -
96
│ │ │ │ -
97
│ │ │ │ -
99
│ │ │ │ -
105
│ │ │ │ - │ │ │ │ -
108
│ │ │ │ - │ │ │ │ -
111
│ │ │ │ -
113 PatchParam GetPatchParam(PatchHandle const & handle) const;
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
61 };
│ │ │ │ +
│ │ │ │ +
62
│ │ │ │ +
│ │ │ │ +
63 Options(unsigned int maxIsolation=10) :
│ │ │ │ +
64 generateAllLevels(false),
│ │ │ │ + │ │ │ │ + │ │ │ │ +
67 triangulateQuads(false),
│ │ │ │ + │ │ │ │ +
69 useInfSharpPatch(false),
│ │ │ │ +
70 maxIsolationLevel(maxIsolation & 0xf),
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
75 generateFVarTables(false),
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
82 { }
│ │ │ │ +
│ │ │ │ +
83
│ │ │ │ + │ │ │ │ +
86
│ │ │ │ +
88 void SetEndCapType(EndCapType e) { endCapType = e & 0x7; }
│ │ │ │ +
89
│ │ │ │ +
91 void SetMaxIsolationLevel(unsigned int level) { maxIsolationLevel = level & 0xf; }
│ │ │ │ +
92
│ │ │ │ +
94 template <typename REAL> void SetPatchPrecision();
│ │ │ │ +
95
│ │ │ │ +
97 template <typename REAL> void SetFVarPatchPrecision();
│ │ │ │ +
98
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ +
102
│ │ │ │ +
103 adaptiveOptions.useInfSharpPatch = useInfSharpPatch;
│ │ │ │ + │ │ │ │ +
105 adaptiveOptions.considerFVarChannels = generateFVarTables &&
│ │ │ │ + │ │ │ │ +
107 return adaptiveOptions;
│ │ │ │ +
108 }
│ │ │ │ +
│ │ │ │ +
109
│ │ │ │ +
110 unsigned int generateAllLevels : 1,
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │
114
│ │ │ │ -
116 ConstIndexArray GetPatchVertices(int array, int patch) const;
│ │ │ │ -
117
│ │ │ │ -
119 PatchParam GetPatchParam(int array, int patch) const;
│ │ │ │ -
121
│ │ │ │ -
122
│ │ │ │ -
124
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
118
│ │ │ │ +
119 // end-capping
│ │ │ │ + │ │ │ │ + │ │ │ │ +
123
│ │ │ │ +
124 // varying
│ │ │ │ + │ │ │ │ + │ │ │ │ +
127
│ │ │ │ +
128 // face-varying
│ │ │ │ + │ │ │ │
130
│ │ │ │ -
132 int GetNumPatchArrays() const;
│ │ │ │ -
133
│ │ │ │ -
135 int GetNumPatches(int array) const;
│ │ │ │ -
136
│ │ │ │ -
138 int GetNumControlVertices(int array) const;
│ │ │ │ -
139
│ │ │ │ - │ │ │ │ +
131 // precision
│ │ │ │ + │ │ │ │ + │ │ │ │ +
134
│ │ │ │ +
135 // legacy behaviors (default to true)
│ │ │ │ + │ │ │ │ + │ │ │ │ +
138
│ │ │ │ + │ │ │ │ +
140 int const * fvarChannelIndices;
│ │ │ │ +
141 };
│ │ │ │ +
│ │ │ │
142
│ │ │ │ - │ │ │ │ -
145
│ │ │ │ -
147 ConstPatchParamArray const GetPatchParams(int array) const;
│ │ │ │ -
149
│ │ │ │ -
150
│ │ │ │ -
152
│ │ │ │ -
159
│ │ │ │ -
161 int GetNumLocalPoints() const;
│ │ │ │ -
162
│ │ │ │ - │ │ │ │ -
165
│ │ │ │ -
167 template <typename REAL>
│ │ │ │ - │ │ │ │ -
169
│ │ │ │ -
172 template <typename REAL> bool LocalPointStencilPrecisionMatchesType() const;
│ │ │ │ -
173
│ │ │ │ -
186 template <class T> void
│ │ │ │ -
187 ComputeLocalPointValues(T const *src, T *dst) const;
│ │ │ │ -
188
│ │ │ │ -
189
│ │ │ │ - │ │ │ │ -
192
│ │ │ │ - │ │ │ │ -
195
│ │ │ │ -
197 template <typename REAL>
│ │ │ │ - │ │ │ │ -
199
│ │ │ │ -
202 template <typename REAL> bool LocalPointVaryingStencilPrecisionMatchesType() const;
│ │ │ │ -
203
│ │ │ │ -
216 template <class T> void
│ │ │ │ -
217 ComputeLocalPointValuesVarying(T const *src, T *dst) const;
│ │ │ │ +
175 static PatchTable * Create(TopologyRefiner const & refiner,
│ │ │ │ +
176 Options options = Options(),
│ │ │ │ +
177 ConstIndexArray selectedFaces = ConstIndexArray());
│ │ │ │ +
178
│ │ │ │ +
179public:
│ │ │ │ +
180 // PatchFaceTag
│ │ │ │ +
181 //
│ │ │ │ +
182 // This simple struct was previously used within the factory to take inventory of
│ │ │ │ +
183 // various kinds of patches to fully allocate buffers prior to populating them. It
│ │ │ │ +
184 // was not intended to be exposed as part of the public interface.
│ │ │ │ +
185 //
│ │ │ │ +
186 // It is no longer used internally and is being kept here to respect preservation
│ │ │ │ +
187 // of the public interface, but it will be deprecated at the earliest opportunity.
│ │ │ │ +
188 //
│ │ │ │ +
191 //
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
193 public:
│ │ │ │ +
194 unsigned int _hasPatch : 1;
│ │ │ │ +
195 unsigned int _isRegular : 1;
│ │ │ │ +
196 unsigned int _transitionMask : 4;
│ │ │ │ +
197 unsigned int _boundaryMask : 4;
│ │ │ │ +
198 unsigned int _boundaryIndex : 2;
│ │ │ │ +
199 unsigned int _boundaryCount : 3;
│ │ │ │ +
200 unsigned int _hasBoundaryEdge : 3;
│ │ │ │ +
201 unsigned int _isSingleCrease : 1;
│ │ │ │ +
202
│ │ │ │ +
203 void clear();
│ │ │ │ +
204 void assignBoundaryPropertiesFromEdgeMask(int boundaryEdgeMask);
│ │ │ │ +
205 void assignBoundaryPropertiesFromVertexMask(int boundaryVertexMask);
│ │ │ │ +
206 void assignTransitionPropertiesFromEdgeMask(int boundaryVertexMask);
│ │ │ │ +
207 };
│ │ │ │ +
│ │ │ │ +
208 typedef std::vector<PatchFaceTag> PatchTagVector;
│ │ │ │ +
209};
│ │ │ │ +
│ │ │ │ +
210
│ │ │ │ +
211
│ │ │ │ +
│ │ │ │ +
212template <> inline void PatchTableFactory::Options::SetPatchPrecision<float>() {
│ │ │ │ +
213 patchPrecisionDouble = false;
│ │ │ │ +
214}
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
215template <> inline void PatchTableFactory::Options::SetFVarPatchPrecision<float>() {
│ │ │ │ +
216 fvarPatchPrecisionDouble = false;
│ │ │ │ +
217}
│ │ │ │ +
│ │ │ │
218
│ │ │ │ -
219
│ │ │ │ -
221 int GetNumLocalPointsFaceVarying(int channel = 0) const;
│ │ │ │ -
222
│ │ │ │ -
224 StencilTable const *GetLocalPointFaceVaryingStencilTable(int channel = 0) const;
│ │ │ │ +
219template <> inline void PatchTableFactory::Options::SetPatchPrecision<double>() {
│ │ │ │ +
220 patchPrecisionDouble = true;
│ │ │ │ +
221}
│ │ │ │ +
222template <> inline void PatchTableFactory::Options::SetFVarPatchPrecision<double>() {
│ │ │ │ +
223 fvarPatchPrecisionDouble = true;
│ │ │ │ +
224}
│ │ │ │
225
│ │ │ │ -
227 template <typename REAL>
│ │ │ │ - │ │ │ │ -
229
│ │ │ │ -
232 template <typename REAL> bool LocalPointFaceVaryingStencilPrecisionMatchesType() const;
│ │ │ │ +
226
│ │ │ │ +
227} // end namespace Far
│ │ │ │ +
228
│ │ │ │ +
229} // end namespace OPENSUBDIV_VERSION
│ │ │ │ +
230using namespace OPENSUBDIV_VERSION;
│ │ │ │ +
231
│ │ │ │ +
232} // end namespace OpenSubdiv
│ │ │ │
233
│ │ │ │ -
248 template <class T> void
│ │ │ │ -
249 ComputeLocalPointValuesFaceVarying(T const *src, T *dst, int channel = 0) const;
│ │ │ │ -
251
│ │ │ │ -
252
│ │ │ │ -
254
│ │ │ │ -
255
│ │ │ │ - │ │ │ │ -
260
│ │ │ │ - │ │ │ │ -
263
│ │ │ │ -
264 typedef std::vector<Index> VertexValenceTable;
│ │ │ │ -
265
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
268 return _vertexValenceTable;
│ │ │ │ -
269 }
│ │ │ │ -
│ │ │ │ -
271
│ │ │ │ -
272
│ │ │ │ -
274
│ │ │ │ -
280
│ │ │ │ - │ │ │ │ -
284
│ │ │ │ -
287 float GetSingleCreasePatchSharpnessValue(int array, int patch) const;
│ │ │ │ -
289
│ │ │ │ -
290
│ │ │ │ -
292
│ │ │ │ -
298
│ │ │ │ - │ │ │ │ -
301
│ │ │ │ - │ │ │ │ -
304
│ │ │ │ -
306 ConstIndexArray GetPatchVaryingVertices(int array, int patch) const;
│ │ │ │ -
307
│ │ │ │ - │ │ │ │ -
310
│ │ │ │ - │ │ │ │ -
314
│ │ │ │ -
315
│ │ │ │ -
317
│ │ │ │ -
323
│ │ │ │ - │ │ │ │ -
326
│ │ │ │ - │ │ │ │ -
329
│ │ │ │ - │ │ │ │ -
332
│ │ │ │ - │ │ │ │ -
335
│ │ │ │ -
337 ConstIndexArray GetPatchFVarValues(PatchHandle const & handle, int channel = 0) const;
│ │ │ │ -
338
│ │ │ │ -
340 ConstIndexArray GetPatchFVarValues(int array, int patch, int channel = 0) const;
│ │ │ │ -
341
│ │ │ │ -
343 ConstIndexArray GetPatchArrayFVarValues(int array, int channel = 0) const;
│ │ │ │ -
344
│ │ │ │ -
346 ConstIndexArray GetFVarValues(int channel = 0) const;
│ │ │ │ -
347
│ │ │ │ -
349 int GetFVarValueStride(int channel = 0) const;
│ │ │ │ -
350
│ │ │ │ -
352 PatchParam GetPatchFVarPatchParam(PatchHandle const & handle, int channel = 0) const;
│ │ │ │ -
353
│ │ │ │ -
355 PatchParam GetPatchFVarPatchParam(int array, int patch, int channel = 0) const;
│ │ │ │ -
356
│ │ │ │ -
358 ConstPatchParamArray GetPatchArrayFVarPatchParams(int array, int channel = 0) const;
│ │ │ │ -
359
│ │ │ │ - │ │ │ │ -
362
│ │ │ │ - │ │ │ │ -
366
│ │ │ │ -
367
│ │ │ │ -
369
│ │ │ │ -
374
│ │ │ │ -
375 typedef std::vector<Index> PatchVertsTable;
│ │ │ │ -
376
│ │ │ │ -
378 PatchVertsTable const & GetPatchControlVerticesTable() const { return _patchVerts; }
│ │ │ │ -
379
│ │ │ │ -
381 PatchParamTable const & GetPatchParamTable() const { return _paramTable; }
│ │ │ │ -
382
│ │ │ │ -
384 std::vector<Index> const &GetSharpnessIndexTable() const { return _sharpnessIndices; }
│ │ │ │ -
385
│ │ │ │ -
387 std::vector<float> const &GetSharpnessValues() const { return _sharpnessValues; }
│ │ │ │ -
388
│ │ │ │ -
389 typedef std::vector<unsigned int> QuadOffsetsTable;
│ │ │ │ -
390
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
393 return _quadOffsetsTable;
│ │ │ │ -
394 }
│ │ │ │ -
│ │ │ │ -
396
│ │ │ │ -
398 void print() const;
│ │ │ │ -
399
│ │ │ │ -
400public:
│ │ │ │ -
401
│ │ │ │ -
403
│ │ │ │ -
405
│ │ │ │ -
428 template <typename REAL>
│ │ │ │ -
429 void EvaluateBasis(PatchHandle const & handle, REAL u, REAL v,
│ │ │ │ -
430 REAL wP[], REAL wDu[] = 0, REAL wDv[] = 0,
│ │ │ │ -
431 REAL wDuu[] = 0, REAL wDuv[] = 0, REAL wDvv[] = 0) const;
│ │ │ │ -
432
│ │ │ │ -
435 void EvaluateBasis(PatchHandle const & handle, float u, float v,
│ │ │ │ -
436 float wP[], float wDu[] = 0, float wDv[] = 0,
│ │ │ │ -
437 float wDuu[] = 0, float wDuv[] = 0, float wDvv[] = 0) const;
│ │ │ │ -
438
│ │ │ │ -
441 void EvaluateBasis(PatchHandle const & handle, double u, double v,
│ │ │ │ -
442 double wP[], double wDu[] = 0, double wDv[] = 0,
│ │ │ │ -
443 double wDuu[] = 0, double wDuv[] = 0, double wDvv[] = 0) const;
│ │ │ │ -
444
│ │ │ │ -
467 template <typename REAL>
│ │ │ │ -
468 void EvaluateBasisVarying(PatchHandle const & handle, REAL u, REAL v,
│ │ │ │ -
469 REAL wP[], REAL wDu[] = 0, REAL wDv[] = 0,
│ │ │ │ -
470 REAL wDuu[] = 0, REAL wDuv[] = 0, REAL wDvv[] = 0) const;
│ │ │ │ -
471
│ │ │ │ -
474 void EvaluateBasisVarying(PatchHandle const & handle, float u, float v,
│ │ │ │ -
475 float wP[], float wDu[] = 0, float wDv[] = 0,
│ │ │ │ -
476 float wDuu[] = 0, float wDuv[] = 0, float wDvv[] = 0) const;
│ │ │ │ -
477
│ │ │ │ -
480 void EvaluateBasisVarying(PatchHandle const & handle, double u, double v,
│ │ │ │ -
481 double wP[], double wDu[] = 0, double wDv[] = 0,
│ │ │ │ -
482 double wDuu[] = 0, double wDuv[] = 0, double wDvv[] = 0) const;
│ │ │ │ -
483
│ │ │ │ -
508 template <typename REAL>
│ │ │ │ -
509 void EvaluateBasisFaceVarying(PatchHandle const & handle, REAL u, REAL v,
│ │ │ │ -
510 REAL wP[], REAL wDu[] = 0, REAL wDv[] = 0,
│ │ │ │ -
511 REAL wDuu[] = 0, REAL wDuv[] = 0, REAL wDvv[] = 0,
│ │ │ │ -
512 int channel = 0) const;
│ │ │ │ -
513
│ │ │ │ -
516 void EvaluateBasisFaceVarying(PatchHandle const & handle, float u, float v,
│ │ │ │ -
517 float wP[], float wDu[] = 0, float wDv[] = 0,
│ │ │ │ -
518 float wDuu[] = 0, float wDuv[] = 0, float wDvv[] = 0,
│ │ │ │ -
519 int channel = 0) const;
│ │ │ │ -
520
│ │ │ │ -
523 void EvaluateBasisFaceVarying(PatchHandle const & handle, double u, double v,
│ │ │ │ -
524 double wP[], double wDu[] = 0, double wDv[] = 0,
│ │ │ │ -
525 double wDuu[] = 0, double wDuv[] = 0, double wDvv[] = 0,
│ │ │ │ -
526 int channel = 0) const;
│ │ │ │ -
528
│ │ │ │ -
529protected:
│ │ │ │ -
530
│ │ │ │ -
531 friend class PatchTableBuilder;
│ │ │ │ -
532
│ │ │ │ -
533 // Factory constructor
│ │ │ │ -
534 PatchTable(int maxvalence);
│ │ │ │ -
535
│ │ │ │ -
536 Index getPatchIndex(int array, int patch) const;
│ │ │ │ -
537
│ │ │ │ - │ │ │ │ -
539
│ │ │ │ - │ │ │ │ -
541 float * getSharpnessValues(Index arrayIndex);
│ │ │ │ -
542
│ │ │ │ -
543private:
│ │ │ │ -
544
│ │ │ │ -
545 //
│ │ │ │ -
546 // Patch arrays
│ │ │ │ -
547 //
│ │ │ │ -
548 struct PatchArray {
│ │ │ │ -
549 PatchArray(PatchDescriptor d, int np, Index v, Index p, Index qo) :
│ │ │ │ -
550 desc(d), numPatches(np), vertIndex(v),
│ │ │ │ -
551 patchIndex(p), quadOffsetIndex (qo) { }
│ │ │ │ -
552
│ │ │ │ -
553 void print() const;
│ │ │ │ -
554
│ │ │ │ -
555 PatchDescriptor desc; // type of patches in the array
│ │ │ │ -
556
│ │ │ │ -
557 int numPatches; // number of patches in the array
│ │ │ │ -
558
│ │ │ │ -
559 Index vertIndex, // index to the first control vertex
│ │ │ │ -
560 patchIndex, // absolute index of the first patch in the array
│ │ │ │ -
561 quadOffsetIndex; // index of the first quad offset entry
│ │ │ │ -
562 };
│ │ │ │ -
563
│ │ │ │ -
564 typedef std::vector<PatchArray> PatchArrayVector;
│ │ │ │ -
565
│ │ │ │ -
566 PatchArray & getPatchArray(Index arrayIndex);
│ │ │ │ -
567 PatchArray const & getPatchArray(Index arrayIndex) const;
│ │ │ │ -
568
│ │ │ │ -
569 void reservePatchArrays(int numPatchArrays);
│ │ │ │ -
570 void pushPatchArray(PatchDescriptor desc, int npatches,
│ │ │ │ -
571 Index * vidx, Index * pidx, Index * qoidx=0);
│ │ │ │ -
572
│ │ │ │ -
573 IndexArray getPatchArrayVertices(int arrayIndex);
│ │ │ │ -
574
│ │ │ │ -
575 Index findPatchArray(PatchDescriptor desc);
│ │ │ │ -
576
│ │ │ │ -
577
│ │ │ │ -
578 //
│ │ │ │ -
579 // Varying patch arrays
│ │ │ │ -
580 //
│ │ │ │ -
581 IndexArray getPatchArrayVaryingVertices(int arrayIndex);
│ │ │ │ -
582
│ │ │ │ -
583 void allocateVaryingVertices(
│ │ │ │ -
584 PatchDescriptor desc, int numPatches);
│ │ │ │ -
585 void populateVaryingVertices();
│ │ │ │ -
586
│ │ │ │ -
587 //
│ │ │ │ -
588 // Face-varying patch channels
│ │ │ │ -
589 //
│ │ │ │ -
590
│ │ │ │ -
591 //
│ │ │ │ -
592 // FVarPatchChannel
│ │ │ │ -
593 //
│ │ │ │ -
594 // Stores a record for each patch in the primitive :
│ │ │ │ -
595 //
│ │ │ │ -
596 // - Each patch in the PatchTable has a corresponding patch in each
│ │ │ │ -
597 // face-varying patch channel. Patch vertex indices are sorted in the same
│ │ │ │ -
598 // patch-type order as PatchTable::PTables. Face-varying data for a patch
│ │ │ │ -
599 // can therefore be quickly accessed by using the patch primitive ID as
│ │ │ │ -
600 // index into patchValueOffsets to locate the face-varying control vertex
│ │ │ │ -
601 // indices.
│ │ │ │ -
602 //
│ │ │ │ -
603 // - Face-varying channels can have a different interpolation modes
│ │ │ │ -
604 //
│ │ │ │ -
605 // - Unlike "vertex" patches, there are no transition masks required
│ │ │ │ -
606 // for face-varying patches.
│ │ │ │ -
607 //
│ │ │ │ -
608 // - Face-varying patches still require boundary edge masks.
│ │ │ │ -
609 //
│ │ │ │ -
610 // - currently most patches with sharp boundaries but smooth interiors have
│ │ │ │ -
611 // to be isolated to level 10 : we need a special type of bicubic patch
│ │ │ │ -
612 // similar to single-crease to resolve this condition without requiring
│ │ │ │ -
613 // isolation if possible
│ │ │ │ -
614 //
│ │ │ │ -
615 struct FVarPatchChannel {
│ │ │ │ - │ │ │ │ -
617
│ │ │ │ -
618 PatchDescriptor regDesc;
│ │ │ │ -
619 PatchDescriptor irregDesc;
│ │ │ │ -
620
│ │ │ │ -
621 int stride;
│ │ │ │ -
622
│ │ │ │ -
623 std::vector<Index> patchValues;
│ │ │ │ -
624 std::vector<PatchParam> patchParam;
│ │ │ │ -
625 };
│ │ │ │ -
626 typedef std::vector<FVarPatchChannel> FVarPatchChannelVector;
│ │ │ │ -
627
│ │ │ │ -
628 FVarPatchChannel & getFVarPatchChannel(int channel);
│ │ │ │ -
629 FVarPatchChannel const & getFVarPatchChannel(int channel) const;
│ │ │ │ -
630
│ │ │ │ -
631 void allocateFVarPatchChannels(int numChannels);
│ │ │ │ -
632 void allocateFVarPatchChannelValues(
│ │ │ │ -
633 PatchDescriptor regDesc, PatchDescriptor irregDesc,
│ │ │ │ -
634 int numPatches, int channel);
│ │ │ │ -
635
│ │ │ │ -
636 // deprecated
│ │ │ │ -
637 void setFVarPatchChannelLinearInterpolation(
│ │ │ │ -
638 Sdc::Options::FVarLinearInterpolation interpolation, int channel);
│ │ │ │ -
639
│ │ │ │ -
640 IndexArray getFVarValues(int channel);
│ │ │ │ -
641 ConstIndexArray getPatchFVarValues(int patch, int channel) const;
│ │ │ │ -
642
│ │ │ │ -
643 PatchParamArray getFVarPatchParams(int channel);
│ │ │ │ -
644 PatchParam getPatchFVarPatchParam(int patch, int channel) const;
│ │ │ │ -
645
│ │ │ │ -
646private:
│ │ │ │ -
647 //
│ │ │ │ -
648 // Simple private class to hold stencil table pointers of varying precision,
│ │ │ │ -
649 // where the discriminant of the precision is external.
│ │ │ │ -
650 //
│ │ │ │ -
651 // NOTE that this is a simple pointer container and NOT a smart pointer that
│ │ │ │ -
652 // manages the ownership of the object referred to by it.
│ │ │ │ -
653 //
│ │ │ │ -
654 class StencilTablePtr {
│ │ │ │ -
655 private:
│ │ │ │ -
656 typedef StencilTableReal<float> float_type;
│ │ │ │ -
657 typedef StencilTableReal<double> double_type;
│ │ │ │ -
658
│ │ │ │ -
659 union {
│ │ │ │ -
660 float_type * _fPtr;
│ │ │ │ -
661 double_type * _dPtr;
│ │ │ │ -
662 };
│ │ │ │ -
663
│ │ │ │ -
664 public:
│ │ │ │ -
665 StencilTablePtr() { _fPtr = 0; }
│ │ │ │ -
666 StencilTablePtr(float_type * ptr) { _fPtr = ptr; }
│ │ │ │ -
667 StencilTablePtr(double_type * ptr) { _dPtr = ptr; }
│ │ │ │ -
668
│ │ │ │ -
669 operator bool() const { return _fPtr != 0; }
│ │ │ │ -
670
│ │ │ │ -
671 void Set() { _fPtr = 0; }
│ │ │ │ -
672 void Set(float_type * ptr) { _fPtr = ptr; }
│ │ │ │ -
673 void Set(double_type * ptr) { _dPtr = ptr; }
│ │ │ │ -
674
│ │ │ │ -
675 template <typename REAL> StencilTableReal<REAL> * Get() const;
│ │ │ │ -
676 };
│ │ │ │ -
677
│ │ │ │ -
678private:
│ │ │ │ -
679
│ │ │ │ -
680 //
│ │ │ │ -
681 // Topology
│ │ │ │ -
682 //
│ │ │ │ -
683
│ │ │ │ -
684 int _maxValence, // highest vertex valence found in the mesh
│ │ │ │ -
685 _numPtexFaces; // total number of ptex faces
│ │ │ │ -
686
│ │ │ │ -
687 PatchArrayVector _patchArrays; // Vector of descriptors for arrays of patches
│ │ │ │ -
688
│ │ │ │ -
689 std::vector<Index> _patchVerts; // Indices of the control vertices of the patches
│ │ │ │ -
690
│ │ │ │ -
691 PatchParamTable _paramTable; // PatchParam bitfields (one per patch)
│ │ │ │ -
692
│ │ │ │ -
693 //
│ │ │ │ -
694 // Extraordinary vertex closed-form evaluation / endcap basis conversion
│ │ │ │ -
695 //
│ │ │ │ -
696 // XXXtakahito: these data will probably be replaced with mask coefficient or something
│ │ │ │ -
697 // SchemeWorker populates.
│ │ │ │ -
698 //
│ │ │ │ -
699 QuadOffsetsTable _quadOffsetsTable; // Quad offsets (for Gregory patches)
│ │ │ │ -
700 VertexValenceTable _vertexValenceTable; // Vertex valence table (for Gregory patches)
│ │ │ │ -
701
│ │ │ │ -
702 StencilTablePtr _localPointStencils; // local point conversion stencils
│ │ │ │ -
703 StencilTablePtr _localPointVaryingStencils; // local point varying stencils
│ │ │ │ -
704
│ │ │ │ -
705 //
│ │ │ │ -
706 // Varying data
│ │ │ │ -
707 //
│ │ │ │ -
708 PatchDescriptor _varyingDesc;
│ │ │ │ -
709
│ │ │ │ -
710 std::vector<Index> _varyingVerts;
│ │ │ │ -
711
│ │ │ │ -
712 //
│ │ │ │ -
713 // Face-varying data
│ │ │ │ -
714 //
│ │ │ │ -
715 FVarPatchChannelVector _fvarChannels;
│ │ │ │ -
716
│ │ │ │ -
717 std::vector<StencilTablePtr> _localPointFaceVaryingStencils;
│ │ │ │ -
718
│ │ │ │ -
719 //
│ │ │ │ -
720 // 'single-crease' patch sharpness tables
│ │ │ │ -
721 //
│ │ │ │ -
722 std::vector<Index> _sharpnessIndices; // Indices of single-crease sharpness (one per patch)
│ │ │ │ -
723 std::vector<float> _sharpnessValues; // Sharpness values.
│ │ │ │ -
724
│ │ │ │ -
725 //
│ │ │ │ -
726 // Construction history -- relevant to at least one public query:
│ │ │ │ -
727 //
│ │ │ │ -
728 unsigned int _isUniformLinear : 1;
│ │ │ │ -
729
│ │ │ │ -
730 //
│ │ │ │ -
731 // Precision -- only applies to local-point stencil tables
│ │ │ │ -
732 //
│ │ │ │ -
733 unsigned int _vertexPrecisionIsDouble : 1;
│ │ │ │ -
734 unsigned int _varyingPrecisionIsDouble : 1;
│ │ │ │ -
735 unsigned int _faceVaryingPrecisionIsDouble : 1;
│ │ │ │ -
736};
│ │ │ │ -
│ │ │ │ -
737
│ │ │ │ -
738
│ │ │ │ -
739//
│ │ │ │ -
740// Template specializations for float/double -- to be defined before used:
│ │ │ │ -
741//
│ │ │ │ -
742template <> inline StencilTableReal<float> *
│ │ │ │ -
743PatchTable::StencilTablePtr::Get<float>() const { return _fPtr; }
│ │ │ │ -
744
│ │ │ │ -
745template <> inline StencilTableReal<double> *
│ │ │ │ -
746PatchTable::StencilTablePtr::Get<double>() const { return _dPtr; }
│ │ │ │ -
747
│ │ │ │ -
│ │ │ │ -
748template <> inline bool
│ │ │ │ -
749PatchTable::LocalPointStencilPrecisionMatchesType<float>() const {
│ │ │ │ -
750 return !_vertexPrecisionIsDouble;
│ │ │ │ -
751}
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
752template <> inline bool
│ │ │ │ -
753PatchTable::LocalPointVaryingStencilPrecisionMatchesType<float>() const {
│ │ │ │ -
754 return !_varyingPrecisionIsDouble;
│ │ │ │ -
755}
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
756template <> inline bool
│ │ │ │ -
757PatchTable::LocalPointFaceVaryingStencilPrecisionMatchesType<float>() const {
│ │ │ │ -
758 return !_faceVaryingPrecisionIsDouble;
│ │ │ │ -
759}
│ │ │ │ -
│ │ │ │ -
760
│ │ │ │ -
│ │ │ │ -
761template <> inline bool
│ │ │ │ -
762PatchTable::LocalPointStencilPrecisionMatchesType<double>() const {
│ │ │ │ -
763 return _vertexPrecisionIsDouble;
│ │ │ │ -
764}
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
765template <> inline bool
│ │ │ │ -
766PatchTable::LocalPointVaryingStencilPrecisionMatchesType<double>() const {
│ │ │ │ -
767 return _varyingPrecisionIsDouble;
│ │ │ │ -
768}
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
769template <> inline bool
│ │ │ │ -
770PatchTable::LocalPointFaceVaryingStencilPrecisionMatchesType<double>() const {
│ │ │ │ -
771 return _faceVaryingPrecisionIsDouble;
│ │ │ │ -
772}
│ │ │ │ -
│ │ │ │ -
773
│ │ │ │ -
774//
│ │ │ │ -
775// StencilTable access -- backward compatible and generic:
│ │ │ │ -
776//
│ │ │ │ -
777inline StencilTable const *
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
779 assert(LocalPointStencilPrecisionMatchesType<float>());
│ │ │ │ -
780 return static_cast<StencilTable const *>(_localPointStencils.Get<float>());
│ │ │ │ -
781}
│ │ │ │ -
│ │ │ │ -
782inline StencilTable const *
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
784 assert(LocalPointVaryingStencilPrecisionMatchesType<float>());
│ │ │ │ -
785 return static_cast<StencilTable const *>(
│ │ │ │ -
786 _localPointVaryingStencils.Get<float>());
│ │ │ │ -
787}
│ │ │ │ -
│ │ │ │ -
788inline StencilTable const *
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
790 assert(LocalPointFaceVaryingStencilPrecisionMatchesType<float>());
│ │ │ │ -
791 if (channel >= 0 && channel < (int)_localPointFaceVaryingStencils.size()) {
│ │ │ │ -
792 return static_cast<StencilTable const *>(
│ │ │ │ -
793 _localPointFaceVaryingStencils[channel].Get<float>());
│ │ │ │ -
794 }
│ │ │ │ -
795 return NULL;
│ │ │ │ -
796}
│ │ │ │ -
│ │ │ │ -
797
│ │ │ │ -
798template <typename REAL>
│ │ │ │ -
799inline StencilTableReal<REAL> const *
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
801 assert(LocalPointStencilPrecisionMatchesType<REAL>());
│ │ │ │ -
802 return _localPointStencils.Get<REAL>();
│ │ │ │ -
803}
│ │ │ │ -
│ │ │ │ -
804template <typename REAL>
│ │ │ │ -
805inline StencilTableReal<REAL> const *
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
807 assert(LocalPointVaryingStencilPrecisionMatchesType<REAL>());
│ │ │ │ -
808 return _localPointVaryingStencils.Get<REAL>();
│ │ │ │ -
809}
│ │ │ │ -
│ │ │ │ -
810template <typename REAL>
│ │ │ │ -
811inline StencilTableReal<REAL> const *
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
813 assert(LocalPointFaceVaryingStencilPrecisionMatchesType<REAL>());
│ │ │ │ -
814 if (channel >= 0 && channel < (int)_localPointFaceVaryingStencils.size()) {
│ │ │ │ -
815 return _localPointFaceVaryingStencils[channel].Get<REAL>();
│ │ │ │ -
816 }
│ │ │ │ -
817 return NULL;
│ │ │ │ -
818}
│ │ │ │ -
│ │ │ │ -
819
│ │ │ │ -
820
│ │ │ │ -
821//
│ │ │ │ -
822// Computation of local point values:
│ │ │ │ -
823//
│ │ │ │ -
824template <class T>
│ │ │ │ -
825inline void
│ │ │ │ -
│ │ │ │ -
826PatchTable::ComputeLocalPointValues(T const *src, T *dst) const {
│ │ │ │ -
827 assert(LocalPointStencilPrecisionMatchesType<float>());
│ │ │ │ -
828 if (_localPointStencils) {
│ │ │ │ -
829 _localPointStencils.Get<float>()->UpdateValues(src, dst);
│ │ │ │ -
830 }
│ │ │ │ -
831}
│ │ │ │ -
│ │ │ │ -
832
│ │ │ │ -
833template <class T>
│ │ │ │ -
834inline void
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
836 assert(LocalPointVaryingStencilPrecisionMatchesType<float>());
│ │ │ │ -
837 if (_localPointVaryingStencils) {
│ │ │ │ -
838 _localPointVaryingStencils.Get<float>()->UpdateValues(src, dst);
│ │ │ │ -
839 }
│ │ │ │ -
840}
│ │ │ │ -
│ │ │ │ -
841
│ │ │ │ -
842template <class T>
│ │ │ │ -
843inline void
│ │ │ │ -
│ │ │ │ -
844PatchTable::ComputeLocalPointValuesFaceVarying(T const *src, T *dst, int channel) const {
│ │ │ │ -
845 assert(LocalPointFaceVaryingStencilPrecisionMatchesType<float>());
│ │ │ │ -
846 if (channel >= 0 && channel < (int)_localPointFaceVaryingStencils.size()) {
│ │ │ │ -
847 if (_localPointFaceVaryingStencils[channel]) {
│ │ │ │ -
848 _localPointFaceVaryingStencils[channel].Get<float>()->UpdateValues(src, dst);
│ │ │ │ -
849 }
│ │ │ │ -
850 }
│ │ │ │ -
851}
│ │ │ │ -
│ │ │ │ -
852
│ │ │ │ -
853
│ │ │ │ -
854//
│ │ │ │ -
855// Basis evaluation overloads
│ │ │ │ -
856//
│ │ │ │ -
857inline void
│ │ │ │ -
│ │ │ │ -
858PatchTable::EvaluateBasis(PatchHandle const & handle, float u, float v,
│ │ │ │ -
859 float wP[], float wDu[], float wDv[],
│ │ │ │ -
860 float wDuu[], float wDuv[], float wDvv[]) const {
│ │ │ │ -
861
│ │ │ │ -
862 EvaluateBasis<float>(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv);
│ │ │ │ -
863}
│ │ │ │ -
│ │ │ │ -
864inline void
│ │ │ │ -
│ │ │ │ -
865PatchTable::EvaluateBasis(PatchHandle const & handle, double u, double v,
│ │ │ │ -
866 double wP[], double wDu[], double wDv[],
│ │ │ │ -
867 double wDuu[], double wDuv[], double wDvv[]) const {
│ │ │ │ -
868
│ │ │ │ -
869 EvaluateBasis<double>(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv);
│ │ │ │ -
870}
│ │ │ │ -
│ │ │ │ -
871
│ │ │ │ -
872inline void
│ │ │ │ -
│ │ │ │ -
873PatchTable::EvaluateBasisVarying(PatchHandle const & handle, float u, float v,
│ │ │ │ -
874 float wP[], float wDu[], float wDv[],
│ │ │ │ -
875 float wDuu[], float wDuv[], float wDvv[]) const {
│ │ │ │ -
876
│ │ │ │ -
877 EvaluateBasisVarying<float>(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv);
│ │ │ │ -
878}
│ │ │ │ -
│ │ │ │ -
879inline void
│ │ │ │ -
│ │ │ │ -
880PatchTable::EvaluateBasisVarying(PatchHandle const & handle, double u, double v,
│ │ │ │ -
881 double wP[], double wDu[], double wDv[],
│ │ │ │ -
882 double wDuu[], double wDuv[], double wDvv[]) const {
│ │ │ │ -
883
│ │ │ │ -
884 EvaluateBasisVarying<double>(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv);
│ │ │ │ -
885}
│ │ │ │ -
│ │ │ │ -
886
│ │ │ │ -
887inline void
│ │ │ │ -
│ │ │ │ -
888PatchTable::EvaluateBasisFaceVarying(PatchHandle const & handle, float u, float v,
│ │ │ │ -
889 float wP[], float wDu[], float wDv[],
│ │ │ │ -
890 float wDuu[], float wDuv[], float wDvv[], int channel) const {
│ │ │ │ -
891
│ │ │ │ -
892 EvaluateBasisFaceVarying<float>(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv, channel);
│ │ │ │ -
893}
│ │ │ │ -
│ │ │ │ -
894inline void
│ │ │ │ -
│ │ │ │ -
895PatchTable::EvaluateBasisFaceVarying(PatchHandle const & handle, double u, double v,
│ │ │ │ -
896 double wP[], double wDu[], double wDv[],
│ │ │ │ -
897 double wDuu[], double wDuv[], double wDvv[], int channel) const {
│ │ │ │ -
898
│ │ │ │ -
899 EvaluateBasisFaceVarying<double>(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv, channel);
│ │ │ │ -
900}
│ │ │ │ -
│ │ │ │ -
901
│ │ │ │ -
902} // end namespace Far
│ │ │ │ -
903
│ │ │ │ -
904} // end namespace OPENSUBDIV_VERSION
│ │ │ │ -
905using namespace OPENSUBDIV_VERSION;
│ │ │ │ -
906
│ │ │ │ -
907} // end namespace OpenSubdiv
│ │ │ │ -
908
│ │ │ │ -
909#endif /* OPENSUBDIV3_FAR_PATCH_TABLE */
│ │ │ │ +
234
│ │ │ │ +
235#endif /* OPENSUBDIV3_FAR_PATCH_TABLE_FACTORY_H */
│ │ │ │ │ │ │ │
Vtr::ConstIndexArray ConstIndexArray
Definition types.h:47
│ │ │ │ -
std::vector< PatchParam > PatchParamTable
Definition patchParam.h:243
│ │ │ │ - │ │ │ │ - │ │ │ │ -
Vtr::Array< PatchParam > PatchParamArray
Definition patchParam.h:245
│ │ │ │ -
std::vector< PatchArray > PatchArrayVector
Definition types.h:132
│ │ │ │ - │ │ │ │ -
An quadtree-based map connecting coarse faces to their sub-patches.
Definition patchMap.h:49
│ │ │ │ - │ │ │ │ -
Container for arrays of parametric patches.
Definition patchTable.h:55
│ │ │ │ -
ConstIndexArray GetPatchArrayVaryingVertices(int array) const
Returns the varying vertex indices for the patches in array.
│ │ │ │ - │ │ │ │ -
PatchVertsTable const & GetPatchControlVerticesTable() const
Get the table of patch control vertices.
Definition patchTable.h:378
│ │ │ │ -
void ComputeLocalPointValuesFaceVarying(T const *src, T *dst, int channel=0) const
Updates local point face-varying values.
Definition patchTable.h:844
│ │ │ │ -
ConstIndexArray GetVaryingVertices() const
Returns an array of varying vertex indices for the patches.
│ │ │ │ -
void ComputeLocalPointValuesVarying(T const *src, T *dst) const
Updates local point varying values.
Definition patchTable.h:835
│ │ │ │ -
ConstIndexArray GetPatchVaryingVertices(PatchHandle const &handle) const
Returns the varying vertex indices for a given patch.
│ │ │ │ -
bool IsFeatureAdaptive() const
True if the patches are of feature adaptive types.
│ │ │ │ -
int GetMaxValence() const
Returns max vertex valence.
Definition patchTable.h:92
│ │ │ │ -
StencilTableReal< REAL > const * GetLocalPointStencilTable() const
Returns the stencil table to compute local point vertex values.
│ │ │ │ -
StencilTable const * GetLocalPointStencilTable() const
Returns the stencil table to compute local point vertex values.
Definition patchTable.h:778
│ │ │ │ -
PatchParamArray getPatchParams(int arrayIndex)
│ │ │ │ -
ConstIndexArray GetPatchArrayFVarValues(int array, int channel=0) const
Returns the value indices for the patches in array in channel.
│ │ │ │ -
std::vector< float > const & GetSharpnessValues() const
Returns sharpness values table.
Definition patchTable.h:387
│ │ │ │ - │ │ │ │ -
PatchParam GetPatchFVarPatchParam(int array, int patch, int channel=0) const
Returns the face-varying params for a given patch channel.
│ │ │ │ -
ConstIndexArray GetPatchVaryingVertices(int array, int patch) const
Returns the varying vertex indices for a given patch.
│ │ │ │ -
PatchTable(PatchTable const &src)
Copy constructor.
│ │ │ │ -
int GetNumPatchArrays() const
Returns the number of patch arrays in the table.
│ │ │ │ -
ConstIndexArray GetPatchVertices(PatchHandle const &handle) const
Returns the control vertex indices for the patch identified by handle.
│ │ │ │ - │ │ │ │ -
bool LocalPointFaceVaryingStencilPrecisionMatchesType() const
Tests if the precision of the stencil table to compute local point face-varying values matches the gi...
│ │ │ │ -
PatchParamTable const & GetPatchParamTable() const
Returns the PatchParamTable (PatchParams order matches patch array sorting)
Definition patchTable.h:381
│ │ │ │ -
VertexValenceTable const & GetVertexValenceTable() const
Returns the 'VertexValences' table (vertex neighborhoods table)
Definition patchTable.h:267
│ │ │ │ -
StencilTable const * GetLocalPointFaceVaryingStencilTable(int channel=0) const
Returns the stencil table to compute local point face-varying values.
Definition patchTable.h:789
│ │ │ │ -
int GetNumControlVertices(int array) const
Returns the number of control vertices in array.
│ │ │ │ - │ │ │ │ -
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
Evaluate basis functions for a face-varying value and derivatives at a given (u,v) parametric locatio...
│ │ │ │ -
ConstQuadOffsetsArray GetPatchQuadOffsets(PatchHandle const &handle) const
Returns the 'QuadOffsets' for the Gregory patch identified by handle.
│ │ │ │ -
PatchDescriptor GetFVarPatchDescriptorIrregular(int channel=0) const
Returns the irregular patch descriptor for channel.
│ │ │ │ -
float GetSingleCreasePatchSharpnessValue(int array, int patch) const
Returns the crease sharpness for the patch in array if it is a single-crease patch,...
│ │ │ │ - │ │ │ │ -
void ComputeLocalPointValues(T const *src, T *dst) const
Updates local point vertex values.
Definition patchTable.h:826
│ │ │ │ -
float GetSingleCreasePatchSharpnessValue(PatchHandle const &handle) const
Returns the crease sharpness for the patch identified by handle if it is a single-crease patch,...
│ │ │ │ -
PatchParam GetPatchParam(int array, int patch) const
Returns the PatchParam for patch in array.
│ │ │ │ -
ConstIndexArray GetPatchFVarValues(int array, int patch, int channel=0) const
Returns the value indices for a given patch in channel.
│ │ │ │ -
PatchDescriptor GetFVarPatchDescriptorRegular(int channel=0) const
Returns the regular patch descriptor for channel.
│ │ │ │ -
PatchDescriptor GetPatchDescriptor(PatchHandle const &handle) const
Returns the PatchDescriptor for the patch identified by handle.
│ │ │ │ - │ │ │ │ -
QuadOffsetsTable const & GetQuadOffsetsTable() const
Returns the quad-offsets table.
Definition patchTable.h:392
│ │ │ │ -
int GetNumPatches(int array) const
Returns the number of patches in array.
│ │ │ │ -
PatchDescriptor GetVaryingPatchDescriptor() const
Returns the varying patch descriptor.
│ │ │ │ -
ConstIndexArray GetPatchFVarValues(PatchHandle const &handle, int channel=0) const
Returns the value indices for a given patch in channel.
│ │ │ │ -
ConstPatchParamArray const GetPatchParams(int array) const
Returns the PatchParams for the patches in array.
│ │ │ │ -
int GetNumControlVerticesTotal() const
Returns the total number of control vertex indices in the table.
Definition patchTable.h:84
│ │ │ │ -
int GetNumFVarChannels() const
Returns the number of face-varying channels.
│ │ │ │ -
ConstPatchParamArray GetPatchArrayFVarPatchParams(int array, int channel=0) const
Returns the face-varying for a given patch in array in channel.
│ │ │ │ -
Index getPatchIndex(int array, int patch) const
│ │ │ │ -
int GetNumLocalPoints() const
Returns the number of local vertex points.
│ │ │ │ -
bool LocalPointVaryingStencilPrecisionMatchesType() const
Tests if the precision of the stencil table to compute local point varying values matches the given f...
│ │ │ │ -
ConstIndexArray GetPatchArrayVertices(int array) const
Returns the control vertex indices for the patches in array.
│ │ │ │ -
int GetNumPtexFaces() const
Returns the total number of ptex faces in the mesh.
Definition patchTable.h:95
│ │ │ │ -
ConstIndexArray GetFVarValues(int channel=0) const
Returns an array of value indices for the patches in channel.
│ │ │ │ -
Vtr::ConstArray< unsigned int > ConstQuadOffsetsArray
Accessors for the gregory patch evaluation buffers. These methods will be deprecated.
Definition patchTable.h:259
│ │ │ │ -
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
Evaluate basis functions for position and derivatives at a given (u,v) parametric location of a patch...
│ │ │ │ -
StencilTableReal< REAL > const * GetLocalPointFaceVaryingStencilTable(int channel=0) const
Returns the stencil table to compute local point face-varying values.
│ │ │ │ -
int GetNumPatchesTotal() const
Returns the total number of patches stored in the table.
│ │ │ │ -
PatchParam GetPatchParam(PatchHandle const &handle) const
Returns a PatchParam for the patch identified by handle.
│ │ │ │ - │ │ │ │ -
Sdc::Options::FVarLinearInterpolation GetFVarChannelLinearInterpolation(int channel=0) const
Deprecated.
│ │ │ │ -
std::vector< Index > const & GetSharpnessIndexTable() const
Returns a sharpness index table for each patch (if exists)
Definition patchTable.h:384
│ │ │ │ -
PatchDescriptor GetPatchArrayDescriptor(int array) const
Returns the PatchDescriptor for the patches in array.
│ │ │ │ - │ │ │ │ -
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
Evaluate basis functions for a varying value and derivatives at a given (u,v) parametric location of ...
│ │ │ │ -
StencilTable const * GetLocalPointVaryingStencilTable() const
Returns the stencil table to compute local point varying values.
Definition patchTable.h:783
│ │ │ │ -
std::vector< unsigned int > QuadOffsetsTable
Definition patchTable.h:389
│ │ │ │ -
ConstIndexArray GetPatchVertices(int array, int patch) const
Returns the control vertex indices for patch in array.
│ │ │ │ -
PatchParam GetPatchFVarPatchParam(PatchHandle const &handle, int channel=0) const
Returns the value indices for a given patch in channel.
│ │ │ │ -
int GetFVarValueStride(int channel=0) const
Returns the stride between patches in the value index array of channel.
│ │ │ │ -
ConstPatchParamArray GetFVarPatchParams(int channel=0) const
Returns an array of face-varying patch param for channel.
│ │ │ │ -
PatchDescriptor GetFVarPatchDescriptor(int channel=0) const
Returns the default/irregular patch descriptor for channel.
│ │ │ │ -
int GetNumLocalPointsVarying() const
Returns the number of local varying points.
│ │ │ │ -
bool LocalPointStencilPrecisionMatchesType() const
Tests if the precision of the stencil table to compute local point vertex values matches the given fl...
│ │ │ │ -
StencilTableReal< REAL > const * GetLocalPointVaryingStencilTable() const
Returns the stencil table to compute local point varying values.
│ │ │ │ -
int GetNumLocalPointsFaceVarying(int channel=0) const
Returns the number of local face-varying points for channel.
│ │ │ │ -
Handle that can be used as unique patch identifier within PatchTable.
Definition patchTable.h:60
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
Stencil table class wrapping the template for compatibility.
│ │ │ │ - │ │ │ │ +
Container for arrays of parametric patches.
Definition patchTable.h:55
│ │ │ │ +
Factory for constructing a PatchTable from a TopologyRefiner.
│ │ │ │ + │ │ │ │ +
static PatchTable * Create(TopologyRefiner const &refiner, Options options=Options(), ConstIndexArray selectedFaces=ConstIndexArray())
Instantiates a PatchTable from a client-provided TopologyRefiner.
│ │ │ │ + │ │ │ │ +
unsigned int generateVaryingTables
Generate varying patch tables.
│ │ │ │ +
unsigned int generateLegacySharpCornerPatches
Generate sharp regular patches at smooth corners (legacy)
│ │ │ │ + │ │ │ │ +
TopologyRefiner::AdaptiveOptions GetRefineAdaptiveOptions() const
Determine adaptive refinement options to match assigned patch options.
│ │ │ │ +
unsigned int maxIsolationLevel
Cap adaptive feature isolation to the given level (max. 10)
│ │ │ │ + │ │ │ │ +
unsigned int generateFVarLegacyLinearPatches
Generate all linear face-varying patches (legacy)
│ │ │ │ +
void SetPatchPrecision()
Set precision of vertex patches.
│ │ │ │ +
unsigned int fvarPatchPrecisionDouble
Generate double-precision stencils for face-varying patches.
│ │ │ │ +
void SetMaxIsolationLevel(unsigned int level)
Set maximum isolation level.
│ │ │ │ + │ │ │ │ +
int const * fvarChannelIndices
List containing the indices of the channels selected for the factory.
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
unsigned int generateVaryingLocalPoints
Generate local points with varying patches.
│ │ │ │ +
unsigned int includeFVarBaseLevelIndices
Include base level in face-varying patch point indices (Uniform mode only)
│ │ │ │ +
unsigned int generateAllLevels
Generate levels from 'firstLevel' to 'maxLevel' (Uniform mode only)
│ │ │ │ +
unsigned int patchPrecisionDouble
Generate double-precision stencils for vertex patches.
│ │ │ │ +
unsigned int generateFVarTables
Generate face-varying patch tables.
│ │ │ │ +
unsigned int includeBaseLevelIndices
Include base level in patch point indices (Uniform mode only)
│ │ │ │ +
void SetFVarPatchPrecision()
Set precision of face-varying patches.
│ │ │ │ +
int numFVarChannels
Number of channel indices and interpolation modes passed.
│ │ │ │ +
unsigned int triangulateQuads
Triangulate 'QUADS' primitives (Uniform mode only)
│ │ │ │ +
EndCapType
Choice for approximating irregular patches (end-caps)
│ │ │ │ +
@ ENDCAP_LEGACY_GREGORY
legacy option for 2.x style Gregory patches (Catmark only)
│ │ │ │ +
@ ENDCAP_GREGORY_BASIS
use Gregory patches (highest quality, recommended default)
│ │ │ │ + │ │ │ │ +
@ ENDCAP_BILINEAR_BASIS
use linear patches (simple quads or tris)
│ │ │ │ +
@ ENDCAP_BSPLINE_BASIS
use BSpline-like patches (same patch type as regular)
│ │ │ │ + │ │ │ │ +
Obsolete internal struct not intended for public use – due to be deprecated.
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
Stores topology data for a specified set of refinement options.
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── encoding │ │ │ │ │ @@ -1 +1 @@ │ │ │ │ │ -us-ascii │ │ │ │ │ +utf-8 │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,12 +1,12 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ -patchTable.h │ │ │ │ │ +patchTableFactory.h │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// │ │ │ │ │ 2// Copyright 2013 Pixar │ │ │ │ │ 3// │ │ │ │ │ 4// Licensed under the Apache License, Version 2.0 (the "Apache License") │ │ │ │ │ 5// with the following modification; you may not use this file except in │ │ │ │ │ 6// compliance with the Apache License and the following modification to it: │ │ │ │ │ @@ -24,1002 +24,409 @@ │ │ │ │ │ 18// Unless required by applicable law or agreed to in writing, software │ │ │ │ │ 19// distributed under the Apache License with the above modification is │ │ │ │ │ 20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY │ │ │ │ │ 21// KIND, either express or implied. See the Apache License for the specific │ │ │ │ │ 22// language governing permissions and limitations under the Apache License. │ │ │ │ │ 23// │ │ │ │ │ 24 │ │ │ │ │ -25#ifndef OPENSUBDIV3_FAR_PATCH_TABLE_H │ │ │ │ │ -26#define OPENSUBDIV3_FAR_PATCH_TABLE_H │ │ │ │ │ +25#ifndef OPENSUBDIV3_FAR_PATCH_TABLE_FACTORY_H │ │ │ │ │ +26#define OPENSUBDIV3_FAR_PATCH_TABLE_FACTORY_H │ │ │ │ │ 27 │ │ │ │ │ 28#include "../version.h" │ │ │ │ │ 29 │ │ │ │ │ -30#include "../far/patchDescriptor.h" │ │ │ │ │ -31#include "../far/patchParam.h" │ │ │ │ │ -32#include "../far/stencilTable.h" │ │ │ │ │ -33 │ │ │ │ │ -34#include "../sdc/options.h" │ │ │ │ │ +30#include "../far/topologyRefiner.h" │ │ │ │ │ +31#include "../far/patchTable.h" │ │ │ │ │ +32 │ │ │ │ │ +33namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ +34namespace OPENSUBDIV_VERSION { │ │ │ │ │ 35 │ │ │ │ │ -36#include │ │ │ │ │ +36namespace Far { │ │ │ │ │ 37 │ │ │ │ │ -38namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ -39namespace OPENSUBDIV_VERSION { │ │ │ │ │ -40 │ │ │ │ │ -41namespace Far { │ │ │ │ │ +_4_0class _P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y { │ │ │ │ │ +41public: │ │ │ │ │ 42 │ │ │ │ │ -_5_5class _P_a_t_c_h_T_a_b_l_e { │ │ │ │ │ -56 │ │ │ │ │ -57public: │ │ │ │ │ -58 │ │ │ │ │ -_6_0 class _P_a_t_c_h_H_a_n_d_l_e { │ │ │ │ │ -61 // XXXX manuelk members will eventually be made private │ │ │ │ │ -62 public: │ │ │ │ │ -63 │ │ │ │ │ -_6_4 friend class _P_a_t_c_h_T_a_b_l_e; │ │ │ │ │ -_6_5 friend class _P_a_t_c_h_M_a_p; │ │ │ │ │ -66 │ │ │ │ │ -_6_7 _I_n_d_e_x _a_r_r_a_y_I_n_d_e_x, // Array index of the patch │ │ │ │ │ -_6_8 _p_a_t_c_h_I_n_d_e_x, // Absolute Index of the patch │ │ │ │ │ -_6_9 _v_e_r_t_I_n_d_e_x; // Relative offset to the first CV of the patch in array │ │ │ │ │ -70 }; │ │ │ │ │ -71 │ │ │ │ │ -72public: │ │ │ │ │ -73 │ │ │ │ │ -_7_5 _P_a_t_c_h_T_a_b_l_e(_P_a_t_c_h_T_a_b_l_e const & src); │ │ │ │ │ -76 │ │ │ │ │ -_7_8 _~_P_a_t_c_h_T_a_b_l_e(); │ │ │ │ │ -79 │ │ │ │ │ -_8_1 bool _I_s_F_e_a_t_u_r_e_A_d_a_p_t_i_v_e() const; │ │ │ │ │ -82 │ │ │ │ │ -_8_4 int _G_e_t_N_u_m_C_o_n_t_r_o_l_V_e_r_t_i_c_e_s_T_o_t_a_l() const { │ │ │ │ │ -85 return (int)_patchVerts.size(); │ │ │ │ │ -86 } │ │ │ │ │ -87 │ │ │ │ │ -_8_9 int _G_e_t_N_u_m_P_a_t_c_h_e_s_T_o_t_a_l() const; │ │ │ │ │ -90 │ │ │ │ │ -_9_2 int _G_e_t_M_a_x_V_a_l_e_n_c_e() const { return _maxValence; } │ │ │ │ │ -93 │ │ │ │ │ -_9_5 int _G_e_t_N_u_m_P_t_e_x_F_a_c_e_s() const { return _numPtexFaces; } │ │ │ │ │ -96 │ │ │ │ │ -97 │ │ │ │ │ -99 │ │ │ │ │ -105 │ │ │ │ │ -_1_0_7 _P_a_t_c_h_D_e_s_c_r_i_p_t_o_r _G_e_t_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r(_P_a_t_c_h_H_a_n_d_l_e const & handle) const; │ │ │ │ │ -108 │ │ │ │ │ -_1_1_0 _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y _G_e_t_P_a_t_c_h_V_e_r_t_i_c_e_s(_P_a_t_c_h_H_a_n_d_l_e const & handle) const; │ │ │ │ │ -111 │ │ │ │ │ -_1_1_3 _P_a_t_c_h_P_a_r_a_m _G_e_t_P_a_t_c_h_P_a_r_a_m(_P_a_t_c_h_H_a_n_d_l_e const & handle) const; │ │ │ │ │ +_4_5 struct _O_p_t_i_o_n_s { │ │ │ │ │ +46 │ │ │ │ │ +_5_5 enum _E_n_d_C_a_p_T_y_p_e { │ │ │ │ │ +_5_6 _E_N_D_C_A_P___N_O_N_E = 0, │ │ │ │ │ +_5_7 _E_N_D_C_A_P___B_I_L_I_N_E_A_R___B_A_S_I_S, │ │ │ │ │ +_5_8 _E_N_D_C_A_P___B_S_P_L_I_N_E___B_A_S_I_S, │ │ │ │ │ +_5_9 _E_N_D_C_A_P___G_R_E_G_O_R_Y___B_A_S_I_S, │ │ │ │ │ +60 _E_N_D_C_A_P___L_E_G_A_C_Y___G_R_E_G_O_R_Y │ │ │ │ │ +_6_1 }; │ │ │ │ │ +62 │ │ │ │ │ +_6_3 _O_p_t_i_o_n_s(unsigned int maxIsolation=10) : │ │ │ │ │ +64 _g_e_n_e_r_a_t_e_A_l_l_L_e_v_e_l_s(false), │ │ │ │ │ +65 _i_n_c_l_u_d_e_B_a_s_e_L_e_v_e_l_I_n_d_i_c_e_s(true), │ │ │ │ │ +66 _i_n_c_l_u_d_e_F_V_a_r_B_a_s_e_L_e_v_e_l_I_n_d_i_c_e_s(false), │ │ │ │ │ +67 _t_r_i_a_n_g_u_l_a_t_e_Q_u_a_d_s(false), │ │ │ │ │ +68 _u_s_e_S_i_n_g_l_e_C_r_e_a_s_e_P_a_t_c_h(false), │ │ │ │ │ +69 _u_s_e_I_n_f_S_h_a_r_p_P_a_t_c_h(false), │ │ │ │ │ +70 _m_a_x_I_s_o_l_a_t_i_o_n_L_e_v_e_l(maxIsolation & 0xf), │ │ │ │ │ +71 _e_n_d_C_a_p_T_y_p_e(_E_N_D_C_A_P___G_R_E_G_O_R_Y___B_A_S_I_S), │ │ │ │ │ +72 _s_h_a_r_e_E_n_d_C_a_p_P_a_t_c_h_P_o_i_n_t_s(true), │ │ │ │ │ +73 _g_e_n_e_r_a_t_e_V_a_r_y_i_n_g_T_a_b_l_e_s(true), │ │ │ │ │ +74 _g_e_n_e_r_a_t_e_V_a_r_y_i_n_g_L_o_c_a_l_P_o_i_n_t_s(true), │ │ │ │ │ +75 _g_e_n_e_r_a_t_e_F_V_a_r_T_a_b_l_e_s(false), │ │ │ │ │ +76 _p_a_t_c_h_P_r_e_c_i_s_i_o_n_D_o_u_b_l_e(false), │ │ │ │ │ +77 _f_v_a_r_P_a_t_c_h_P_r_e_c_i_s_i_o_n_D_o_u_b_l_e(false), │ │ │ │ │ +78 _g_e_n_e_r_a_t_e_F_V_a_r_L_e_g_a_c_y_L_i_n_e_a_r_P_a_t_c_h_e_s(true), │ │ │ │ │ +79 _g_e_n_e_r_a_t_e_L_e_g_a_c_y_S_h_a_r_p_C_o_r_n_e_r_P_a_t_c_h_e_s(true), │ │ │ │ │ +80 _n_u_m_F_V_a_r_C_h_a_n_n_e_l_s(-1), │ │ │ │ │ +81 _f_v_a_r_C_h_a_n_n_e_l_I_n_d_i_c_e_s(0) │ │ │ │ │ +82 { } │ │ │ │ │ +83 │ │ │ │ │ +_8_5 _E_n_d_C_a_p_T_y_p_e _G_e_t_E_n_d_C_a_p_T_y_p_e() const { return (_E_n_d_C_a_p_T_y_p_e)_e_n_d_C_a_p_T_y_p_e; } │ │ │ │ │ +86 │ │ │ │ │ +_8_8 void _S_e_t_E_n_d_C_a_p_T_y_p_e(_E_n_d_C_a_p_T_y_p_e e) { _e_n_d_C_a_p_T_y_p_e = e & 0x7; } │ │ │ │ │ +89 │ │ │ │ │ +_9_1 void _S_e_t_M_a_x_I_s_o_l_a_t_i_o_n_L_e_v_e_l(unsigned int level) { _m_a_x_I_s_o_l_a_t_i_o_n_L_e_v_e_l = level & │ │ │ │ │ +0xf; } │ │ │ │ │ +92 │ │ │ │ │ +_9_4 template void _S_e_t_P_a_t_c_h_P_r_e_c_i_s_i_o_n(); │ │ │ │ │ +95 │ │ │ │ │ +_9_7 template void _S_e_t_F_V_a_r_P_a_t_c_h_P_r_e_c_i_s_i_o_n(); │ │ │ │ │ +98 │ │ │ │ │ +_1_0_0 _T_o_p_o_l_o_g_y_R_e_f_i_n_e_r_:_:_A_d_a_p_t_i_v_e_O_p_t_i_o_n_s _G_e_t_R_e_f_i_n_e_A_d_a_p_t_i_v_e_O_p_t_i_o_n_s() const { │ │ │ │ │ +101 _T_o_p_o_l_o_g_y_R_e_f_i_n_e_r_:_:_A_d_a_p_t_i_v_e_O_p_t_i_o_n_s adaptiveOptions(_m_a_x_I_s_o_l_a_t_i_o_n_L_e_v_e_l); │ │ │ │ │ +102 │ │ │ │ │ +103 adaptiveOptions._u_s_e_I_n_f_S_h_a_r_p_P_a_t_c_h = _u_s_e_I_n_f_S_h_a_r_p_P_a_t_c_h; │ │ │ │ │ +104 adaptiveOptions._u_s_e_S_i_n_g_l_e_C_r_e_a_s_e_P_a_t_c_h = _u_s_e_S_i_n_g_l_e_C_r_e_a_s_e_P_a_t_c_h; │ │ │ │ │ +105 adaptiveOptions._c_o_n_s_i_d_e_r_F_V_a_r_C_h_a_n_n_e_l_s = _g_e_n_e_r_a_t_e_F_V_a_r_T_a_b_l_e_s && │ │ │ │ │ +106 !_g_e_n_e_r_a_t_e_F_V_a_r_L_e_g_a_c_y_L_i_n_e_a_r_P_a_t_c_h_e_s; │ │ │ │ │ +107 return adaptiveOptions; │ │ │ │ │ +108 } │ │ │ │ │ +109 │ │ │ │ │ +_1_1_0 unsigned int _g_e_n_e_r_a_t_e_A_l_l_L_e_v_e_l_s : 1, │ │ │ │ │ +_1_1_1 _i_n_c_l_u_d_e_B_a_s_e_L_e_v_e_l_I_n_d_i_c_e_s : 1, │ │ │ │ │ +_1_1_2 _i_n_c_l_u_d_e_F_V_a_r_B_a_s_e_L_e_v_e_l_I_n_d_i_c_e_s : 1, │ │ │ │ │ +_1_1_3 _t_r_i_a_n_g_u_l_a_t_e_Q_u_a_d_s : 1, │ │ │ │ │ 114 │ │ │ │ │ -_1_1_6 _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y _G_e_t_P_a_t_c_h_V_e_r_t_i_c_e_s(int array, int patch) const; │ │ │ │ │ -117 │ │ │ │ │ -_1_1_9 _P_a_t_c_h_P_a_r_a_m _G_e_t_P_a_t_c_h_P_a_r_a_m(int array, int patch) const; │ │ │ │ │ -121 │ │ │ │ │ -122 │ │ │ │ │ -124 │ │ │ │ │ +_1_1_5 _u_s_e_S_i_n_g_l_e_C_r_e_a_s_e_P_a_t_c_h : 1, │ │ │ │ │ +_1_1_6 _u_s_e_I_n_f_S_h_a_r_p_P_a_t_c_h : 1, │ │ │ │ │ +_1_1_7 _m_a_x_I_s_o_l_a_t_i_o_n_L_e_v_e_l : 4, │ │ │ │ │ +118 │ │ │ │ │ +119 // end-capping │ │ │ │ │ +_1_2_0 _e_n_d_C_a_p_T_y_p_e : 3, │ │ │ │ │ +_1_2_1 _s_h_a_r_e_E_n_d_C_a_p_P_a_t_c_h_P_o_i_n_t_s : 1, │ │ │ │ │ +123 │ │ │ │ │ +124 // varying │ │ │ │ │ +_1_2_5 _g_e_n_e_r_a_t_e_V_a_r_y_i_n_g_T_a_b_l_e_s : 1, │ │ │ │ │ +_1_2_6 _g_e_n_e_r_a_t_e_V_a_r_y_i_n_g_L_o_c_a_l_P_o_i_n_t_s : 1, │ │ │ │ │ +127 │ │ │ │ │ +128 // face-varying │ │ │ │ │ +_1_2_9 _g_e_n_e_r_a_t_e_F_V_a_r_T_a_b_l_e_s : 1, │ │ │ │ │ 130 │ │ │ │ │ -_1_3_2 int _G_e_t_N_u_m_P_a_t_c_h_A_r_r_a_y_s() const; │ │ │ │ │ -133 │ │ │ │ │ -_1_3_5 int _G_e_t_N_u_m_P_a_t_c_h_e_s(int array) const; │ │ │ │ │ -136 │ │ │ │ │ -_1_3_8 int _G_e_t_N_u_m_C_o_n_t_r_o_l_V_e_r_t_i_c_e_s(int array) const; │ │ │ │ │ -139 │ │ │ │ │ -_1_4_1 _P_a_t_c_h_D_e_s_c_r_i_p_t_o_r _G_e_t_P_a_t_c_h_A_r_r_a_y_D_e_s_c_r_i_p_t_o_r(int array) const; │ │ │ │ │ +131 // precision │ │ │ │ │ +_1_3_2 _p_a_t_c_h_P_r_e_c_i_s_i_o_n_D_o_u_b_l_e : 1, │ │ │ │ │ +_1_3_3 _f_v_a_r_P_a_t_c_h_P_r_e_c_i_s_i_o_n_D_o_u_b_l_e : 1, │ │ │ │ │ +134 │ │ │ │ │ +135 // legacy behaviors (default to true) │ │ │ │ │ +_1_3_6 _g_e_n_e_r_a_t_e_F_V_a_r_L_e_g_a_c_y_L_i_n_e_a_r_P_a_t_c_h_e_s : 1, │ │ │ │ │ +_1_3_7 _g_e_n_e_r_a_t_e_L_e_g_a_c_y_S_h_a_r_p_C_o_r_n_e_r_P_a_t_c_h_e_s : 1; │ │ │ │ │ +138 │ │ │ │ │ +_1_3_9 int _n_u_m_F_V_a_r_C_h_a_n_n_e_l_s; │ │ │ │ │ +_1_4_0 int const * _f_v_a_r_C_h_a_n_n_e_l_I_n_d_i_c_e_s; │ │ │ │ │ +141 }; │ │ │ │ │ 142 │ │ │ │ │ -_1_4_4 _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y _G_e_t_P_a_t_c_h_A_r_r_a_y_V_e_r_t_i_c_e_s(int array) const; │ │ │ │ │ -145 │ │ │ │ │ -_1_4_7 _C_o_n_s_t_P_a_t_c_h_P_a_r_a_m_A_r_r_a_y const _G_e_t_P_a_t_c_h_P_a_r_a_m_s(int array) const; │ │ │ │ │ -149 │ │ │ │ │ -150 │ │ │ │ │ -152 │ │ │ │ │ -159 │ │ │ │ │ -_1_6_1 int _G_e_t_N_u_m_L_o_c_a_l_P_o_i_n_t_s() const; │ │ │ │ │ -162 │ │ │ │ │ -164 _S_t_e_n_c_i_l_T_a_b_l_e const *_G_e_t_L_o_c_a_l_P_o_i_n_t_S_t_e_n_c_i_l_T_a_b_l_e() const; │ │ │ │ │ -165 │ │ │ │ │ -167 template │ │ │ │ │ -_1_6_8 _S_t_e_n_c_i_l_T_a_b_l_e_R_e_a_l_<_R_E_A_L_> const *_G_e_t_L_o_c_a_l_P_o_i_n_t_S_t_e_n_c_i_l_T_a_b_l_e() const; │ │ │ │ │ -169 │ │ │ │ │ -_1_7_2 template bool _L_o_c_a_l_P_o_i_n_t_S_t_e_n_c_i_l_P_r_e_c_i_s_i_o_n_M_a_t_c_h_e_s_T_y_p_e() │ │ │ │ │ -const; │ │ │ │ │ -173 │ │ │ │ │ -186 template void │ │ │ │ │ -187 _C_o_m_p_u_t_e_L_o_c_a_l_P_o_i_n_t_V_a_l_u_e_s(T const *src, T *dst) const; │ │ │ │ │ -188 │ │ │ │ │ -189 │ │ │ │ │ -_1_9_1 int _G_e_t_N_u_m_L_o_c_a_l_P_o_i_n_t_s_V_a_r_y_i_n_g() const; │ │ │ │ │ -192 │ │ │ │ │ -194 _S_t_e_n_c_i_l_T_a_b_l_e const *_G_e_t_L_o_c_a_l_P_o_i_n_t_V_a_r_y_i_n_g_S_t_e_n_c_i_l_T_a_b_l_e() const; │ │ │ │ │ -195 │ │ │ │ │ -197 template │ │ │ │ │ -_1_9_8 _S_t_e_n_c_i_l_T_a_b_l_e_R_e_a_l_<_R_E_A_L_> const *_G_e_t_L_o_c_a_l_P_o_i_n_t_V_a_r_y_i_n_g_S_t_e_n_c_i_l_T_a_b_l_e() const; │ │ │ │ │ -199 │ │ │ │ │ -_2_0_2 template bool _L_o_c_a_l_P_o_i_n_t_V_a_r_y_i_n_g_S_t_e_n_c_i_l_P_r_e_c_i_s_i_o_n_M_a_t_c_h_e_s_T_y_p_e │ │ │ │ │ -() const; │ │ │ │ │ -203 │ │ │ │ │ -216 template void │ │ │ │ │ -217 _C_o_m_p_u_t_e_L_o_c_a_l_P_o_i_n_t_V_a_l_u_e_s_V_a_r_y_i_n_g(T const *src, T *dst) const; │ │ │ │ │ +_1_7_5 static _P_a_t_c_h_T_a_b_l_e * _C_r_e_a_t_e(_T_o_p_o_l_o_g_y_R_e_f_i_n_e_r const & refiner, │ │ │ │ │ +176 _O_p_t_i_o_n_s options = _O_p_t_i_o_n_s(), │ │ │ │ │ +177 _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y selectedFaces = _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y()); │ │ │ │ │ +178 │ │ │ │ │ +179public: │ │ │ │ │ +180 // PatchFaceTag │ │ │ │ │ +181 // │ │ │ │ │ +182 // This simple struct was previously used within the factory to take │ │ │ │ │ +inventory of │ │ │ │ │ +183 // various kinds of patches to fully allocate buffers prior to populating │ │ │ │ │ +them. It │ │ │ │ │ +184 // was not intended to be exposed as part of the public interface. │ │ │ │ │ +185 // │ │ │ │ │ +186 // It is no longer used internally and is being kept here to respect │ │ │ │ │ +preservation │ │ │ │ │ +187 // of the public interface, but it will be deprecated at the earliest │ │ │ │ │ +opportunity. │ │ │ │ │ +188 // │ │ │ │ │ +191 // │ │ │ │ │ +_1_9_2 struct _P_a_t_c_h_F_a_c_e_T_a_g { │ │ │ │ │ +193 public: │ │ │ │ │ +_1_9_4 unsigned int ___h_a_s_P_a_t_c_h : 1; │ │ │ │ │ +_1_9_5 unsigned int ___i_s_R_e_g_u_l_a_r : 1; │ │ │ │ │ +_1_9_6 unsigned int ___t_r_a_n_s_i_t_i_o_n_M_a_s_k : 4; │ │ │ │ │ +_1_9_7 unsigned int ___b_o_u_n_d_a_r_y_M_a_s_k : 4; │ │ │ │ │ +_1_9_8 unsigned int ___b_o_u_n_d_a_r_y_I_n_d_e_x : 2; │ │ │ │ │ +_1_9_9 unsigned int ___b_o_u_n_d_a_r_y_C_o_u_n_t : 3; │ │ │ │ │ +_2_0_0 unsigned int ___h_a_s_B_o_u_n_d_a_r_y_E_d_g_e : 3; │ │ │ │ │ +_2_0_1 unsigned int ___i_s_S_i_n_g_l_e_C_r_e_a_s_e : 1; │ │ │ │ │ +202 │ │ │ │ │ +_2_0_3 void _c_l_e_a_r(); │ │ │ │ │ +_2_0_4 void _a_s_s_i_g_n_B_o_u_n_d_a_r_y_P_r_o_p_e_r_t_i_e_s_F_r_o_m_E_d_g_e_M_a_s_k(int boundaryEdgeMask); │ │ │ │ │ +_2_0_5 void _a_s_s_i_g_n_B_o_u_n_d_a_r_y_P_r_o_p_e_r_t_i_e_s_F_r_o_m_V_e_r_t_e_x_M_a_s_k(int boundaryVertexMask); │ │ │ │ │ +_2_0_6 void _a_s_s_i_g_n_T_r_a_n_s_i_t_i_o_n_P_r_o_p_e_r_t_i_e_s_F_r_o_m_E_d_g_e_M_a_s_k(int boundaryVertexMask); │ │ │ │ │ +207 }; │ │ │ │ │ +_2_0_8 typedef std::vector _P_a_t_c_h_T_a_g_V_e_c_t_o_r; │ │ │ │ │ +209}; │ │ │ │ │ +210 │ │ │ │ │ +211 │ │ │ │ │ +_2_1_2template <> inline void PatchTableFactory::Options::SetPatchPrecision │ │ │ │ │ +() { │ │ │ │ │ +213 _p_a_t_c_h_P_r_e_c_i_s_i_o_n_D_o_u_b_l_e = false; │ │ │ │ │ +214} │ │ │ │ │ +_2_1_5template <> inline void PatchTableFactory::Options:: │ │ │ │ │ +SetFVarPatchPrecision() { │ │ │ │ │ +216 fvarPatchPrecisionDouble = false; │ │ │ │ │ +217} │ │ │ │ │ 218 │ │ │ │ │ -219 │ │ │ │ │ -_2_2_1 int _G_e_t_N_u_m_L_o_c_a_l_P_o_i_n_t_s_F_a_c_e_V_a_r_y_i_n_g(int channel = 0) const; │ │ │ │ │ -222 │ │ │ │ │ -224 _S_t_e_n_c_i_l_T_a_b_l_e const *_G_e_t_L_o_c_a_l_P_o_i_n_t_F_a_c_e_V_a_r_y_i_n_g_S_t_e_n_c_i_l_T_a_b_l_e(int channel = 0) │ │ │ │ │ -const; │ │ │ │ │ +219template <> inline void PatchTableFactory::Options:: │ │ │ │ │ +SetPatchPrecision() { │ │ │ │ │ +220 patchPrecisionDouble = true; │ │ │ │ │ +221} │ │ │ │ │ +222template <> inline void PatchTableFactory::Options:: │ │ │ │ │ +SetFVarPatchPrecision() { │ │ │ │ │ +223 fvarPatchPrecisionDouble = true; │ │ │ │ │ +224} │ │ │ │ │ 225 │ │ │ │ │ -227 template │ │ │ │ │ -_2_2_8 _S_t_e_n_c_i_l_T_a_b_l_e_R_e_a_l_<_R_E_A_L_> const * _G_e_t_L_o_c_a_l_P_o_i_n_t_F_a_c_e_V_a_r_y_i_n_g_S_t_e_n_c_i_l_T_a_b_l_e(int │ │ │ │ │ -channel = 0) const; │ │ │ │ │ -229 │ │ │ │ │ -_2_3_2 template bool │ │ │ │ │ -_L_o_c_a_l_P_o_i_n_t_F_a_c_e_V_a_r_y_i_n_g_S_t_e_n_c_i_l_P_r_e_c_i_s_i_o_n_M_a_t_c_h_e_s_T_y_p_e() const; │ │ │ │ │ +226 │ │ │ │ │ +227} // end namespace Far │ │ │ │ │ +228 │ │ │ │ │ +229} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ +230using namespace OPENSUBDIV_VERSION; │ │ │ │ │ +231 │ │ │ │ │ +232} // end namespace OpenSubdiv │ │ │ │ │ 233 │ │ │ │ │ -248 template void │ │ │ │ │ -249 _C_o_m_p_u_t_e_L_o_c_a_l_P_o_i_n_t_V_a_l_u_e_s_F_a_c_e_V_a_r_y_i_n_g(T const *src, T *dst, int channel = 0) │ │ │ │ │ -const; │ │ │ │ │ -251 │ │ │ │ │ -252 │ │ │ │ │ -254 │ │ │ │ │ -255 │ │ │ │ │ -_2_5_9 typedef _V_t_r_:_:_C_o_n_s_t_A_r_r_a_y_<_u_n_s_i_g_n_e_d_ _i_n_t_> _C_o_n_s_t_Q_u_a_d_O_f_f_s_e_t_s_A_r_r_a_y; │ │ │ │ │ -260 │ │ │ │ │ -_2_6_2 _C_o_n_s_t_Q_u_a_d_O_f_f_s_e_t_s_A_r_r_a_y _G_e_t_P_a_t_c_h_Q_u_a_d_O_f_f_s_e_t_s(_P_a_t_c_h_H_a_n_d_l_e const & handle) │ │ │ │ │ -const; │ │ │ │ │ -263 │ │ │ │ │ -_2_6_4 typedef std::vector _V_e_r_t_e_x_V_a_l_e_n_c_e_T_a_b_l_e; │ │ │ │ │ -265 │ │ │ │ │ -_2_6_7 _V_e_r_t_e_x_V_a_l_e_n_c_e_T_a_b_l_e const & _G_e_t_V_e_r_t_e_x_V_a_l_e_n_c_e_T_a_b_l_e() const { │ │ │ │ │ -268 return _vertexValenceTable; │ │ │ │ │ -269 } │ │ │ │ │ -271 │ │ │ │ │ -272 │ │ │ │ │ -274 │ │ │ │ │ -280 │ │ │ │ │ -_2_8_3 float _G_e_t_S_i_n_g_l_e_C_r_e_a_s_e_P_a_t_c_h_S_h_a_r_p_n_e_s_s_V_a_l_u_e(_P_a_t_c_h_H_a_n_d_l_e const & handle) const; │ │ │ │ │ -284 │ │ │ │ │ -_2_8_7 float _G_e_t_S_i_n_g_l_e_C_r_e_a_s_e_P_a_t_c_h_S_h_a_r_p_n_e_s_s_V_a_l_u_e(int array, int patch) const; │ │ │ │ │ -289 │ │ │ │ │ -290 │ │ │ │ │ -292 │ │ │ │ │ -298 │ │ │ │ │ -_3_0_0 _P_a_t_c_h_D_e_s_c_r_i_p_t_o_r _G_e_t_V_a_r_y_i_n_g_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r() const; │ │ │ │ │ -301 │ │ │ │ │ -_3_0_3 _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y _G_e_t_P_a_t_c_h_V_a_r_y_i_n_g_V_e_r_t_i_c_e_s(_P_a_t_c_h_H_a_n_d_l_e const & handle) const; │ │ │ │ │ -304 │ │ │ │ │ -_3_0_6 _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y _G_e_t_P_a_t_c_h_V_a_r_y_i_n_g_V_e_r_t_i_c_e_s(int array, int patch) const; │ │ │ │ │ -307 │ │ │ │ │ -_3_0_9 _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y _G_e_t_P_a_t_c_h_A_r_r_a_y_V_a_r_y_i_n_g_V_e_r_t_i_c_e_s(int array) const; │ │ │ │ │ -310 │ │ │ │ │ -_3_1_2 _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y _G_e_t_V_a_r_y_i_n_g_V_e_r_t_i_c_e_s() const; │ │ │ │ │ -314 │ │ │ │ │ -315 │ │ │ │ │ -317 │ │ │ │ │ -323 │ │ │ │ │ -_3_2_5 int _G_e_t_N_u_m_F_V_a_r_C_h_a_n_n_e_l_s() const; │ │ │ │ │ -326 │ │ │ │ │ -_3_2_8 _P_a_t_c_h_D_e_s_c_r_i_p_t_o_r _G_e_t_F_V_a_r_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r_R_e_g_u_l_a_r(int channel = 0) const; │ │ │ │ │ -329 │ │ │ │ │ -_3_3_1 _P_a_t_c_h_D_e_s_c_r_i_p_t_o_r _G_e_t_F_V_a_r_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r_I_r_r_e_g_u_l_a_r(int channel = 0) const; │ │ │ │ │ -332 │ │ │ │ │ -_3_3_4 _P_a_t_c_h_D_e_s_c_r_i_p_t_o_r _G_e_t_F_V_a_r_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r(int channel = 0) const; │ │ │ │ │ -335 │ │ │ │ │ -_3_3_7 _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y _G_e_t_P_a_t_c_h_F_V_a_r_V_a_l_u_e_s(_P_a_t_c_h_H_a_n_d_l_e const & handle, int channel │ │ │ │ │ -= 0) const; │ │ │ │ │ -338 │ │ │ │ │ -_3_4_0 _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y _G_e_t_P_a_t_c_h_F_V_a_r_V_a_l_u_e_s(int array, int patch, int channel = 0) │ │ │ │ │ -const; │ │ │ │ │ -341 │ │ │ │ │ -_3_4_3 _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y _G_e_t_P_a_t_c_h_A_r_r_a_y_F_V_a_r_V_a_l_u_e_s(int array, int channel = 0) const; │ │ │ │ │ -344 │ │ │ │ │ -_3_4_6 _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y _G_e_t_F_V_a_r_V_a_l_u_e_s(int channel = 0) const; │ │ │ │ │ -347 │ │ │ │ │ -_3_4_9 int _G_e_t_F_V_a_r_V_a_l_u_e_S_t_r_i_d_e(int channel = 0) const; │ │ │ │ │ -350 │ │ │ │ │ -_3_5_2 _P_a_t_c_h_P_a_r_a_m _G_e_t_P_a_t_c_h_F_V_a_r_P_a_t_c_h_P_a_r_a_m(_P_a_t_c_h_H_a_n_d_l_e const & handle, int channel = │ │ │ │ │ -0) const; │ │ │ │ │ -353 │ │ │ │ │ -_3_5_5 _P_a_t_c_h_P_a_r_a_m _G_e_t_P_a_t_c_h_F_V_a_r_P_a_t_c_h_P_a_r_a_m(int array, int patch, int channel = 0) │ │ │ │ │ -const; │ │ │ │ │ -356 │ │ │ │ │ -_3_5_8 _C_o_n_s_t_P_a_t_c_h_P_a_r_a_m_A_r_r_a_y _G_e_t_P_a_t_c_h_A_r_r_a_y_F_V_a_r_P_a_t_c_h_P_a_r_a_m_s(int array, int channel = │ │ │ │ │ -0) const; │ │ │ │ │ -359 │ │ │ │ │ -_3_6_1 _C_o_n_s_t_P_a_t_c_h_P_a_r_a_m_A_r_r_a_y _G_e_t_F_V_a_r_P_a_t_c_h_P_a_r_a_m_s(int channel = 0) const; │ │ │ │ │ -362 │ │ │ │ │ -_3_6_4 _S_d_c_:_:_O_p_t_i_o_n_s_:_:_F_V_a_r_L_i_n_e_a_r_I_n_t_e_r_p_o_l_a_t_i_o_n _G_e_t_F_V_a_r_C_h_a_n_n_e_l_L_i_n_e_a_r_I_n_t_e_r_p_o_l_a_t_i_o_n(int │ │ │ │ │ -channel = 0) const; │ │ │ │ │ -366 │ │ │ │ │ -367 │ │ │ │ │ -369 │ │ │ │ │ -374 │ │ │ │ │ -_3_7_5 typedef std::vector _P_a_t_c_h_V_e_r_t_s_T_a_b_l_e; │ │ │ │ │ -376 │ │ │ │ │ -_3_7_8 _P_a_t_c_h_V_e_r_t_s_T_a_b_l_e const & _G_e_t_P_a_t_c_h_C_o_n_t_r_o_l_V_e_r_t_i_c_e_s_T_a_b_l_e() const { return │ │ │ │ │ -_patchVerts; } │ │ │ │ │ -379 │ │ │ │ │ -_3_8_1 _P_a_t_c_h_P_a_r_a_m_T_a_b_l_e const & _G_e_t_P_a_t_c_h_P_a_r_a_m_T_a_b_l_e() const { return _paramTable; } │ │ │ │ │ -382 │ │ │ │ │ -_3_8_4 std::vector const &_G_e_t_S_h_a_r_p_n_e_s_s_I_n_d_e_x_T_a_b_l_e() const { return │ │ │ │ │ -_sharpnessIndices; } │ │ │ │ │ -385 │ │ │ │ │ -_3_8_7 std::vector const &_G_e_t_S_h_a_r_p_n_e_s_s_V_a_l_u_e_s() const { return │ │ │ │ │ -_sharpnessValues; } │ │ │ │ │ -388 │ │ │ │ │ -_3_8_9 typedef std::vector _Q_u_a_d_O_f_f_s_e_t_s_T_a_b_l_e; │ │ │ │ │ -390 │ │ │ │ │ -_3_9_2 _Q_u_a_d_O_f_f_s_e_t_s_T_a_b_l_e const & _G_e_t_Q_u_a_d_O_f_f_s_e_t_s_T_a_b_l_e() const { │ │ │ │ │ -393 return _quadOffsetsTable; │ │ │ │ │ -394 } │ │ │ │ │ -396 │ │ │ │ │ -_3_9_8 void _p_r_i_n_t() const; │ │ │ │ │ -399 │ │ │ │ │ -400public: │ │ │ │ │ -401 │ │ │ │ │ -403 │ │ │ │ │ -405 │ │ │ │ │ -428 template │ │ │ │ │ -_4_2_9 void _E_v_a_l_u_a_t_e_B_a_s_i_s(_P_a_t_c_h_H_a_n_d_l_e const & handle, REAL u, REAL v, │ │ │ │ │ -430 REAL wP[], REAL wDu[] = 0, REAL wDv[] = 0, │ │ │ │ │ -431 REAL wDuu[] = 0, REAL wDuv[] = 0, REAL wDvv[] = 0) const; │ │ │ │ │ -432 │ │ │ │ │ -435 void _E_v_a_l_u_a_t_e_B_a_s_i_s(_P_a_t_c_h_H_a_n_d_l_e const & handle, float u, float v, │ │ │ │ │ -436 float wP[], float wDu[] = 0, float wDv[] = 0, │ │ │ │ │ -437 float wDuu[] = 0, float wDuv[] = 0, float wDvv[] = 0) const; │ │ │ │ │ -438 │ │ │ │ │ -441 void _E_v_a_l_u_a_t_e_B_a_s_i_s(_P_a_t_c_h_H_a_n_d_l_e const & handle, double u, double v, │ │ │ │ │ -442 double wP[], double wDu[] = 0, double wDv[] = 0, │ │ │ │ │ -443 double wDuu[] = 0, double wDuv[] = 0, double wDvv[] = 0) const; │ │ │ │ │ -444 │ │ │ │ │ -467 template │ │ │ │ │ -_4_6_8 void _E_v_a_l_u_a_t_e_B_a_s_i_s_V_a_r_y_i_n_g(_P_a_t_c_h_H_a_n_d_l_e const & handle, REAL u, REAL v, │ │ │ │ │ -469 REAL wP[], REAL wDu[] = 0, REAL wDv[] = 0, │ │ │ │ │ -470 REAL wDuu[] = 0, REAL wDuv[] = 0, REAL wDvv[] = 0) const; │ │ │ │ │ -471 │ │ │ │ │ -474 void _E_v_a_l_u_a_t_e_B_a_s_i_s_V_a_r_y_i_n_g(_P_a_t_c_h_H_a_n_d_l_e const & handle, float u, float v, │ │ │ │ │ -475 float wP[], float wDu[] = 0, float wDv[] = 0, │ │ │ │ │ -476 float wDuu[] = 0, float wDuv[] = 0, float wDvv[] = 0) const; │ │ │ │ │ -477 │ │ │ │ │ -480 void _E_v_a_l_u_a_t_e_B_a_s_i_s_V_a_r_y_i_n_g(_P_a_t_c_h_H_a_n_d_l_e const & handle, double u, double v, │ │ │ │ │ -481 double wP[], double wDu[] = 0, double wDv[] = 0, │ │ │ │ │ -482 double wDuu[] = 0, double wDuv[] = 0, double wDvv[] = 0) const; │ │ │ │ │ -483 │ │ │ │ │ -508 template │ │ │ │ │ -_5_0_9 void _E_v_a_l_u_a_t_e_B_a_s_i_s_F_a_c_e_V_a_r_y_i_n_g(_P_a_t_c_h_H_a_n_d_l_e const & handle, REAL u, REAL v, │ │ │ │ │ -510 REAL wP[], REAL wDu[] = 0, REAL wDv[] = 0, │ │ │ │ │ -511 REAL wDuu[] = 0, REAL wDuv[] = 0, REAL wDvv[] = 0, │ │ │ │ │ -512 int channel = 0) const; │ │ │ │ │ -513 │ │ │ │ │ -516 void _E_v_a_l_u_a_t_e_B_a_s_i_s_F_a_c_e_V_a_r_y_i_n_g(_P_a_t_c_h_H_a_n_d_l_e const & handle, float u, float v, │ │ │ │ │ -517 float wP[], float wDu[] = 0, float wDv[] = 0, │ │ │ │ │ -518 float wDuu[] = 0, float wDuv[] = 0, float wDvv[] = 0, │ │ │ │ │ -519 int channel = 0) const; │ │ │ │ │ -520 │ │ │ │ │ -523 void _E_v_a_l_u_a_t_e_B_a_s_i_s_F_a_c_e_V_a_r_y_i_n_g(_P_a_t_c_h_H_a_n_d_l_e const & handle, double u, double │ │ │ │ │ -v, │ │ │ │ │ -524 double wP[], double wDu[] = 0, double wDv[] = 0, │ │ │ │ │ -525 double wDuu[] = 0, double wDuv[] = 0, double wDvv[] = 0, │ │ │ │ │ -526 int channel = 0) const; │ │ │ │ │ -528 │ │ │ │ │ -529protected: │ │ │ │ │ -530 │ │ │ │ │ -_5_3_1 friend class _P_a_t_c_h_T_a_b_l_e_B_u_i_l_d_e_r; │ │ │ │ │ -532 │ │ │ │ │ -533 // Factory constructor │ │ │ │ │ -_5_3_4 _P_a_t_c_h_T_a_b_l_e(int maxvalence); │ │ │ │ │ -535 │ │ │ │ │ -_5_3_6 _I_n_d_e_x _g_e_t_P_a_t_c_h_I_n_d_e_x(int array, int patch) const; │ │ │ │ │ -537 │ │ │ │ │ -_5_3_8 _P_a_t_c_h_P_a_r_a_m_A_r_r_a_y _g_e_t_P_a_t_c_h_P_a_r_a_m_s(int arrayIndex); │ │ │ │ │ -539 │ │ │ │ │ -_5_4_0 _I_n_d_e_x * _g_e_t_S_h_a_r_p_n_e_s_s_I_n_d_i_c_e_s(_I_n_d_e_x arrayIndex); │ │ │ │ │ -_5_4_1 float * _g_e_t_S_h_a_r_p_n_e_s_s_V_a_l_u_e_s(_I_n_d_e_x arrayIndex); │ │ │ │ │ -542 │ │ │ │ │ -543private: │ │ │ │ │ -544 │ │ │ │ │ -545 // │ │ │ │ │ -546 // Patch arrays │ │ │ │ │ -547 // │ │ │ │ │ -548 struct PatchArray { │ │ │ │ │ -549 PatchArray(_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r d, int np, _I_n_d_e_x v, _I_n_d_e_x p, _I_n_d_e_x qo) : │ │ │ │ │ -550 desc(d), numPatches(np), vertIndex(v), │ │ │ │ │ -551 patchIndex(p), quadOffsetIndex (qo) { } │ │ │ │ │ -552 │ │ │ │ │ -553 void print() const; │ │ │ │ │ -554 │ │ │ │ │ -555 _P_a_t_c_h_D_e_s_c_r_i_p_t_o_r desc; // type of patches in the array │ │ │ │ │ -556 │ │ │ │ │ -557 int numPatches; // number of patches in the array │ │ │ │ │ -558 │ │ │ │ │ -559 _I_n_d_e_x vertIndex, // index to the first control vertex │ │ │ │ │ -560 patchIndex, // absolute index of the first patch in the array │ │ │ │ │ -561 quadOffsetIndex; // index of the first quad offset entry │ │ │ │ │ -562 }; │ │ │ │ │ -563 │ │ │ │ │ -564 typedef std::vector PatchArrayVector; │ │ │ │ │ -565 │ │ │ │ │ -566 PatchArray & getPatchArray(_I_n_d_e_x arrayIndex); │ │ │ │ │ -567 PatchArray const & getPatchArray(_I_n_d_e_x arrayIndex) const; │ │ │ │ │ -568 │ │ │ │ │ -569 void reservePatchArrays(int numPatchArrays); │ │ │ │ │ -570 void pushPatchArray(PatchDescriptor desc, int npatches, │ │ │ │ │ -571 _I_n_d_e_x * vidx, _I_n_d_e_x * pidx, _I_n_d_e_x * qoidx=0); │ │ │ │ │ -572 │ │ │ │ │ -573 _I_n_d_e_x_A_r_r_a_y getPatchArrayVertices(int arrayIndex); │ │ │ │ │ -574 │ │ │ │ │ -575 _I_n_d_e_x findPatchArray(PatchDescriptor desc); │ │ │ │ │ -576 │ │ │ │ │ -577 │ │ │ │ │ -578 // │ │ │ │ │ -579 // Varying patch arrays │ │ │ │ │ -580 // │ │ │ │ │ -581 _I_n_d_e_x_A_r_r_a_y getPatchArrayVaryingVertices(int arrayIndex); │ │ │ │ │ -582 │ │ │ │ │ -583 void allocateVaryingVertices( │ │ │ │ │ -584 PatchDescriptor desc, int numPatches); │ │ │ │ │ -585 void populateVaryingVertices(); │ │ │ │ │ -586 │ │ │ │ │ -587 // │ │ │ │ │ -588 // Face-varying patch channels │ │ │ │ │ -589 // │ │ │ │ │ -590 │ │ │ │ │ -591 // │ │ │ │ │ -592 // FVarPatchChannel │ │ │ │ │ -593 // │ │ │ │ │ -594 // Stores a record for each patch in the primitive : │ │ │ │ │ -595 // │ │ │ │ │ -596 // - Each patch in the PatchTable has a corresponding patch in each │ │ │ │ │ -597 // face-varying patch channel. Patch vertex indices are sorted in the same │ │ │ │ │ -598 // patch-type order as PatchTable::PTables. Face-varying data for a patch │ │ │ │ │ -599 // can therefore be quickly accessed by using the patch primitive ID as │ │ │ │ │ -600 // index into patchValueOffsets to locate the face-varying control vertex │ │ │ │ │ -601 // indices. │ │ │ │ │ -602 // │ │ │ │ │ -603 // - Face-varying channels can have a different interpolation modes │ │ │ │ │ -604 // │ │ │ │ │ -605 // - Unlike "vertex" patches, there are no transition masks required │ │ │ │ │ -606 // for face-varying patches. │ │ │ │ │ -607 // │ │ │ │ │ -608 // - Face-varying patches still require boundary edge masks. │ │ │ │ │ -609 // │ │ │ │ │ -610 // - currently most patches with sharp boundaries but smooth interiors have │ │ │ │ │ -611 // to be isolated to level 10 : we need a special type of bicubic patch │ │ │ │ │ -612 // similar to single-crease to resolve this condition without requiring │ │ │ │ │ -613 // isolation if possible │ │ │ │ │ -614 // │ │ │ │ │ -615 struct FVarPatchChannel { │ │ │ │ │ -616 _S_d_c_:_:_O_p_t_i_o_n_s_:_:_F_V_a_r_L_i_n_e_a_r_I_n_t_e_r_p_o_l_a_t_i_o_n interpolation; │ │ │ │ │ -617 │ │ │ │ │ -618 PatchDescriptor regDesc; │ │ │ │ │ -619 PatchDescriptor irregDesc; │ │ │ │ │ -620 │ │ │ │ │ -621 int stride; │ │ │ │ │ -622 │ │ │ │ │ -623 std::vector patchValues; │ │ │ │ │ -624 std::vector patchParam; │ │ │ │ │ -625 }; │ │ │ │ │ -626 typedef std::vector FVarPatchChannelVector; │ │ │ │ │ -627 │ │ │ │ │ -628 FVarPatchChannel & getFVarPatchChannel(int channel); │ │ │ │ │ -629 FVarPatchChannel const & getFVarPatchChannel(int channel) const; │ │ │ │ │ -630 │ │ │ │ │ -631 void allocateFVarPatchChannels(int numChannels); │ │ │ │ │ -632 void allocateFVarPatchChannelValues( │ │ │ │ │ -633 PatchDescriptor regDesc, PatchDescriptor irregDesc, │ │ │ │ │ -634 int numPatches, int channel); │ │ │ │ │ -635 │ │ │ │ │ -636 // deprecated │ │ │ │ │ -637 void setFVarPatchChannelLinearInterpolation( │ │ │ │ │ -638 _S_d_c_:_:_O_p_t_i_o_n_s_:_:_F_V_a_r_L_i_n_e_a_r_I_n_t_e_r_p_o_l_a_t_i_o_n interpolation, int channel); │ │ │ │ │ -639 │ │ │ │ │ -640 _I_n_d_e_x_A_r_r_a_y getFVarValues(int channel); │ │ │ │ │ -641 _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y getPatchFVarValues(int patch, int channel) const; │ │ │ │ │ -642 │ │ │ │ │ -643 _P_a_t_c_h_P_a_r_a_m_A_r_r_a_y getFVarPatchParams(int channel); │ │ │ │ │ -644 PatchParam getPatchFVarPatchParam(int patch, int channel) const; │ │ │ │ │ -645 │ │ │ │ │ -646private: │ │ │ │ │ -647 // │ │ │ │ │ -648 // Simple private class to hold stencil table pointers of varying │ │ │ │ │ -precision, │ │ │ │ │ -649 // where the discriminant of the precision is external. │ │ │ │ │ -650 // │ │ │ │ │ -651 // NOTE that this is a simple pointer container and NOT a smart pointer │ │ │ │ │ -that │ │ │ │ │ -652 // manages the ownership of the object referred to by it. │ │ │ │ │ -653 // │ │ │ │ │ -654 class StencilTablePtr { │ │ │ │ │ -655 private: │ │ │ │ │ -656 typedef StencilTableReal float_type; │ │ │ │ │ -657 typedef StencilTableReal double_type; │ │ │ │ │ -658 │ │ │ │ │ -659 union { │ │ │ │ │ -660 float_type * _fPtr; │ │ │ │ │ -661 double_type * _dPtr; │ │ │ │ │ -662 }; │ │ │ │ │ -663 │ │ │ │ │ -664 public: │ │ │ │ │ -665 StencilTablePtr() { _fPtr = 0; } │ │ │ │ │ -666 StencilTablePtr(float_type * ptr) { _fPtr = ptr; } │ │ │ │ │ -667 StencilTablePtr(double_type * ptr) { _dPtr = ptr; } │ │ │ │ │ -668 │ │ │ │ │ -669 operator bool() const { return _fPtr != 0; } │ │ │ │ │ -670 │ │ │ │ │ -671 void Set() { _fPtr = 0; } │ │ │ │ │ -672 void Set(float_type * ptr) { _fPtr = ptr; } │ │ │ │ │ -673 void Set(double_type * ptr) { _dPtr = ptr; } │ │ │ │ │ -674 │ │ │ │ │ -675 template StencilTableReal * Get() const; │ │ │ │ │ -676 }; │ │ │ │ │ -677 │ │ │ │ │ -678private: │ │ │ │ │ -679 │ │ │ │ │ -680 // │ │ │ │ │ -681 // Topology │ │ │ │ │ -682 // │ │ │ │ │ -683 │ │ │ │ │ -684 int _maxValence, // highest vertex valence found in the mesh │ │ │ │ │ -685 _numPtexFaces; // total number of ptex faces │ │ │ │ │ -686 │ │ │ │ │ -687 _P_a_t_c_h_A_r_r_a_y_V_e_c_t_o_r _patchArrays; // Vector of descriptors for arrays of │ │ │ │ │ -patches │ │ │ │ │ -688 │ │ │ │ │ -689 std::vector _patchVerts; // Indices of the control vertices of the │ │ │ │ │ -patches │ │ │ │ │ -690 │ │ │ │ │ -691 _P_a_t_c_h_P_a_r_a_m_T_a_b_l_e _paramTable; // PatchParam bitfields (one per patch) │ │ │ │ │ -692 │ │ │ │ │ -693 // │ │ │ │ │ -694 // Extraordinary vertex closed-form evaluation / endcap basis conversion │ │ │ │ │ -695 // │ │ │ │ │ -696 // XXXtakahito: these data will probably be replaced with mask coefficient │ │ │ │ │ -or something │ │ │ │ │ -697 // SchemeWorker populates. │ │ │ │ │ -698 // │ │ │ │ │ -699 _Q_u_a_d_O_f_f_s_e_t_s_T_a_b_l_e _quadOffsetsTable; // Quad offsets (for Gregory patches) │ │ │ │ │ -700 _V_e_r_t_e_x_V_a_l_e_n_c_e_T_a_b_l_e _vertexValenceTable; // Vertex valence table (for │ │ │ │ │ -Gregory patches) │ │ │ │ │ -701 │ │ │ │ │ -702 StencilTablePtr _localPointStencils; // local point conversion stencils │ │ │ │ │ -703 StencilTablePtr _localPointVaryingStencils; // local point varying stencils │ │ │ │ │ -704 │ │ │ │ │ -705 // │ │ │ │ │ -706 // Varying data │ │ │ │ │ -707 // │ │ │ │ │ -708 PatchDescriptor _varyingDesc; │ │ │ │ │ -709 │ │ │ │ │ -710 std::vector _varyingVerts; │ │ │ │ │ -711 │ │ │ │ │ -712 // │ │ │ │ │ -713 // Face-varying data │ │ │ │ │ -714 // │ │ │ │ │ -715 FVarPatchChannelVector _fvarChannels; │ │ │ │ │ -716 │ │ │ │ │ -717 std::vector _localPointFaceVaryingStencils; │ │ │ │ │ -718 │ │ │ │ │ -719 // │ │ │ │ │ -720 // 'single-crease' patch sharpness tables │ │ │ │ │ -721 // │ │ │ │ │ -722 std::vector _sharpnessIndices; // Indices of single-crease sharpness │ │ │ │ │ -(one per patch) │ │ │ │ │ -723 std::vector _sharpnessValues; // Sharpness values. │ │ │ │ │ -724 │ │ │ │ │ -725 // │ │ │ │ │ -726 // Construction history -- relevant to at least one public query: │ │ │ │ │ -727 // │ │ │ │ │ -728 unsigned int _isUniformLinear : 1; │ │ │ │ │ -729 │ │ │ │ │ -730 // │ │ │ │ │ -731 // Precision -- only applies to local-point stencil tables │ │ │ │ │ -732 // │ │ │ │ │ -733 unsigned int _vertexPrecisionIsDouble : 1; │ │ │ │ │ -734 unsigned int _varyingPrecisionIsDouble : 1; │ │ │ │ │ -735 unsigned int _faceVaryingPrecisionIsDouble : 1; │ │ │ │ │ -736}; │ │ │ │ │ -737 │ │ │ │ │ -738 │ │ │ │ │ -739// │ │ │ │ │ -740// Template specializations for float/double -- to be defined before used: │ │ │ │ │ -741// │ │ │ │ │ -742template <> inline StencilTableReal * │ │ │ │ │ -743PatchTable::StencilTablePtr::Get() const { return _fPtr; } │ │ │ │ │ -744 │ │ │ │ │ -745template <> inline StencilTableReal * │ │ │ │ │ -746PatchTable::StencilTablePtr::Get() const { return _dPtr; } │ │ │ │ │ -747 │ │ │ │ │ -_7_4_8template <> inline bool │ │ │ │ │ -749PatchTable::LocalPointStencilPrecisionMatchesType() const { │ │ │ │ │ -750 return !_vertexPrecisionIsDouble; │ │ │ │ │ -751} │ │ │ │ │ -_7_5_2template <> inline bool │ │ │ │ │ -753PatchTable::LocalPointVaryingStencilPrecisionMatchesType() const { │ │ │ │ │ -754 return !_varyingPrecisionIsDouble; │ │ │ │ │ -755} │ │ │ │ │ -_7_5_6template <> inline bool │ │ │ │ │ -757PatchTable::LocalPointFaceVaryingStencilPrecisionMatchesType() const │ │ │ │ │ -{ │ │ │ │ │ -758 return !_faceVaryingPrecisionIsDouble; │ │ │ │ │ -759} │ │ │ │ │ -760 │ │ │ │ │ -_7_6_1template <> inline bool │ │ │ │ │ -762PatchTable::LocalPointStencilPrecisionMatchesType() const { │ │ │ │ │ -763 return _vertexPrecisionIsDouble; │ │ │ │ │ -764} │ │ │ │ │ -_7_6_5template <> inline bool │ │ │ │ │ -766PatchTable::LocalPointVaryingStencilPrecisionMatchesType() const { │ │ │ │ │ -767 return _varyingPrecisionIsDouble; │ │ │ │ │ -768} │ │ │ │ │ -_7_6_9template <> inline bool │ │ │ │ │ -770PatchTable::LocalPointFaceVaryingStencilPrecisionMatchesType() const │ │ │ │ │ -{ │ │ │ │ │ -771 return _faceVaryingPrecisionIsDouble; │ │ │ │ │ -772} │ │ │ │ │ -773 │ │ │ │ │ -774// │ │ │ │ │ -775// StencilTable access -- backward compatible and generic: │ │ │ │ │ -776// │ │ │ │ │ -777inline _S_t_e_n_c_i_l_T_a_b_l_e const * │ │ │ │ │ -_7_7_8_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_L_o_c_a_l_P_o_i_n_t_S_t_e_n_c_i_l_T_a_b_l_e() const { │ │ │ │ │ -779 assert(LocalPointStencilPrecisionMatchesType()); │ │ │ │ │ -780 return static_cast<_S_t_e_n_c_i_l_T_a_b_l_e const *>(_localPointStencils.Get()); │ │ │ │ │ -781} │ │ │ │ │ -782inline _S_t_e_n_c_i_l_T_a_b_l_e const * │ │ │ │ │ -_7_8_3_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_L_o_c_a_l_P_o_i_n_t_V_a_r_y_i_n_g_S_t_e_n_c_i_l_T_a_b_l_e() const { │ │ │ │ │ -784 assert(LocalPointVaryingStencilPrecisionMatchesType()); │ │ │ │ │ -785 return static_cast<_S_t_e_n_c_i_l_T_a_b_l_e const *>( │ │ │ │ │ -786 _localPointVaryingStencils.Get()); │ │ │ │ │ -787} │ │ │ │ │ -788inline _S_t_e_n_c_i_l_T_a_b_l_e const * │ │ │ │ │ -_7_8_9_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_L_o_c_a_l_P_o_i_n_t_F_a_c_e_V_a_r_y_i_n_g_S_t_e_n_c_i_l_T_a_b_l_e(int channel) const { │ │ │ │ │ -790 assert(LocalPointFaceVaryingStencilPrecisionMatchesType()); │ │ │ │ │ -791 if (channel >= 0 && channel < (int)_localPointFaceVaryingStencils.size()) { │ │ │ │ │ -792 return static_cast<_S_t_e_n_c_i_l_T_a_b_l_e const *>( │ │ │ │ │ -793 _localPointFaceVaryingStencils[channel].Get()); │ │ │ │ │ -794 } │ │ │ │ │ -795 return NULL; │ │ │ │ │ -796} │ │ │ │ │ -797 │ │ │ │ │ -798template │ │ │ │ │ -799inline _S_t_e_n_c_i_l_T_a_b_l_e_R_e_a_l_<_R_E_A_L_> const * │ │ │ │ │ -_8_0_0_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_L_o_c_a_l_P_o_i_n_t_S_t_e_n_c_i_l_T_a_b_l_e() const { │ │ │ │ │ -801 assert(LocalPointStencilPrecisionMatchesType()); │ │ │ │ │ -802 return _localPointStencils.Get(); │ │ │ │ │ -803} │ │ │ │ │ -804template │ │ │ │ │ -805inline _S_t_e_n_c_i_l_T_a_b_l_e_R_e_a_l_<_R_E_A_L_> const * │ │ │ │ │ -_8_0_6_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_L_o_c_a_l_P_o_i_n_t_V_a_r_y_i_n_g_S_t_e_n_c_i_l_T_a_b_l_e() const { │ │ │ │ │ -807 assert(LocalPointVaryingStencilPrecisionMatchesType()); │ │ │ │ │ -808 return _localPointVaryingStencils.Get(); │ │ │ │ │ -809} │ │ │ │ │ -810template │ │ │ │ │ -811inline _S_t_e_n_c_i_l_T_a_b_l_e_R_e_a_l_<_R_E_A_L_> const * │ │ │ │ │ -_8_1_2_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_L_o_c_a_l_P_o_i_n_t_F_a_c_e_V_a_r_y_i_n_g_S_t_e_n_c_i_l_T_a_b_l_e(int channel) const { │ │ │ │ │ -813 assert(LocalPointFaceVaryingStencilPrecisionMatchesType()); │ │ │ │ │ -814 if (channel >= 0 && channel < (int)_localPointFaceVaryingStencils.size()) { │ │ │ │ │ -815 return _localPointFaceVaryingStencils[channel].Get(); │ │ │ │ │ -816 } │ │ │ │ │ -817 return NULL; │ │ │ │ │ -818} │ │ │ │ │ -819 │ │ │ │ │ -820 │ │ │ │ │ -821// │ │ │ │ │ -822// Computation of local point values: │ │ │ │ │ -823// │ │ │ │ │ -824template │ │ │ │ │ -825inline void │ │ │ │ │ -_8_2_6_P_a_t_c_h_T_a_b_l_e_:_:_C_o_m_p_u_t_e_L_o_c_a_l_P_o_i_n_t_V_a_l_u_e_s(T const *src, T *dst) const { │ │ │ │ │ -827 assert(LocalPointStencilPrecisionMatchesType()); │ │ │ │ │ -828 if (_localPointStencils) { │ │ │ │ │ -829 _localPointStencils.Get()->UpdateValues(src, dst); │ │ │ │ │ -830 } │ │ │ │ │ -831} │ │ │ │ │ -832 │ │ │ │ │ -833template │ │ │ │ │ -834inline void │ │ │ │ │ -_8_3_5_P_a_t_c_h_T_a_b_l_e_:_:_C_o_m_p_u_t_e_L_o_c_a_l_P_o_i_n_t_V_a_l_u_e_s_V_a_r_y_i_n_g(T const *src, T *dst) const { │ │ │ │ │ -836 assert(LocalPointVaryingStencilPrecisionMatchesType()); │ │ │ │ │ -837 if (_localPointVaryingStencils) { │ │ │ │ │ -838 _localPointVaryingStencils.Get()->UpdateValues(src, dst); │ │ │ │ │ -839 } │ │ │ │ │ -840} │ │ │ │ │ -841 │ │ │ │ │ -842template │ │ │ │ │ -843inline void │ │ │ │ │ -_8_4_4_P_a_t_c_h_T_a_b_l_e_:_:_C_o_m_p_u_t_e_L_o_c_a_l_P_o_i_n_t_V_a_l_u_e_s_F_a_c_e_V_a_r_y_i_n_g(T const *src, T *dst, int │ │ │ │ │ -channel) const { │ │ │ │ │ -845 assert(LocalPointFaceVaryingStencilPrecisionMatchesType()); │ │ │ │ │ -846 if (channel >= 0 && channel < (int)_localPointFaceVaryingStencils.size()) { │ │ │ │ │ -847 if (_localPointFaceVaryingStencils[channel]) { │ │ │ │ │ -848 _localPointFaceVaryingStencils[channel].Get()->UpdateValues(src, │ │ │ │ │ -dst); │ │ │ │ │ -849 } │ │ │ │ │ -850 } │ │ │ │ │ -851} │ │ │ │ │ -852 │ │ │ │ │ -853 │ │ │ │ │ -854// │ │ │ │ │ -855// Basis evaluation overloads │ │ │ │ │ -856// │ │ │ │ │ -857inline void │ │ │ │ │ -_8_5_8_P_a_t_c_h_T_a_b_l_e_:_:_E_v_a_l_u_a_t_e_B_a_s_i_s(_P_a_t_c_h_H_a_n_d_l_e const & handle, float u, float v, │ │ │ │ │ -859 float wP[], float wDu[], float wDv[], │ │ │ │ │ -860 float wDuu[], float wDuv[], float wDvv[]) const { │ │ │ │ │ -861 │ │ │ │ │ -862 EvaluateBasis(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv); │ │ │ │ │ -863} │ │ │ │ │ -864inline void │ │ │ │ │ -_8_6_5_P_a_t_c_h_T_a_b_l_e_:_:_E_v_a_l_u_a_t_e_B_a_s_i_s(_P_a_t_c_h_H_a_n_d_l_e const & handle, double u, double v, │ │ │ │ │ -866 double wP[], double wDu[], double wDv[], │ │ │ │ │ -867 double wDuu[], double wDuv[], double wDvv[]) const { │ │ │ │ │ -868 │ │ │ │ │ -869 EvaluateBasis(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv); │ │ │ │ │ -870} │ │ │ │ │ -871 │ │ │ │ │ -872inline void │ │ │ │ │ -_8_7_3_P_a_t_c_h_T_a_b_l_e_:_:_E_v_a_l_u_a_t_e_B_a_s_i_s_V_a_r_y_i_n_g(_P_a_t_c_h_H_a_n_d_l_e const & handle, float u, float │ │ │ │ │ -v, │ │ │ │ │ -874 float wP[], float wDu[], float wDv[], │ │ │ │ │ -875 float wDuu[], float wDuv[], float wDvv[]) const { │ │ │ │ │ -876 │ │ │ │ │ -877 EvaluateBasisVarying(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv); │ │ │ │ │ -878} │ │ │ │ │ -879inline void │ │ │ │ │ -_8_8_0_P_a_t_c_h_T_a_b_l_e_:_:_E_v_a_l_u_a_t_e_B_a_s_i_s_V_a_r_y_i_n_g(_P_a_t_c_h_H_a_n_d_l_e const & handle, double u, │ │ │ │ │ -double v, │ │ │ │ │ -881 double wP[], double wDu[], double wDv[], │ │ │ │ │ -882 double wDuu[], double wDuv[], double wDvv[]) const { │ │ │ │ │ -883 │ │ │ │ │ -884 EvaluateBasisVarying(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv); │ │ │ │ │ -885} │ │ │ │ │ -886 │ │ │ │ │ -887inline void │ │ │ │ │ -_8_8_8_P_a_t_c_h_T_a_b_l_e_:_:_E_v_a_l_u_a_t_e_B_a_s_i_s_F_a_c_e_V_a_r_y_i_n_g(_P_a_t_c_h_H_a_n_d_l_e const & handle, float u, │ │ │ │ │ -float v, │ │ │ │ │ -889 float wP[], float wDu[], float wDv[], │ │ │ │ │ -890 float wDuu[], float wDuv[], float wDvv[], int channel) const { │ │ │ │ │ -891 │ │ │ │ │ -892 EvaluateBasisFaceVarying(handle, u, v, wP, wDu, wDv, wDuu, wDuv, │ │ │ │ │ -wDvv, channel); │ │ │ │ │ -893} │ │ │ │ │ -894inline void │ │ │ │ │ -_8_9_5_P_a_t_c_h_T_a_b_l_e_:_:_E_v_a_l_u_a_t_e_B_a_s_i_s_F_a_c_e_V_a_r_y_i_n_g(_P_a_t_c_h_H_a_n_d_l_e const & handle, double u, │ │ │ │ │ -double v, │ │ │ │ │ -896 double wP[], double wDu[], double wDv[], │ │ │ │ │ -897 double wDuu[], double wDuv[], double wDvv[], int channel) const { │ │ │ │ │ -898 │ │ │ │ │ -899 EvaluateBasisFaceVarying(handle, u, v, wP, wDu, wDv, wDuu, wDuv, │ │ │ │ │ -wDvv, channel); │ │ │ │ │ -900} │ │ │ │ │ -901 │ │ │ │ │ -902} // end namespace Far │ │ │ │ │ -903 │ │ │ │ │ -904} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ -905using namespace OPENSUBDIV_VERSION; │ │ │ │ │ -906 │ │ │ │ │ -907} // end namespace OpenSubdiv │ │ │ │ │ -908 │ │ │ │ │ -909#endif /* OPENSUBDIV3_FAR_PATCH_TABLE */ │ │ │ │ │ +234 │ │ │ │ │ +235#endif /* OPENSUBDIV3_FAR_PATCH_TABLE_FACTORY_H */ │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v │ │ │ │ │ DDeeffiinniittiioonn _l_i_m_i_t_s_._h_:_3_2 │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_C_o_n_s_t_I_n_d_e_x_A_r_r_a_y │ │ │ │ │ Vtr::ConstIndexArray ConstIndexArray │ │ │ │ │ DDeeffiinniittiioonn _t_y_p_e_s_._h_:_4_7 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_P_a_r_a_m_T_a_b_l_e │ │ │ │ │ -std::vector< PatchParam > PatchParamTable │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_P_a_r_a_m_._h_:_2_4_3 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_I_n_d_e_x_A_r_r_a_y │ │ │ │ │ -Vtr::IndexArray IndexArray │ │ │ │ │ -DDeeffiinniittiioonn _t_y_p_e_s_._h_:_4_4 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_I_n_d_e_x │ │ │ │ │ -Vtr::Index Index │ │ │ │ │ -DDeeffiinniittiioonn _t_y_p_e_s_._h_:_4_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_P_a_r_a_m_A_r_r_a_y │ │ │ │ │ -Vtr::Array< PatchParam > PatchParamArray │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_P_a_r_a_m_._h_:_2_4_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_P_a_t_c_h_A_r_r_a_y_V_e_c_t_o_r │ │ │ │ │ -std::vector< PatchArray > PatchArrayVector │ │ │ │ │ -DDeeffiinniittiioonn _t_y_p_e_s_._h_:_1_3_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ -Describes the type of a patch. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_D_e_s_c_r_i_p_t_o_r_._h_:_4_4 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_M_a_p │ │ │ │ │ -An quadtree-based map connecting coarse faces to their sub-patches. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_M_a_p_._h_:_4_9 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_P_a_r_a_m │ │ │ │ │ -Patch parameterization. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_P_a_r_a_m_._h_:_1_5_2 │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ Container for arrays of parametric patches. │ │ │ │ │ DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_5_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_A_r_r_a_y_V_a_r_y_i_n_g_V_e_r_t_i_c_e_s │ │ │ │ │ -ConstIndexArray GetPatchArrayVaryingVertices(int array) const │ │ │ │ │ -Returns the varying vertex indices for the patches in array. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_g_e_t_S_h_a_r_p_n_e_s_s_V_a_l_u_e_s │ │ │ │ │ -float * getSharpnessValues(Index arrayIndex) │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_C_o_n_t_r_o_l_V_e_r_t_i_c_e_s_T_a_b_l_e │ │ │ │ │ -PatchVertsTable const & GetPatchControlVerticesTable() const │ │ │ │ │ -Get the table of patch control vertices. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_3_7_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ -_C_o_m_p_u_t_e_L_o_c_a_l_P_o_i_n_t_V_a_l_u_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ -void ComputeLocalPointValuesFaceVarying(T const *src, T *dst, int channel=0) │ │ │ │ │ -const │ │ │ │ │ -Updates local point face-varying values. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_8_4_4 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_V_a_r_y_i_n_g_V_e_r_t_i_c_e_s │ │ │ │ │ -ConstIndexArray GetVaryingVertices() const │ │ │ │ │ -Returns an array of varying vertex indices for the patches. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_C_o_m_p_u_t_e_L_o_c_a_l_P_o_i_n_t_V_a_l_u_e_s_V_a_r_y_i_n_g │ │ │ │ │ -void ComputeLocalPointValuesVarying(T const *src, T *dst) const │ │ │ │ │ -Updates local point varying values. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_8_3_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_V_a_r_y_i_n_g_V_e_r_t_i_c_e_s │ │ │ │ │ -ConstIndexArray GetPatchVaryingVertices(PatchHandle const &handle) const │ │ │ │ │ -Returns the varying vertex indices for a given patch. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_I_s_F_e_a_t_u_r_e_A_d_a_p_t_i_v_e │ │ │ │ │ -bool IsFeatureAdaptive() const │ │ │ │ │ -True if the patches are of feature adaptive types. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_M_a_x_V_a_l_e_n_c_e │ │ │ │ │ -int GetMaxValence() const │ │ │ │ │ -Returns max vertex valence. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_9_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_L_o_c_a_l_P_o_i_n_t_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ -StencilTableReal< REAL > const * GetLocalPointStencilTable() const │ │ │ │ │ -Returns the stencil table to compute local point vertex values. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_L_o_c_a_l_P_o_i_n_t_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ -StencilTable const * GetLocalPointStencilTable() const │ │ │ │ │ -Returns the stencil table to compute local point vertex values. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_7_7_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_g_e_t_P_a_t_c_h_P_a_r_a_m_s │ │ │ │ │ -PatchParamArray getPatchParams(int arrayIndex) │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_A_r_r_a_y_F_V_a_r_V_a_l_u_e_s │ │ │ │ │ -ConstIndexArray GetPatchArrayFVarValues(int array, int channel=0) const │ │ │ │ │ -Returns the value indices for the patches in array in channel. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_S_h_a_r_p_n_e_s_s_V_a_l_u_e_s │ │ │ │ │ -std::vector< float > const & GetSharpnessValues() const │ │ │ │ │ -Returns sharpness values table. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_3_8_7 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_V_e_r_t_e_x_V_a_l_e_n_c_e_T_a_b_l_e │ │ │ │ │ -std::vector< Index > VertexValenceTable │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_2_6_4 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_F_V_a_r_P_a_t_c_h_P_a_r_a_m │ │ │ │ │ -PatchParam GetPatchFVarPatchParam(int array, int patch, int channel=0) const │ │ │ │ │ -Returns the face-varying params for a given patch channel. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_V_a_r_y_i_n_g_V_e_r_t_i_c_e_s │ │ │ │ │ -ConstIndexArray GetPatchVaryingVertices(int array, int patch) const │ │ │ │ │ -Returns the varying vertex indices for a given patch. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ -PatchTable(PatchTable const &src) │ │ │ │ │ -Copy constructor. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_N_u_m_P_a_t_c_h_A_r_r_a_y_s │ │ │ │ │ -int GetNumPatchArrays() const │ │ │ │ │ -Returns the number of patch arrays in the table. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_V_e_r_t_i_c_e_s │ │ │ │ │ -ConstIndexArray GetPatchVertices(PatchHandle const &handle) const │ │ │ │ │ -Returns the control vertex indices for the patch identified by handle. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ -PatchTable(int maxvalence) │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ -_L_o_c_a_l_P_o_i_n_t_F_a_c_e_V_a_r_y_i_n_g_S_t_e_n_c_i_l_P_r_e_c_i_s_i_o_n_M_a_t_c_h_e_s_T_y_p_e │ │ │ │ │ -bool LocalPointFaceVaryingStencilPrecisionMatchesType() const │ │ │ │ │ -Tests if the precision of the stencil table to compute local point face-varying │ │ │ │ │ -values matches the gi... │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_P_a_r_a_m_T_a_b_l_e │ │ │ │ │ -PatchParamTable const & GetPatchParamTable() const │ │ │ │ │ -Returns the PatchParamTable (PatchParams order matches patch array sorting) │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_3_8_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_V_e_r_t_e_x_V_a_l_e_n_c_e_T_a_b_l_e │ │ │ │ │ -VertexValenceTable const & GetVertexValenceTable() const │ │ │ │ │ -Returns the 'VertexValences' table (vertex neighborhoods table) │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_2_6_7 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ -_G_e_t_L_o_c_a_l_P_o_i_n_t_F_a_c_e_V_a_r_y_i_n_g_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ -StencilTable const * GetLocalPointFaceVaryingStencilTable(int channel=0) const │ │ │ │ │ -Returns the stencil table to compute local point face-varying values. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_7_8_9 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_N_u_m_C_o_n_t_r_o_l_V_e_r_t_i_c_e_s │ │ │ │ │ -int GetNumControlVertices(int array) const │ │ │ │ │ -Returns the number of control vertices in array. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_~_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ -~PatchTable() │ │ │ │ │ -Destructor. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_E_v_a_l_u_a_t_e_B_a_s_i_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ -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 │ │ │ │ │ -Evaluate basis functions for a face-varying value and derivatives at a given │ │ │ │ │ -(u,v) parametric locatio... │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_Q_u_a_d_O_f_f_s_e_t_s │ │ │ │ │ -ConstQuadOffsetsArray GetPatchQuadOffsets(PatchHandle const &handle) const │ │ │ │ │ -Returns the 'QuadOffsets' for the Gregory patch identified by handle. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ -_G_e_t_F_V_a_r_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r_I_r_r_e_g_u_l_a_r │ │ │ │ │ -PatchDescriptor GetFVarPatchDescriptorIrregular(int channel=0) const │ │ │ │ │ -Returns the irregular patch descriptor for channel. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ -_G_e_t_S_i_n_g_l_e_C_r_e_a_s_e_P_a_t_c_h_S_h_a_r_p_n_e_s_s_V_a_l_u_e │ │ │ │ │ -float GetSingleCreasePatchSharpnessValue(int array, int patch) const │ │ │ │ │ -Returns the crease sharpness for the patch in array if it is a single-crease │ │ │ │ │ -patch,... │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_g_e_t_S_h_a_r_p_n_e_s_s_I_n_d_i_c_e_s │ │ │ │ │ -Index * getSharpnessIndices(Index arrayIndex) │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_C_o_m_p_u_t_e_L_o_c_a_l_P_o_i_n_t_V_a_l_u_e_s │ │ │ │ │ -void ComputeLocalPointValues(T const *src, T *dst) const │ │ │ │ │ -Updates local point vertex values. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_8_2_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ -_G_e_t_S_i_n_g_l_e_C_r_e_a_s_e_P_a_t_c_h_S_h_a_r_p_n_e_s_s_V_a_l_u_e │ │ │ │ │ -float GetSingleCreasePatchSharpnessValue(PatchHandle const &handle) const │ │ │ │ │ -Returns the crease sharpness for the patch identified by handle if it is a │ │ │ │ │ -single-crease patch,... │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_P_a_r_a_m │ │ │ │ │ -PatchParam GetPatchParam(int array, int patch) const │ │ │ │ │ -Returns the PatchParam for patch in array. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_F_V_a_r_V_a_l_u_e_s │ │ │ │ │ -ConstIndexArray GetPatchFVarValues(int array, int patch, int channel=0) const │ │ │ │ │ -Returns the value indices for a given patch in channel. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_F_V_a_r_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r_R_e_g_u_l_a_r │ │ │ │ │ -PatchDescriptor GetFVarPatchDescriptorRegular(int channel=0) const │ │ │ │ │ -Returns the regular patch descriptor for channel. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ -PatchDescriptor GetPatchDescriptor(PatchHandle const &handle) const │ │ │ │ │ -Returns the PatchDescriptor for the patch identified by handle. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_P_a_t_c_h_V_e_r_t_s_T_a_b_l_e │ │ │ │ │ -std::vector< Index > PatchVertsTable │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_3_7_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_Q_u_a_d_O_f_f_s_e_t_s_T_a_b_l_e │ │ │ │ │ -QuadOffsetsTable const & GetQuadOffsetsTable() const │ │ │ │ │ -Returns the quad-offsets table. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_3_9_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_N_u_m_P_a_t_c_h_e_s │ │ │ │ │ -int GetNumPatches(int array) const │ │ │ │ │ -Returns the number of patches in array. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_V_a_r_y_i_n_g_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ -PatchDescriptor GetVaryingPatchDescriptor() const │ │ │ │ │ -Returns the varying patch descriptor. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_F_V_a_r_V_a_l_u_e_s │ │ │ │ │ -ConstIndexArray GetPatchFVarValues(PatchHandle const &handle, int channel=0) │ │ │ │ │ -const │ │ │ │ │ -Returns the value indices for a given patch in channel. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_P_a_r_a_m_s │ │ │ │ │ -ConstPatchParamArray const GetPatchParams(int array) const │ │ │ │ │ -Returns the PatchParams for the patches in array. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_N_u_m_C_o_n_t_r_o_l_V_e_r_t_i_c_e_s_T_o_t_a_l │ │ │ │ │ -int GetNumControlVerticesTotal() const │ │ │ │ │ -Returns the total number of control vertex indices in the table. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_8_4 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_N_u_m_F_V_a_r_C_h_a_n_n_e_l_s │ │ │ │ │ -int GetNumFVarChannels() const │ │ │ │ │ -Returns the number of face-varying channels. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_A_r_r_a_y_F_V_a_r_P_a_t_c_h_P_a_r_a_m_s │ │ │ │ │ -ConstPatchParamArray GetPatchArrayFVarPatchParams(int array, int channel=0) │ │ │ │ │ -const │ │ │ │ │ -Returns the face-varying for a given patch in array in channel. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_g_e_t_P_a_t_c_h_I_n_d_e_x │ │ │ │ │ -Index getPatchIndex(int array, int patch) const │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_N_u_m_L_o_c_a_l_P_o_i_n_t_s │ │ │ │ │ -int GetNumLocalPoints() const │ │ │ │ │ -Returns the number of local vertex points. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ -_L_o_c_a_l_P_o_i_n_t_V_a_r_y_i_n_g_S_t_e_n_c_i_l_P_r_e_c_i_s_i_o_n_M_a_t_c_h_e_s_T_y_p_e │ │ │ │ │ -bool LocalPointVaryingStencilPrecisionMatchesType() const │ │ │ │ │ -Tests if the precision of the stencil table to compute local point varying │ │ │ │ │ -values matches the given f... │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_A_r_r_a_y_V_e_r_t_i_c_e_s │ │ │ │ │ -ConstIndexArray GetPatchArrayVertices(int array) const │ │ │ │ │ -Returns the control vertex indices for the patches in array. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_N_u_m_P_t_e_x_F_a_c_e_s │ │ │ │ │ -int GetNumPtexFaces() const │ │ │ │ │ -Returns the total number of ptex faces in the mesh. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_9_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_F_V_a_r_V_a_l_u_e_s │ │ │ │ │ -ConstIndexArray GetFVarValues(int channel=0) const │ │ │ │ │ -Returns an array of value indices for the patches in channel. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_C_o_n_s_t_Q_u_a_d_O_f_f_s_e_t_s_A_r_r_a_y │ │ │ │ │ -Vtr::ConstArray< unsigned int > ConstQuadOffsetsArray │ │ │ │ │ -Accessors for the gregory patch evaluation buffers. These methods will be │ │ │ │ │ -deprecated. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_2_5_9 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_E_v_a_l_u_a_t_e_B_a_s_i_s │ │ │ │ │ -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 │ │ │ │ │ -Evaluate basis functions for position and derivatives at a given (u,v) │ │ │ │ │ -parametric location of a patch... │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ -_G_e_t_L_o_c_a_l_P_o_i_n_t_F_a_c_e_V_a_r_y_i_n_g_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ -StencilTableReal< REAL > const * GetLocalPointFaceVaryingStencilTable(int │ │ │ │ │ -channel=0) const │ │ │ │ │ -Returns the stencil table to compute local point face-varying values. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_N_u_m_P_a_t_c_h_e_s_T_o_t_a_l │ │ │ │ │ -int GetNumPatchesTotal() const │ │ │ │ │ -Returns the total number of patches stored in the table. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_P_a_r_a_m │ │ │ │ │ -PatchParam GetPatchParam(PatchHandle const &handle) const │ │ │ │ │ -Returns a PatchParam for the patch identified by handle. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_p_r_i_n_t │ │ │ │ │ -void print() const │ │ │ │ │ -debug helper │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ -_G_e_t_F_V_a_r_C_h_a_n_n_e_l_L_i_n_e_a_r_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ -Sdc::Options::FVarLinearInterpolation GetFVarChannelLinearInterpolation(int │ │ │ │ │ -channel=0) const │ │ │ │ │ -Deprecated. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_S_h_a_r_p_n_e_s_s_I_n_d_e_x_T_a_b_l_e │ │ │ │ │ -std::vector< Index > const & GetSharpnessIndexTable() const │ │ │ │ │ -Returns a sharpness index table for each patch (if exists) │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_3_8_4 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_A_r_r_a_y_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ -PatchDescriptor GetPatchArrayDescriptor(int array) const │ │ │ │ │ -Returns the PatchDescriptor for the patches in array. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_P_a_t_c_h_T_a_b_l_e_B_u_i_l_d_e_r │ │ │ │ │ -friend class PatchTableBuilder │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_5_3_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_E_v_a_l_u_a_t_e_B_a_s_i_s_V_a_r_y_i_n_g │ │ │ │ │ -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 │ │ │ │ │ -Evaluate basis functions for a varying value and derivatives at a given (u,v) │ │ │ │ │ -parametric location of ... │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ -_G_e_t_L_o_c_a_l_P_o_i_n_t_V_a_r_y_i_n_g_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ -StencilTable const * GetLocalPointVaryingStencilTable() const │ │ │ │ │ -Returns the stencil table to compute local point varying values. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_7_8_3 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_Q_u_a_d_O_f_f_s_e_t_s_T_a_b_l_e │ │ │ │ │ -std::vector< unsigned int > QuadOffsetsTable │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_3_8_9 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_V_e_r_t_i_c_e_s │ │ │ │ │ -ConstIndexArray GetPatchVertices(int array, int patch) const │ │ │ │ │ -Returns the control vertex indices for patch in array. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_F_V_a_r_P_a_t_c_h_P_a_r_a_m │ │ │ │ │ -PatchParam GetPatchFVarPatchParam(PatchHandle const &handle, int channel=0) │ │ │ │ │ -const │ │ │ │ │ -Returns the value indices for a given patch in channel. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_F_V_a_r_V_a_l_u_e_S_t_r_i_d_e │ │ │ │ │ -int GetFVarValueStride(int channel=0) const │ │ │ │ │ -Returns the stride between patches in the value index array of channel. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_F_V_a_r_P_a_t_c_h_P_a_r_a_m_s │ │ │ │ │ -ConstPatchParamArray GetFVarPatchParams(int channel=0) const │ │ │ │ │ -Returns an array of face-varying patch param for channel. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_F_V_a_r_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ -PatchDescriptor GetFVarPatchDescriptor(int channel=0) const │ │ │ │ │ -Returns the default/irregular patch descriptor for channel. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_N_u_m_L_o_c_a_l_P_o_i_n_t_s_V_a_r_y_i_n_g │ │ │ │ │ -int GetNumLocalPointsVarying() const │ │ │ │ │ -Returns the number of local varying points. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ -_L_o_c_a_l_P_o_i_n_t_S_t_e_n_c_i_l_P_r_e_c_i_s_i_o_n_M_a_t_c_h_e_s_T_y_p_e │ │ │ │ │ -bool LocalPointStencilPrecisionMatchesType() const │ │ │ │ │ -Tests if the precision of the stencil table to compute local point vertex │ │ │ │ │ -values matches the given fl... │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ -_G_e_t_L_o_c_a_l_P_o_i_n_t_V_a_r_y_i_n_g_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ -StencilTableReal< REAL > const * GetLocalPointVaryingStencilTable() const │ │ │ │ │ -Returns the stencil table to compute local point varying values. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_N_u_m_L_o_c_a_l_P_o_i_n_t_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ -int GetNumLocalPointsFaceVarying(int channel=0) const │ │ │ │ │ -Returns the number of local face-varying points for channel. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_P_a_t_c_h_H_a_n_d_l_e │ │ │ │ │ -Handle that can be used as unique patch identifier within PatchTable. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_6_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_P_a_t_c_h_H_a_n_d_l_e_:_:_p_a_t_c_h_I_n_d_e_x │ │ │ │ │ -Index patchIndex │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_6_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_P_a_t_c_h_H_a_n_d_l_e_:_:_a_r_r_a_y_I_n_d_e_x │ │ │ │ │ -Index arrayIndex │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_6_7 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_:_:_P_a_t_c_h_H_a_n_d_l_e_:_:_v_e_r_t_I_n_d_e_x │ │ │ │ │ -Index vertIndex │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_6_9 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_S_t_e_n_c_i_l_T_a_b_l_e_R_e_a_l │ │ │ │ │ -Table of subdivision stencils. │ │ │ │ │ -DDeeffiinniittiioonn _s_t_e_n_c_i_l_T_a_b_l_e_._h_:_1_4_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ -Stencil table class wrapping the template for compatibility. │ │ │ │ │ -DDeeffiinniittiioonn _s_t_e_n_c_i_l_T_a_b_l_e_._h_:_2_7_3 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_O_p_t_i_o_n_s_:_:_F_V_a_r_L_i_n_e_a_r_I_n_t_e_r_p_o_l_a_t_i_o_n │ │ │ │ │ -FVarLinearInterpolation │ │ │ │ │ -DDeeffiinniittiioonn _o_p_t_i_o_n_s_._h_:_6_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y │ │ │ │ │ +Factory for constructing a PatchTable from a TopologyRefiner. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_4_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_P_a_t_c_h_T_a_g_V_e_c_t_o_r │ │ │ │ │ +std::vector< PatchFaceTag > PatchTagVector │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_2_0_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_C_r_e_a_t_e │ │ │ │ │ +static PatchTable * Create(TopologyRefiner const &refiner, Options │ │ │ │ │ +options=Options(), ConstIndexArray selectedFaces=ConstIndexArray()) │ │ │ │ │ +Instantiates a PatchTable from a client-provided TopologyRefiner. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s │ │ │ │ │ +Public options for the PatchTable factory. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_4_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ +_g_e_n_e_r_a_t_e_V_a_r_y_i_n_g_T_a_b_l_e_s │ │ │ │ │ +unsigned int generateVaryingTables │ │ │ │ │ +Generate varying patch tables. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_2_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ +_g_e_n_e_r_a_t_e_L_e_g_a_c_y_S_h_a_r_p_C_o_r_n_e_r_P_a_t_c_h_e_s │ │ │ │ │ +unsigned int generateLegacySharpCornerPatches │ │ │ │ │ +Generate sharp regular patches at smooth corners (legacy) │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_3_7 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ +_s_h_a_r_e_E_n_d_C_a_p_P_a_t_c_h_P_o_i_n_t_s │ │ │ │ │ +unsigned int shareEndCapPatchPoints │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_2_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ +_G_e_t_R_e_f_i_n_e_A_d_a_p_t_i_v_e_O_p_t_i_o_n_s │ │ │ │ │ +TopologyRefiner::AdaptiveOptions GetRefineAdaptiveOptions() const │ │ │ │ │ +Determine adaptive refinement options to match assigned patch options. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_0_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ +_m_a_x_I_s_o_l_a_t_i_o_n_L_e_v_e_l │ │ │ │ │ +unsigned int maxIsolationLevel │ │ │ │ │ +Cap adaptive feature isolation to the given level (max. 10) │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_1_7 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_:_G_e_t_E_n_d_C_a_p_T_y_p_e │ │ │ │ │ +EndCapType GetEndCapType() const │ │ │ │ │ +Get endcap basis type. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_8_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ +_g_e_n_e_r_a_t_e_F_V_a_r_L_e_g_a_c_y_L_i_n_e_a_r_P_a_t_c_h_e_s │ │ │ │ │ +unsigned int generateFVarLegacyLinearPatches │ │ │ │ │ +Generate all linear face-varying patches (legacy) │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_3_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ +_S_e_t_P_a_t_c_h_P_r_e_c_i_s_i_o_n │ │ │ │ │ +void SetPatchPrecision() │ │ │ │ │ +Set precision of vertex patches. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ +_f_v_a_r_P_a_t_c_h_P_r_e_c_i_s_i_o_n_D_o_u_b_l_e │ │ │ │ │ +unsigned int fvarPatchPrecisionDouble │ │ │ │ │ +Generate double-precision stencils for face-varying patches. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_3_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ +_S_e_t_M_a_x_I_s_o_l_a_t_i_o_n_L_e_v_e_l │ │ │ │ │ +void SetMaxIsolationLevel(unsigned int level) │ │ │ │ │ +Set maximum isolation level. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_9_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_:_e_n_d_C_a_p_T_y_p_e │ │ │ │ │ +unsigned int endCapType │ │ │ │ │ +EndCapType. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_2_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ +_f_v_a_r_C_h_a_n_n_e_l_I_n_d_i_c_e_s │ │ │ │ │ +int const * fvarChannelIndices │ │ │ │ │ +List containing the indices of the channels selected for the factory. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_4_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ +_u_s_e_S_i_n_g_l_e_C_r_e_a_s_e_P_a_t_c_h │ │ │ │ │ +unsigned int useSingleCreasePatch │ │ │ │ │ +Use single crease patch. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_1_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ +_u_s_e_I_n_f_S_h_a_r_p_P_a_t_c_h │ │ │ │ │ +unsigned int useInfSharpPatch │ │ │ │ │ +Use infinitely-sharp patch. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_1_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_:_S_e_t_E_n_d_C_a_p_T_y_p_e │ │ │ │ │ +void SetEndCapType(EndCapType e) │ │ │ │ │ +Set endcap basis type. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_8_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ +_g_e_n_e_r_a_t_e_V_a_r_y_i_n_g_L_o_c_a_l_P_o_i_n_t_s │ │ │ │ │ +unsigned int generateVaryingLocalPoints │ │ │ │ │ +Generate local points with varying patches. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_2_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ +_i_n_c_l_u_d_e_F_V_a_r_B_a_s_e_L_e_v_e_l_I_n_d_i_c_e_s │ │ │ │ │ +unsigned int includeFVarBaseLevelIndices │ │ │ │ │ +Include base level in face-varying patch point indices (Uniform mode only) │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_1_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ +_g_e_n_e_r_a_t_e_A_l_l_L_e_v_e_l_s │ │ │ │ │ +unsigned int generateAllLevels │ │ │ │ │ +Generate levels from 'firstLevel' to 'maxLevel' (Uniform mode only) │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_1_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ +_p_a_t_c_h_P_r_e_c_i_s_i_o_n_D_o_u_b_l_e │ │ │ │ │ +unsigned int patchPrecisionDouble │ │ │ │ │ +Generate double-precision stencils for vertex patches. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_3_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ +_g_e_n_e_r_a_t_e_F_V_a_r_T_a_b_l_e_s │ │ │ │ │ +unsigned int generateFVarTables │ │ │ │ │ +Generate face-varying patch tables. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_2_9 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ +_i_n_c_l_u_d_e_B_a_s_e_L_e_v_e_l_I_n_d_i_c_e_s │ │ │ │ │ +unsigned int includeBaseLevelIndices │ │ │ │ │ +Include base level in patch point indices (Uniform mode only) │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_1_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ +_S_e_t_F_V_a_r_P_a_t_c_h_P_r_e_c_i_s_i_o_n │ │ │ │ │ +void SetFVarPatchPrecision() │ │ │ │ │ +Set precision of face-varying patches. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ +_n_u_m_F_V_a_r_C_h_a_n_n_e_l_s │ │ │ │ │ +int numFVarChannels │ │ │ │ │ +Number of channel indices and interpolation modes passed. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_3_9 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ +_t_r_i_a_n_g_u_l_a_t_e_Q_u_a_d_s │ │ │ │ │ +unsigned int triangulateQuads │ │ │ │ │ +Triangulate 'QUADS' primitives (Uniform mode only) │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_1_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_:_E_n_d_C_a_p_T_y_p_e │ │ │ │ │ +EndCapType │ │ │ │ │ +Choice for approximating irregular patches (end-caps) │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_5_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ +_E_N_D_C_A_P___L_E_G_A_C_Y___G_R_E_G_O_R_Y │ │ │ │ │ +@ ENDCAP_LEGACY_GREGORY │ │ │ │ │ +legacy option for 2.x style Gregory patches (Catmark only) │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_6_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ +_E_N_D_C_A_P___G_R_E_G_O_R_Y___B_A_S_I_S │ │ │ │ │ +@ ENDCAP_GREGORY_BASIS │ │ │ │ │ +use Gregory patches (highest quality, recommended default) │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_5_9 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_:_E_N_D_C_A_P___N_O_N_E │ │ │ │ │ +@ ENDCAP_NONE │ │ │ │ │ +unspecified │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_5_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ +_E_N_D_C_A_P___B_I_L_I_N_E_A_R___B_A_S_I_S │ │ │ │ │ +@ ENDCAP_BILINEAR_BASIS │ │ │ │ │ +use linear patches (simple quads or tris) │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_5_7 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_: │ │ │ │ │ +_E_N_D_C_A_P___B_S_P_L_I_N_E___B_A_S_I_S │ │ │ │ │ +@ ENDCAP_BSPLINE_BASIS │ │ │ │ │ +use BSpline-like patches (same patch type as regular) │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_5_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_O_p_t_i_o_n_s_:_:_O_p_t_i_o_n_s │ │ │ │ │ +Options(unsigned int maxIsolation=10) │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_6_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_P_a_t_c_h_F_a_c_e_T_a_g │ │ │ │ │ +Obsolete internal struct not intended for public use – due to be deprecated. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_9_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_P_a_t_c_h_F_a_c_e_T_a_g_:_: │ │ │ │ │ +___i_s_S_i_n_g_l_e_C_r_e_a_s_e │ │ │ │ │ +unsigned int _isSingleCrease │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_2_0_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_P_a_t_c_h_F_a_c_e_T_a_g_:_: │ │ │ │ │ +___i_s_R_e_g_u_l_a_r │ │ │ │ │ +unsigned int _isRegular │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_9_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_P_a_t_c_h_F_a_c_e_T_a_g_:_: │ │ │ │ │ +___b_o_u_n_d_a_r_y_I_n_d_e_x │ │ │ │ │ +unsigned int _boundaryIndex │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_9_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_P_a_t_c_h_F_a_c_e_T_a_g_:_: │ │ │ │ │ +_a_s_s_i_g_n_B_o_u_n_d_a_r_y_P_r_o_p_e_r_t_i_e_s_F_r_o_m_V_e_r_t_e_x_M_a_s_k │ │ │ │ │ +void assignBoundaryPropertiesFromVertexMask(int boundaryVertexMask) │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_P_a_t_c_h_F_a_c_e_T_a_g_:_: │ │ │ │ │ +___t_r_a_n_s_i_t_i_o_n_M_a_s_k │ │ │ │ │ +unsigned int _transitionMask │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_9_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_P_a_t_c_h_F_a_c_e_T_a_g_:_: │ │ │ │ │ +___h_a_s_B_o_u_n_d_a_r_y_E_d_g_e │ │ │ │ │ +unsigned int _hasBoundaryEdge │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_2_0_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_P_a_t_c_h_F_a_c_e_T_a_g_:_: │ │ │ │ │ +___b_o_u_n_d_a_r_y_M_a_s_k │ │ │ │ │ +unsigned int _boundaryMask │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_9_7 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_P_a_t_c_h_F_a_c_e_T_a_g_:_:___h_a_s_P_a_t_c_h │ │ │ │ │ +unsigned int _hasPatch │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_9_4 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_P_a_t_c_h_F_a_c_e_T_a_g_:_: │ │ │ │ │ +_a_s_s_i_g_n_T_r_a_n_s_i_t_i_o_n_P_r_o_p_e_r_t_i_e_s_F_r_o_m_E_d_g_e_M_a_s_k │ │ │ │ │ +void assignTransitionPropertiesFromEdgeMask(int boundaryVertexMask) │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_P_a_t_c_h_F_a_c_e_T_a_g_:_:_c_l_e_a_r │ │ │ │ │ +void clear() │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_P_a_t_c_h_F_a_c_e_T_a_g_:_: │ │ │ │ │ +_a_s_s_i_g_n_B_o_u_n_d_a_r_y_P_r_o_p_e_r_t_i_e_s_F_r_o_m_E_d_g_e_M_a_s_k │ │ │ │ │ +void assignBoundaryPropertiesFromEdgeMask(int boundaryEdgeMask) │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_:_:_P_a_t_c_h_F_a_c_e_T_a_g_:_: │ │ │ │ │ +___b_o_u_n_d_a_r_y_C_o_u_n_t │ │ │ │ │ +unsigned int _boundaryCount │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h_:_1_9_9 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_T_o_p_o_l_o_g_y_R_e_f_i_n_e_r │ │ │ │ │ +Stores topology data for a specified set of refinement options. │ │ │ │ │ +DDeeffiinniittiioonn _t_o_p_o_l_o_g_y_R_e_f_i_n_e_r_._h_:_5_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_T_o_p_o_l_o_g_y_R_e_f_i_n_e_r_:_:_A_d_a_p_t_i_v_e_O_p_t_i_o_n_s │ │ │ │ │ +Adaptive refinement options. │ │ │ │ │ +DDeeffiinniittiioonn _t_o_p_o_l_o_g_y_R_e_f_i_n_e_r_._h_:_1_5_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_T_o_p_o_l_o_g_y_R_e_f_i_n_e_r_:_:_A_d_a_p_t_i_v_e_O_p_t_i_o_n_s_:_: │ │ │ │ │ +_u_s_e_S_i_n_g_l_e_C_r_e_a_s_e_P_a_t_c_h │ │ │ │ │ +unsigned int useSingleCreasePatch │ │ │ │ │ +DDeeffiinniittiioonn _t_o_p_o_l_o_g_y_R_e_f_i_n_e_r_._h_:_1_7_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_T_o_p_o_l_o_g_y_R_e_f_i_n_e_r_:_:_A_d_a_p_t_i_v_e_O_p_t_i_o_n_s_:_: │ │ │ │ │ +_u_s_e_I_n_f_S_h_a_r_p_P_a_t_c_h │ │ │ │ │ +unsigned int useInfSharpPatch │ │ │ │ │ +DDeeffiinniittiioonn _t_o_p_o_l_o_g_y_R_e_f_i_n_e_r_._h_:_1_7_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_T_o_p_o_l_o_g_y_R_e_f_i_n_e_r_:_:_A_d_a_p_t_i_v_e_O_p_t_i_o_n_s_:_: │ │ │ │ │ +_c_o_n_s_i_d_e_r_F_V_a_r_C_h_a_n_n_e_l_s │ │ │ │ │ +unsigned int considerFVarChannels │ │ │ │ │ +DDeeffiinniittiioonn _t_o_p_o_l_o_g_y_R_e_f_i_n_e_r_._h_:_1_8_0 │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_V_t_r_:_:_C_o_n_s_t_A_r_r_a_y │ │ │ │ │ DDeeffiinniittiioonn _a_r_r_a_y_._h_:_5_3 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_V_t_r_:_:_A_r_r_a_y │ │ │ │ │ -DDeeffiinniittiioonn _a_r_r_a_y_._h_:_1_0_5 │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _f_a_r │ │ │ │ │ - * _p_a_t_c_h_T_a_b_l_e_._h │ │ │ │ │ + * _p_a_t_c_h_T_a_b_l_e_F_a_c_t_o_r_y_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00734.html │ │ │ │ @@ -94,15 +94,15 @@ │ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │
patchMap.h File Reference
│ │ │ │ │ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ -#include "../far/patchTable.h"
│ │ │ │ +#include "../far/patchTable.h"
│ │ │ │ #include <cassert>
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00734_source.html │ │ │ │ @@ -321,16 +321,16 @@ │ │ │ │
PatchMap(PatchTable const &patchTable)
Constructor.
│ │ │ │
Handle const * FindPatch(int patchFaceId, double u, double v) const
Returns a handle to the sub-patch of the face at the given (u,v). Note that the patch face ID corresp...
Definition patchMap.h:193
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -
Container for arrays of parametric patches.
Definition patchTable.h:55
│ │ │ │ -
Handle that can be used as unique patch identifier within PatchTable.
Definition patchTable.h:60
│ │ │ │ +
Container for arrays of parametric patches.
Definition patchTable.h:55
│ │ │ │ +
Handle that can be used as unique patch identifier within PatchTable.
Definition patchTable.h:60
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ #include "../sdc/types.h"
│ │ │ │ #include "../sdc/crease.h"
│ │ │ │ #include "../vtr/types.h"
│ │ │ │ #include "../vtr/refinement.h"
│ │ │ │ -#include "../vtr/fvarLevel.h"
│ │ │ │ +#include "../vtr/fvarLevel.h"
│ │ │ │ #include <vector>
│ │ │ │ #include <cassert>
│ │ │ │ #include <cstring>
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │

│ │ │ │ Classes

class  PatchMap
│ │ │ │ │ │ │ │ │ │ │ │

│ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00761.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/vtr/componentInterfaces.h File Reference │ │ │ │ +OpenSubdiv: opensubdiv/vtr/fvarLevel.h File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -89,23 +89,26 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Namespaces
│ │ │ │ -
componentInterfaces.h File Reference
│ │ │ │ +
fvarLevel.h File Reference
│ │ │ │
│ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ #include "../sdc/types.h"
│ │ │ │ #include "../sdc/crease.h"
│ │ │ │ +#include "../sdc/options.h"
│ │ │ │ #include "../vtr/types.h"
│ │ │ │ -#include "../vtr/stackBuffer.h"
│ │ │ │ +#include "../vtr/level.h"
│ │ │ │ #include <vector>
│ │ │ │ +#include <cassert>
│ │ │ │ +#include <cstring>
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -115,13 +118,13 @@ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  OpenSubdiv
 
 
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,24 +1,27 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -componentInterfaces.h File Reference │ │ │ │ │ +fvarLevel.h File Reference │ │ │ │ │ #include "../version.h" │ │ │ │ │ #include "_._._/_s_d_c_/_t_y_p_e_s_._h" │ │ │ │ │ #include "_._._/_s_d_c_/_c_r_e_a_s_e_._h" │ │ │ │ │ +#include "_._._/_s_d_c_/_o_p_t_i_o_n_s_._h" │ │ │ │ │ #include "_._._/_v_t_r_/_t_y_p_e_s_._h" │ │ │ │ │ -#include "_._._/_v_t_r_/_s_t_a_c_k_B_u_f_f_e_r_._h" │ │ │ │ │ +#include "_._._/_v_t_r_/_l_e_v_e_l_._h" │ │ │ │ │ #include │ │ │ │ │ +#include │ │ │ │ │ +#include │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_V_t_r │ │ │ │ │   │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _v_t_r │ │ │ │ │ - * _c_o_m_p_o_n_e_n_t_I_n_t_e_r_f_a_c_e_s_._h │ │ │ │ │ + * _f_v_a_r_L_e_v_e_l_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00761_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/vtr/componentInterfaces.h Source File │ │ │ │ +OpenSubdiv: opensubdiv/vtr/fvarLevel.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -92,15 +92,15 @@ │ │ │ │
No Matches
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
componentInterfaces.h
│ │ │ │ +
fvarLevel.h
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1//
│ │ │ │
2// Copyright 2014 DreamWorks Animation LLC.
│ │ │ │
3//
│ │ │ │
4// Licensed under the Apache License, Version 2.0 (the "Apache License")
│ │ │ │
5// with the following modification; you may not use this file except in
│ │ │ │ @@ -118,155 +118,443 @@ │ │ │ │
17//
│ │ │ │
18// Unless required by applicable law or agreed to in writing, software
│ │ │ │
19// distributed under the Apache License with the above modification is
│ │ │ │
20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
│ │ │ │
21// KIND, either express or implied. See the Apache License for the specific
│ │ │ │
22// language governing permissions and limitations under the Apache License.
│ │ │ │
23//
│ │ │ │ -
24#ifndef OPENSUBDIV3_VTR_COMPONENT_INTERFACES_H
│ │ │ │ -
25#define OPENSUBDIV3_VTR_COMPONENT_INTERFACES_H
│ │ │ │ +
24#ifndef OPENSUBDIV3_VTR_FVAR_LEVEL_H
│ │ │ │ +
25#define OPENSUBDIV3_VTR_FVAR_LEVEL_H
│ │ │ │
26
│ │ │ │
27#include "../version.h"
│ │ │ │
28
│ │ │ │
29#include "../sdc/types.h"
│ │ │ │
30#include "../sdc/crease.h"
│ │ │ │ -
31#include "../vtr/types.h"
│ │ │ │ -
32#include "../vtr/stackBuffer.h"
│ │ │ │ -
33
│ │ │ │ -
34#include <vector>
│ │ │ │ -
35
│ │ │ │ -
36
│ │ │ │ -
37namespace OpenSubdiv {
│ │ │ │ -
38namespace OPENSUBDIV_VERSION {
│ │ │ │ +
31#include "../sdc/options.h"
│ │ │ │ +
32#include "../vtr/types.h"
│ │ │ │ +
33#include "../vtr/level.h"
│ │ │ │ +
34
│ │ │ │ +
35#include <vector>
│ │ │ │ +
36#include <cassert>
│ │ │ │ +
37#include <cstring>
│ │ │ │ +
38
│ │ │ │
39
│ │ │ │ -
40namespace Vtr {
│ │ │ │ -
41namespace internal {
│ │ │ │ +
40namespace OpenSubdiv {
│ │ │ │ +
41namespace OPENSUBDIV_VERSION {
│ │ │ │
42
│ │ │ │ -
43//
│ │ │ │ -
44// Simple classes supporting the interfaces required of generic topological
│ │ │ │ -
45// types in the Scheme mask queries, e.g. <typename FACE, VERTEX, etc.>
│ │ │ │ +
43namespace Vtr {
│ │ │ │ +
44namespace internal {
│ │ │ │ +
45
│ │ │ │
46//
│ │ │ │ -
47// These are not used with Vtr but arguably belong with it as the details to
│ │ │ │ -
48// write these efficiently depends very much on intimate details of Vtr's
│ │ │ │ -
49// implementation, e.g. the use of tag bits, subdivision Rules, etc.
│ │ │ │ +
47// FVarLevel:
│ │ │ │ +
48// A "face-varying channel" includes the topology for a set of face-varying
│ │ │ │ +
49// data, relative to the topology of the Level with which it is associated.
│ │ │ │
50//
│ │ │ │ -
51
│ │ │ │ -
52
│ │ │ │ -
53//
│ │ │ │ -
54// For <typename FACE>, which provides information in the neighborhood of a face:
│ │ │ │ -
55//
│ │ │ │ -
56class FaceInterface {
│ │ │ │ -
57public:
│ │ │ │ -
58 FaceInterface() { }
│ │ │ │ -
59 FaceInterface(int vertCount) : _vertCount(vertCount) { }
│ │ │ │ -
60 ~FaceInterface() { }
│ │ │ │ -
61
│ │ │ │ -
62public: // Generic interface expected of <typename FACE>:
│ │ │ │ -
63 int GetNumVertices() const { return _vertCount; }
│ │ │ │ -
64
│ │ │ │ -
65private:
│ │ │ │ -
66 int _vertCount;
│ │ │ │ -
67};
│ │ │ │ -
68
│ │ │ │ -
69
│ │ │ │ -
70//
│ │ │ │ -
71// For <typename EDGE>, which provides information in the neighborhood of an edge:
│ │ │ │ -
72//
│ │ │ │ -
73class EdgeInterface {
│ │ │ │ -
74public:
│ │ │ │ -
75 EdgeInterface() { }
│ │ │ │ -
76 EdgeInterface(Level const& level) : _level(&level) { }
│ │ │ │ -
77 ~EdgeInterface() { }
│ │ │ │ -
78
│ │ │ │ -
79 void SetIndex(int edgeIndex) { _eIndex = edgeIndex; }
│ │ │ │ -
80
│ │ │ │ -
81public: // Generic interface expected of <typename EDGE>:
│ │ │ │ -
82 int GetNumFaces() const { return _level->getEdgeFaces(_eIndex).size(); }
│ │ │ │ -
83 float GetSharpness() const { return _level->getEdgeSharpness(_eIndex); }
│ │ │ │ -
84
│ │ │ │ -
85 void GetChildSharpnesses(Sdc::Crease const&, float s[2]) const {
│ │ │ │ -
86 // Need to use the Refinement here to identify the two child edges:
│ │ │ │ -
87 s[0] = s[1] = GetSharpness() - 1.0f;
│ │ │ │ -
88 }
│ │ │ │ +
51// Analogous to a set of vertices and face-vertices that define the topology for
│ │ │ │ +
52// the geometry, a channel requires a set of "values" and "face-values". The
│ │ │ │ +
53// "values" are indices of entries in a set of face-varying data, just as vertices
│ │ │ │ +
54// are indices into a set of vertex data. The face-values identify a value for
│ │ │ │ +
55// each vertex of the face, and so define topology for the values that may be
│ │ │ │ +
56// unique to each channel.
│ │ │ │ +
57//
│ │ │ │ +
58// In addition to the value size and the vector of face-values (which matches the
│ │ │ │ +
59// size of the geometry's face-vertices), tags are associated with each component
│ │ │ │ +
60// to identify deviations of the face-varying topology from the vertex topology.
│ │ │ │ +
61// And since there may be a one-to-many mapping between vertices and face-varying
│ │ │ │ +
62// values, that mapping is also allocated.
│ │ │ │ +
63//
│ │ │ │ +
64// It turns out that the mapping used is able to completely encode the set of
│ │ │ │ +
65// face-values and is more amenable to refinement. Currently the face-values
│ │ │ │ +
66// take up almost half the memory of this representation, so if memory does
│ │ │ │ +
67// become a concern, we do not need to store them. The only reason we do so now
│ │ │ │ +
68// is that the face-value interface for specifying base topology and inspecting
│ │ │ │ +
69// subsequent levels is very familiar to that of face-vertices for clients. So
│ │ │ │ +
70// having them available for such access is convenient.
│ │ │ │ +
71//
│ │ │ │ +
72// Regarding scope and access...
│ │ │ │ +
73// Unclear at this early state, but leaning towards nesting this class within
│ │ │ │ +
74// Level, given the intimate dependency between the two.
│ │ │ │ +
75// Everything is being declared public for now to facilitate access until it's
│ │ │ │ +
76// clearer how this functionality will be provided.
│ │ │ │ +
77//
│ │ │ │ +
78class FVarLevel {
│ │ │ │ +
79public:
│ │ │ │ +
80 //
│ │ │ │ +
81 // Component tags -- trying to minimize the types needed here:
│ │ │ │ +
82 //
│ │ │ │ +
83 // Tag per Edge:
│ │ │ │ +
84 // - facilitates topological analysis around each vertex
│ │ │ │ +
85 // - required during refinement to spawn one or more edge-values
│ │ │ │ +
86 //
│ │ │ │ +
87 struct ETag {
│ │ │ │ +
88 ETag() { }
│ │ │ │
89
│ │ │ │ -
90 void GetNumVerticesPerFace(int vertsPerFace[]) const {
│ │ │ │ -
91 ConstIndexArray eFaces = _level->getEdgeFaces(_eIndex);
│ │ │ │ -
92 for (int i = 0; i < eFaces.size(); ++i) {
│ │ │ │ -
93 vertsPerFace[i] = _level->getFaceVertices(eFaces[i]).size();
│ │ │ │ -
94 }
│ │ │ │ -
95 }
│ │ │ │ -
96
│ │ │ │ -
97private:
│ │ │ │ -
98 const Level* _level;
│ │ │ │ -
99
│ │ │ │ -
100 int _eIndex;
│ │ │ │ -
101};
│ │ │ │ -
102
│ │ │ │ -
103
│ │ │ │ -
104//
│ │ │ │ -
105// For <typename VERTEX>, which provides information in the neighborhood of a vertex:
│ │ │ │ -
106//
│ │ │ │ -
107class VertexInterface {
│ │ │ │ -
108public:
│ │ │ │ -
109 VertexInterface() { }
│ │ │ │ -
110 VertexInterface(Level const& parent, Level const& child) : _parent(&parent), _child(&child) { }
│ │ │ │ -
111 ~VertexInterface() { }
│ │ │ │ +
90 void clear() { std::memset(this, 0, sizeof(ETag)); }
│ │ │ │ +
91
│ │ │ │ +
92 typedef unsigned char ETagSize;
│ │ │ │ +
93
│ │ │ │ +
94 ETagSize _mismatch : 1; // local FVar topology does not match
│ │ │ │ +
95 ETagSize _disctsV0 : 1; // discontinuous at vertex 0
│ │ │ │ +
96 ETagSize _disctsV1 : 1; // discontinuous at vertex 1
│ │ │ │ +
97 ETagSize _linear : 1; // linear boundary constraints
│ │ │ │ +
98
│ │ │ │ +
99 Level::ETag combineWithLevelETag(Level::ETag) const;
│ │ │ │ +
100 };
│ │ │ │ +
101
│ │ │ │ +
102 //
│ │ │ │ +
103 // Tag per Value:
│ │ │ │ +
104 // - informs both refinement and interpolation
│ │ │ │ +
105 // - every value spawns a child value in refinement
│ │ │ │ +
106 // - includes a subset of Level::VTag to be later combined with a VTag
│ │ │ │ +
107 //
│ │ │ │ +
108 struct ValueTag {
│ │ │ │ +
109 ValueTag() { }
│ │ │ │ +
110
│ │ │ │ +
111 void clear() { std::memset(this, 0, sizeof(ValueTag)); }
│ │ │ │
112
│ │ │ │ -
113 void SetIndex(int parentIndex, int childIndex) {
│ │ │ │ -
114 _pIndex = parentIndex;
│ │ │ │ -
115 _cIndex = childIndex;
│ │ │ │ -
116 _eCount = _parent->getVertexEdges(_pIndex).size();
│ │ │ │ -
117 _fCount = _parent->getVertexFaces(_pIndex).size();
│ │ │ │ -
118 }
│ │ │ │ -
119
│ │ │ │ -
120public: // Generic interface expected of <typename VERT>:
│ │ │ │ -
121 int GetNumEdges() const { return _eCount; }
│ │ │ │ -
122 int GetNumFaces() const { return _fCount; }
│ │ │ │ +
113 bool isMismatch() const { return _mismatch; }
│ │ │ │ +
114 bool isCrease() const { return _crease; }
│ │ │ │ +
115 bool isCorner() const { return !_crease; }
│ │ │ │ +
116 bool isSemiSharp() const { return _semiSharp; }
│ │ │ │ +
117 bool isInfSharp() const { return !_semiSharp && !_crease; }
│ │ │ │ +
118 bool isDepSharp() const { return _depSharp; }
│ │ │ │ +
119 bool hasCreaseEnds() const { return _crease || _semiSharp; }
│ │ │ │ +
120
│ │ │ │ +
121 bool hasInfSharpEdges() const { return _infSharpEdges; }
│ │ │ │ +
122 bool hasInfIrregularity() const { return _infIrregular; }
│ │ │ │
123
│ │ │ │ -
124 float GetSharpness() const { return _parent->getVertexSharpness(_pIndex); }
│ │ │ │ -
125 float* GetSharpnessPerEdge(float pSharpness[]) const {
│ │ │ │ -
126 ConstIndexArray pEdges = _parent->getVertexEdges(_pIndex);
│ │ │ │ -
127 for (int i = 0; i < _eCount; ++i) {
│ │ │ │ -
128 pSharpness[i] = _parent->getEdgeSharpness(pEdges[i]);
│ │ │ │ -
129 }
│ │ │ │ -
130 return pSharpness;
│ │ │ │ -
131 }
│ │ │ │ -
132
│ │ │ │ -
133 float GetChildSharpness(Sdc::Crease const&) const { return _child->getVertexSharpness(_cIndex); }
│ │ │ │ -
134 float* GetChildSharpnessPerEdge(Sdc::Crease const& crease, float cSharpness[]) const {
│ │ │ │ -
135 internal::StackBuffer<float,16> pSharpness(_eCount);
│ │ │ │ -
136 GetSharpnessPerEdge(pSharpness);
│ │ │ │ -
137 crease.SubdivideEdgeSharpnessesAroundVertex(_eCount, pSharpness, cSharpness);
│ │ │ │ -
138 return cSharpness;
│ │ │ │ -
139 }
│ │ │ │ -
140
│ │ │ │ -
141private:
│ │ │ │ -
142 const Level* _parent;
│ │ │ │ -
143 const Level* _child;
│ │ │ │ -
144
│ │ │ │ -
145 int _pIndex;
│ │ │ │ -
146 int _cIndex;
│ │ │ │ -
147 int _eCount;
│ │ │ │ -
148 int _fCount;
│ │ │ │ -
149};
│ │ │ │ -
150
│ │ │ │ -
151} // end namespace internal
│ │ │ │ -
152} // end namespace Vtr
│ │ │ │ -
153
│ │ │ │ -
154} // end namespace OPENSUBDIV_VERSION
│ │ │ │ -
155using namespace OPENSUBDIV_VERSION;
│ │ │ │ -
156} // end namespace OpenSubdiv
│ │ │ │ -
157
│ │ │ │ -
158#endif /* OPENSUBDIV3_VTR_COMPONENT_INTERFACES_H */
│ │ │ │ +
124 typedef unsigned char ValueTagSize;
│ │ │ │ +
125
│ │ │ │ +
126 // If there is no mismatch, no other members should be inspected
│ │ │ │ +
127 ValueTagSize _mismatch : 1; // local FVar topology does not match
│ │ │ │ +
128 ValueTagSize _xordinary : 1; // local FVar topology is extra-ordinary
│ │ │ │ +
129 ValueTagSize _nonManifold : 1; // local FVar topology is non-manifold
│ │ │ │ +
130 ValueTagSize _crease : 1; // value is a crease, otherwise a corner
│ │ │ │ +
131 ValueTagSize _semiSharp : 1; // value is a corner decaying to crease
│ │ │ │ +
132 ValueTagSize _depSharp : 1; // value is a corner by dependency on another
│ │ │ │ +
133
│ │ │ │ +
134 ValueTagSize _infSharpEdges : 1; // value is a corner by inf-sharp features
│ │ │ │ +
135 ValueTagSize _infIrregular : 1; // value span includes inf-sharp irregularity
│ │ │ │ +
136
│ │ │ │ +
137 Level::VTag combineWithLevelVTag(Level::VTag) const;
│ │ │ │ +
138
│ │ │ │ +
139 // Alternate constructor and accessor for dealing with integer bits directly:
│ │ │ │ +
140 explicit ValueTag(ValueTagSize bits) {
│ │ │ │ +
141 std::memcpy(this, &bits, sizeof(bits));
│ │ │ │ +
142 }
│ │ │ │ +
143 ValueTagSize getBits() const {
│ │ │ │ +
144 ValueTagSize bits;
│ │ │ │ +
145 std::memcpy(&bits, this, sizeof(bits));
│ │ │ │ +
146 return bits;
│ │ │ │ +
147 }
│ │ │ │ +
148 };
│ │ │ │ +
149
│ │ │ │ +
150 typedef Vtr::ConstArray<ValueTag> ConstValueTagArray;
│ │ │ │ +
151 typedef Vtr::Array<ValueTag> ValueTagArray;
│ │ │ │ +
152
│ │ │ │ +
153 //
│ │ │ │ +
154 // Simple struct containing the "end faces" of a crease, i.e. the faces which
│ │ │ │ +
155 // contain the FVar values to be used when interpolating the crease. (Prefer
│ │ │ │ +
156 // the struct over std::pair for its member names)
│ │ │ │ +
157 //
│ │ │ │ +
158 struct CreaseEndPair {
│ │ │ │ +
159 LocalIndex _startFace;
│ │ │ │ +
160 LocalIndex _endFace;
│ │ │ │ +
161 };
│ │ │ │ +
162
│ │ │ │ +
163 typedef Vtr::ConstArray<CreaseEndPair> ConstCreaseEndPairArray;
│ │ │ │ +
164 typedef Vtr::Array<CreaseEndPair> CreaseEndPairArray;
│ │ │ │ +
165
│ │ │ │ +
166 typedef LocalIndex Sibling;
│ │ │ │ +
167
│ │ │ │ +
168 typedef ConstLocalIndexArray ConstSiblingArray;
│ │ │ │ +
169 typedef LocalIndexArray SiblingArray;
│ │ │ │ +
170
│ │ │ │ +
171public:
│ │ │ │ +
172 FVarLevel(Level const& level);
│ │ │ │ +
173 ~FVarLevel();
│ │ │ │ +
174
│ │ │ │ +
175 // Queries for the entire channel:
│ │ │ │ +
176 Level const& getLevel() const { return _level; }
│ │ │ │ +
177
│ │ │ │ +
178 int getNumValues() const { return _valueCount; }
│ │ │ │ +
179 int getNumFaceValuesTotal() const { return (int) _faceVertValues.size(); }
│ │ │ │ +
180
│ │ │ │ +
181 bool isLinear() const { return _isLinear; }
│ │ │ │ +
182 bool hasLinearBoundaries() const { return _hasLinearBoundaries; }
│ │ │ │ +
183 bool hasSmoothBoundaries() const { return ! _hasLinearBoundaries; }
│ │ │ │ +
184 bool hasCreaseEnds() const { return hasSmoothBoundaries(); }
│ │ │ │ +
185
│ │ │ │ +
186 Sdc::Options getOptions() const { return _options; }
│ │ │ │ +
187
│ │ │ │ +
188 // Queries per face:
│ │ │ │ +
189 ConstIndexArray getFaceValues(Index fIndex) const;
│ │ │ │ +
190 IndexArray getFaceValues(Index fIndex);
│ │ │ │ +
191
│ │ │ │ +
192 // Queries per edge:
│ │ │ │ +
193 ETag getEdgeTag(Index eIndex) const { return _edgeTags[eIndex]; }
│ │ │ │ +
194 bool edgeTopologyMatches(Index eIndex) const { return !getEdgeTag(eIndex)._mismatch; }
│ │ │ │ +
195
│ │ │ │ +
196 // Queries per vertex (and its potential sibling values):
│ │ │ │ +
197 int getNumVertexValues(Index v) const { return _vertSiblingCounts[v]; }
│ │ │ │ +
198 Index getVertexValueOffset(Index v, Sibling i = 0) const { return _vertSiblingOffsets[v] + i; }
│ │ │ │ +
199
│ │ │ │ +
200 Index getVertexValue(Index v, Sibling i = 0) const { return _vertValueIndices[getVertexValueOffset(v,i)]; }
│ │ │ │ +
201
│ │ │ │ +
202 Index findVertexValueIndex(Index vertexIndex, Index valueIndex) const;
│ │ │ │ +
203
│ │ │ │ +
204 // Methods to access/modify array properties per vertex:
│ │ │ │ +
205 ConstIndexArray getVertexValues(Index vIndex) const;
│ │ │ │ +
206 IndexArray getVertexValues(Index vIndex);
│ │ │ │ +
207
│ │ │ │ +
208 ConstValueTagArray getVertexValueTags(Index vIndex) const;
│ │ │ │ +
209 ValueTagArray getVertexValueTags(Index vIndex);
│ │ │ │ +
210
│ │ │ │ +
211 ConstCreaseEndPairArray getVertexValueCreaseEnds(Index vIndex) const;
│ │ │ │ +
212 CreaseEndPairArray getVertexValueCreaseEnds(Index vIndex);
│ │ │ │ +
213
│ │ │ │ +
214 ConstSiblingArray getVertexFaceSiblings(Index vIndex) const;
│ │ │ │ +
215 SiblingArray getVertexFaceSiblings(Index vIndex);
│ │ │ │ +
216
│ │ │ │ +
217 // Queries per value:
│ │ │ │ +
218 ValueTag getValueTag(Index valueIndex) const { return _vertValueTags[valueIndex]; }
│ │ │ │ +
219 bool valueTopologyMatches(Index valueIndex) const { return !getValueTag(valueIndex)._mismatch; }
│ │ │ │ +
220
│ │ │ │ +
221 CreaseEndPair getValueCreaseEndPair(Index valueIndex) const { return _vertValueCreaseEnds[valueIndex]; }
│ │ │ │ +
222
│ │ │ │ +
223 // Tag queries related to faces (use Level methods for those returning Level::VTag/ETag)
│ │ │ │ +
224 void getFaceValueTags(Index faceIndex, ValueTag valueTags[]) const;
│ │ │ │ +
225
│ │ │ │ +
226 ValueTag getFaceCompositeValueTag(Index faceIndex) const;
│ │ │ │ +
227
│ │ │ │ +
228 // Higher-level topological queries, i.e. values in a neighborhood:
│ │ │ │ +
229 void getEdgeFaceValues(Index eIndex, int fIncToEdge, Index valuesPerVert[2]) const;
│ │ │ │ +
230 void getVertexEdgeValues(Index vIndex, Index valuesPerEdge[]) const;
│ │ │ │ +
231 void getVertexCreaseEndValues(Index vIndex, Sibling sibling, Index endValues[2]) const;
│ │ │ │ +
232
│ │ │ │ +
233 // Initialization and allocation helpers:
│ │ │ │ +
234 void setOptions(Sdc::Options const& options);
│ │ │ │ +
235 void resizeVertexValues(int numVertexValues);
│ │ │ │ +
236 void resizeValues(int numValues);
│ │ │ │ +
237 void resizeComponents();
│ │ │ │ +
238
│ │ │ │ +
239 // Topological analysis methods -- tagging and face-value population:
│ │ │ │ +
240 void completeTopologyFromFaceValues(int regBoundaryValence);
│ │ │ │ +
241 void initializeFaceValuesFromFaceVertices();
│ │ │ │ +
242 void initializeFaceValuesFromVertexFaceSiblings();
│ │ │ │ +
243
│ │ │ │ +
244 struct ValueSpan;
│ │ │ │ +
245 void gatherValueSpans(Index vIndex, ValueSpan * vValueSpans) const;
│ │ │ │ +
246
│ │ │ │ +
247 // Debugging methods:
│ │ │ │ +
248 bool validate() const;
│ │ │ │ +
249 void print() const;
│ │ │ │ +
250 void buildFaceVertexSiblingsFromVertexFaceSiblings(std::vector<Sibling>& fvSiblings) const;
│ │ │ │ +
251
│ │ │ │ +
252private:
│ │ │ │ +
253 // Just as Refinements build Levels, FVarRefinements build FVarLevels...
│ │ │ │ +
254 friend class FVarRefinement;
│ │ │ │ +
255
│ │ │ │ +
256 Level const & _level;
│ │ │ │ +
257
│ │ │ │ +
258 // Linear interpolation options vary between channels:
│ │ │ │ +
259 Sdc::Options _options;
│ │ │ │ +
260
│ │ │ │ +
261 bool _isLinear;
│ │ │ │ +
262 bool _hasLinearBoundaries;
│ │ │ │ +
263 bool _hasDependentSharpness;
│ │ │ │ +
264 int _valueCount;
│ │ │ │ +
265
│ │ │ │ +
266 //
│ │ │ │ +
267 // Vectors recording face-varying topology including tags that help propagate
│ │ │ │ +
268 // data through the refinement hierarchy. Vectors are not sparse but most use
│ │ │ │ +
269 // 8-bit values relative to the local topology.
│ │ │ │ +
270 //
│ │ │ │ +
271 // The vector of face-values is actually redundant here, but is constructed as
│ │ │ │ +
272 // it is most convenient for clients. It represents almost half the memory of
│ │ │ │ +
273 // the topology (4 32-bit integers per face) and not surprisingly, populating
│ │ │ │ +
274 // it takes a considerable amount of the refinement time (1/3). We can reduce
│ │ │ │ +
275 // both if we are willing to compute these on demand for clients.
│ │ │ │ +
276 //
│ │ │ │ +
277 // Per-face (matches face-verts of corresponding level):
│ │ │ │ +
278 std::vector<Index> _faceVertValues;
│ │ │ │ +
279
│ │ │ │ +
280 // Per-edge:
│ │ │ │ +
281 std::vector<ETag> _edgeTags;
│ │ │ │ +
282
│ │ │ │ +
283 // Per-vertex:
│ │ │ │ +
284 std::vector<Sibling> _vertSiblingCounts;
│ │ │ │ +
285 std::vector<int> _vertSiblingOffsets;
│ │ │ │ +
286 std::vector<Sibling> _vertFaceSiblings;
│ │ │ │ +
287
│ │ │ │ +
288 // Per-value:
│ │ │ │ +
289 std::vector<Index> _vertValueIndices;
│ │ │ │ +
290 std::vector<ValueTag> _vertValueTags;
│ │ │ │ +
291 std::vector<CreaseEndPair> _vertValueCreaseEnds;
│ │ │ │ +
292};
│ │ │ │ +
293
│ │ │ │ +
294//
│ │ │ │ +
295// Access/modify the values associated with each face:
│ │ │ │ +
296//
│ │ │ │ +
297inline ConstIndexArray
│ │ │ │ +
298FVarLevel::getFaceValues(Index fIndex) const {
│ │ │ │ +
299
│ │ │ │ +
300 int vCount = _level.getNumFaceVertices(fIndex);
│ │ │ │ +
301 int vOffset = _level.getOffsetOfFaceVertices(fIndex);
│ │ │ │ +
302 return ConstIndexArray(&_faceVertValues[vOffset], vCount);
│ │ │ │ +
303}
│ │ │ │ +
304inline IndexArray
│ │ │ │ +
305FVarLevel::getFaceValues(Index fIndex) {
│ │ │ │ +
306
│ │ │ │ +
307 int vCount = _level.getNumFaceVertices(fIndex);
│ │ │ │ +
308 int vOffset = _level.getOffsetOfFaceVertices(fIndex);
│ │ │ │ +
309 return IndexArray(&_faceVertValues[vOffset], vCount);
│ │ │ │ +
310}
│ │ │ │ +
311
│ │ │ │ +
312inline FVarLevel::ConstSiblingArray
│ │ │ │ +
313FVarLevel::getVertexFaceSiblings(Index vIndex) const {
│ │ │ │ +
314
│ │ │ │ +
315 int vCount = _level.getNumVertexFaces(vIndex);
│ │ │ │ +
316 int vOffset = _level.getOffsetOfVertexFaces(vIndex);
│ │ │ │ +
317 return ConstSiblingArray(&_vertFaceSiblings[vOffset], vCount);
│ │ │ │ +
318}
│ │ │ │ +
319inline FVarLevel::SiblingArray
│ │ │ │ +
320FVarLevel::getVertexFaceSiblings(Index vIndex) {
│ │ │ │ +
321
│ │ │ │ +
322 int vCount = _level.getNumVertexFaces(vIndex);
│ │ │ │ +
323 int vOffset = _level.getOffsetOfVertexFaces(vIndex);
│ │ │ │ +
324 return SiblingArray(&_vertFaceSiblings[vOffset], vCount);
│ │ │ │ +
325}
│ │ │ │ +
326
│ │ │ │ +
327inline ConstIndexArray
│ │ │ │ +
328FVarLevel::getVertexValues(Index vIndex) const
│ │ │ │ +
329{
│ │ │ │ +
330 int vCount = getNumVertexValues(vIndex);
│ │ │ │ +
331 int vOffset = getVertexValueOffset(vIndex);
│ │ │ │ +
332 return ConstIndexArray(&_vertValueIndices[vOffset], vCount);
│ │ │ │ +
333}
│ │ │ │ +
334inline IndexArray
│ │ │ │ +
335FVarLevel::getVertexValues(Index vIndex)
│ │ │ │ +
336{
│ │ │ │ +
337 int vCount = getNumVertexValues(vIndex);
│ │ │ │ +
338 int vOffset = getVertexValueOffset(vIndex);
│ │ │ │ +
339 return IndexArray(&_vertValueIndices[vOffset], vCount);
│ │ │ │ +
340}
│ │ │ │ +
341
│ │ │ │ +
342inline FVarLevel::ConstValueTagArray
│ │ │ │ +
343FVarLevel::getVertexValueTags(Index vIndex) const
│ │ │ │ +
344{
│ │ │ │ +
345 int vCount = getNumVertexValues(vIndex);
│ │ │ │ +
346 int vOffset = getVertexValueOffset(vIndex);
│ │ │ │ +
347 return ConstValueTagArray(&_vertValueTags[vOffset], vCount);
│ │ │ │ +
348}
│ │ │ │ +
349inline FVarLevel::ValueTagArray
│ │ │ │ +
350FVarLevel::getVertexValueTags(Index vIndex)
│ │ │ │ +
351{
│ │ │ │ +
352 int vCount = getNumVertexValues(vIndex);
│ │ │ │ +
353 int vOffset = getVertexValueOffset(vIndex);
│ │ │ │ +
354 return ValueTagArray(&_vertValueTags[vOffset], vCount);
│ │ │ │ +
355}
│ │ │ │ +
356
│ │ │ │ +
357inline FVarLevel::ConstCreaseEndPairArray
│ │ │ │ +
358FVarLevel::getVertexValueCreaseEnds(Index vIndex) const
│ │ │ │ +
359{
│ │ │ │ +
360 int vCount = getNumVertexValues(vIndex);
│ │ │ │ +
361 int vOffset = getVertexValueOffset(vIndex);
│ │ │ │ +
362 return ConstCreaseEndPairArray(&_vertValueCreaseEnds[vOffset], vCount);
│ │ │ │ +
363}
│ │ │ │ +
364inline FVarLevel::CreaseEndPairArray
│ │ │ │ +
365FVarLevel::getVertexValueCreaseEnds(Index vIndex)
│ │ │ │ +
366{
│ │ │ │ +
367 int vCount = getNumVertexValues(vIndex);
│ │ │ │ +
368 int vOffset = getVertexValueOffset(vIndex);
│ │ │ │ +
369 return CreaseEndPairArray(&_vertValueCreaseEnds[vOffset], vCount);
│ │ │ │ +
370}
│ │ │ │ +
371
│ │ │ │ +
372inline Index
│ │ │ │ +
373FVarLevel::findVertexValueIndex(Index vertexIndex, Index valueIndex) const {
│ │ │ │ +
374
│ │ │ │ +
375 if (_level.getDepth() > 0) return valueIndex;
│ │ │ │ +
376
│ │ │ │ +
377 Index vvIndex = getVertexValueOffset(vertexIndex);
│ │ │ │ +
378 while (_vertValueIndices[vvIndex] != valueIndex) {
│ │ │ │ +
379 ++ vvIndex;
│ │ │ │ +
380 }
│ │ │ │ +
381 return vvIndex;
│ │ │ │ +
382}
│ │ │ │ +
383
│ │ │ │ +
384//
│ │ │ │ +
385// Methods related to tagging:
│ │ │ │ +
386//
│ │ │ │ +
387inline Level::ETag
│ │ │ │ +
388FVarLevel::ETag::combineWithLevelETag(Level::ETag levelTag) const
│ │ │ │ +
389{
│ │ │ │ +
390 if (this->_mismatch) {
│ │ │ │ +
391 levelTag._boundary = true;
│ │ │ │ +
392 levelTag._infSharp = true;
│ │ │ │ +
393 }
│ │ │ │ +
394 return levelTag;
│ │ │ │ +
395}
│ │ │ │ +
396inline Level::VTag
│ │ │ │ +
397FVarLevel::ValueTag::combineWithLevelVTag(Level::VTag levelTag) const
│ │ │ │ +
398{
│ │ │ │ +
399 if (this->_mismatch) {
│ │ │ │ +
400 //
│ │ │ │ +
401 // Semi-sharp FVar values are always tagged and treated as corners
│ │ │ │ +
402 // (at least three sharp edges (two boundary edges and one interior
│ │ │ │ +
403 // semi-sharp) and/or vertex is semi-sharp) until the sharpness has
│ │ │ │ +
404 // decayed, but they ultimately lie on the inf-sharp crease of the
│ │ │ │ +
405 // FVar boundary. Consider this when tagging inf-sharp features.
│ │ │ │ +
406 //
│ │ │ │ +
407 if (this->isCorner()) {
│ │ │ │ +
408 levelTag._rule = (Level::VTag::VTagSize) Sdc::Crease::RULE_CORNER;
│ │ │ │ +
409 } else {
│ │ │ │ +
410 levelTag._rule = (Level::VTag::VTagSize) Sdc::Crease::RULE_CREASE;
│ │ │ │ +
411 }
│ │ │ │ +
412 if (this->isCrease() || this->isSemiSharp()) {
│ │ │ │ +
413 levelTag._infSharp = false;
│ │ │ │ +
414 levelTag._infSharpCrease = true;
│ │ │ │ +
415 levelTag._corner = false;
│ │ │ │ +
416 } else {
│ │ │ │ +
417 levelTag._infSharp = true;
│ │ │ │ +
418 levelTag._infSharpCrease = false;
│ │ │ │ +
419 levelTag._corner = !this->_infIrregular && !this->_infSharpEdges;
│ │ │ │ +
420 }
│ │ │ │ +
421 levelTag._infSharpEdges = true;
│ │ │ │ +
422 levelTag._infIrregular = this->_infIrregular;
│ │ │ │ +
423
│ │ │ │ +
424 levelTag._boundary = true;
│ │ │ │ +
425 levelTag._xordinary = this->_xordinary;
│ │ │ │ +
426
│ │ │ │ +
427 levelTag._nonManifold |= this->_nonManifold;
│ │ │ │ +
428 }
│ │ │ │ +
429 return levelTag;
│ │ │ │ +
430}
│ │ │ │ +
431
│ │ │ │ +
432} // end namespace internal
│ │ │ │ +
433} // end namespace Vtr
│ │ │ │ +
434
│ │ │ │ +
435} // end namespace OPENSUBDIV_VERSION
│ │ │ │ +
436using namespace OPENSUBDIV_VERSION;
│ │ │ │ +
437} // end namespace OpenSubdiv
│ │ │ │ +
438
│ │ │ │ +
439#endif /* OPENSUBDIV3_VTR_FVAR_LEVEL_H */
│ │ │ │ │ │ │ │ +
ConstArray< LocalIndex > ConstLocalIndexArray
Definition types.h:83
│ │ │ │ +
Array< LocalIndex > LocalIndexArray
Definition types.h:82
│ │ │ │ + │ │ │ │
ConstArray< Index > ConstIndexArray
Definition types.h:80
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,12 +1,12 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ -componentInterfaces.h │ │ │ │ │ +fvarLevel.h │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// │ │ │ │ │ 2// Copyright 2014 DreamWorks Animation LLC. │ │ │ │ │ 3// │ │ │ │ │ 4// Licensed under the Apache License, Version 2.0 (the "Apache License") │ │ │ │ │ 5// with the following modification; you may not use this file except in │ │ │ │ │ 6// compliance with the Apache License and the following modification to it: │ │ │ │ │ @@ -23,158 +23,484 @@ │ │ │ │ │ 17// │ │ │ │ │ 18// Unless required by applicable law or agreed to in writing, software │ │ │ │ │ 19// distributed under the Apache License with the above modification is │ │ │ │ │ 20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY │ │ │ │ │ 21// KIND, either express or implied. See the Apache License for the specific │ │ │ │ │ 22// language governing permissions and limitations under the Apache License. │ │ │ │ │ 23// │ │ │ │ │ -24#ifndef OPENSUBDIV3_VTR_COMPONENT_INTERFACES_H │ │ │ │ │ -25#define OPENSUBDIV3_VTR_COMPONENT_INTERFACES_H │ │ │ │ │ +24#ifndef OPENSUBDIV3_VTR_FVAR_LEVEL_H │ │ │ │ │ +25#define OPENSUBDIV3_VTR_FVAR_LEVEL_H │ │ │ │ │ 26 │ │ │ │ │ 27#include "../version.h" │ │ │ │ │ 28 │ │ │ │ │ 29#include "../sdc/types.h" │ │ │ │ │ 30#include "../sdc/crease.h" │ │ │ │ │ -31#include "../vtr/types.h" │ │ │ │ │ -32#include "../vtr/stackBuffer.h" │ │ │ │ │ -33 │ │ │ │ │ -34#include │ │ │ │ │ -35 │ │ │ │ │ -36 │ │ │ │ │ -37namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ -38namespace OPENSUBDIV_VERSION { │ │ │ │ │ +31#include "../sdc/options.h" │ │ │ │ │ +32#include "../vtr/types.h" │ │ │ │ │ +33#include "../vtr/level.h" │ │ │ │ │ +34 │ │ │ │ │ +35#include │ │ │ │ │ +36#include │ │ │ │ │ +37#include │ │ │ │ │ +38 │ │ │ │ │ 39 │ │ │ │ │ -40namespace Vtr { │ │ │ │ │ -41namespace internal { │ │ │ │ │ +40namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ +41namespace OPENSUBDIV_VERSION { │ │ │ │ │ 42 │ │ │ │ │ -43// │ │ │ │ │ -44// Simple classes supporting the interfaces required of generic topological │ │ │ │ │ -45// types in the Scheme mask queries, e.g. │ │ │ │ │ +43namespace Vtr { │ │ │ │ │ +44namespace internal { │ │ │ │ │ +45 │ │ │ │ │ 46// │ │ │ │ │ -47// These are not used with Vtr but arguably belong with it as the details to │ │ │ │ │ -48// write these efficiently depends very much on intimate details of Vtr's │ │ │ │ │ -49// implementation, e.g. the use of tag bits, subdivision Rules, etc. │ │ │ │ │ +47// FVarLevel: │ │ │ │ │ +48// A "face-varying channel" includes the topology for a set of face-varying │ │ │ │ │ +49// data, relative to the topology of the Level with which it is associated. │ │ │ │ │ 50// │ │ │ │ │ -51 │ │ │ │ │ -52 │ │ │ │ │ -53// │ │ │ │ │ -54// For , which provides information in the neighborhood of a │ │ │ │ │ -face: │ │ │ │ │ -55// │ │ │ │ │ -56class FaceInterface { │ │ │ │ │ -57public: │ │ │ │ │ -58 FaceInterface() { } │ │ │ │ │ -59 FaceInterface(int vertCount) : _vertCount(vertCount) { } │ │ │ │ │ -60 ~FaceInterface() { } │ │ │ │ │ -61 │ │ │ │ │ -62public: // Generic interface expected of : │ │ │ │ │ -63 int GetNumVertices() const { return _vertCount; } │ │ │ │ │ -64 │ │ │ │ │ -65private: │ │ │ │ │ -66 int _vertCount; │ │ │ │ │ -67}; │ │ │ │ │ -68 │ │ │ │ │ -69 │ │ │ │ │ -70// │ │ │ │ │ -71// For , which provides information in the neighborhood of an │ │ │ │ │ -edge: │ │ │ │ │ -72// │ │ │ │ │ -73class EdgeInterface { │ │ │ │ │ -74public: │ │ │ │ │ -75 EdgeInterface() { } │ │ │ │ │ -76 EdgeInterface(Level const& level) : _level(&level) { } │ │ │ │ │ -77 ~EdgeInterface() { } │ │ │ │ │ -78 │ │ │ │ │ -79 void SetIndex(int edgeIndex) { _eIndex = edgeIndex; } │ │ │ │ │ -80 │ │ │ │ │ -81public: // Generic interface expected of : │ │ │ │ │ -82 int GetNumFaces() const { return _level->getEdgeFaces(_eIndex).size(); } │ │ │ │ │ -83 float GetSharpness() const { return _level->getEdgeSharpness(_eIndex); } │ │ │ │ │ -84 │ │ │ │ │ -85 void GetChildSharpnesses(Sdc::Crease const&, float s[2]) const { │ │ │ │ │ -86 // Need to use the Refinement here to identify the two child edges: │ │ │ │ │ -87 s[0] = s[1] = GetSharpness() - 1.0f; │ │ │ │ │ -88 } │ │ │ │ │ +51// Analogous to a set of vertices and face-vertices that define the topology │ │ │ │ │ +for │ │ │ │ │ +52// the geometry, a channel requires a set of "values" and "face-values". The │ │ │ │ │ +53// "values" are indices of entries in a set of face-varying data, just as │ │ │ │ │ +vertices │ │ │ │ │ +54// are indices into a set of vertex data. The face-values identify a value │ │ │ │ │ +for │ │ │ │ │ +55// each vertex of the face, and so define topology for the values that may be │ │ │ │ │ +56// unique to each channel. │ │ │ │ │ +57// │ │ │ │ │ +58// In addition to the value size and the vector of face-values (which matches │ │ │ │ │ +the │ │ │ │ │ +59// size of the geometry's face-vertices), tags are associated with each │ │ │ │ │ +component │ │ │ │ │ +60// to identify deviations of the face-varying topology from the vertex │ │ │ │ │ +topology. │ │ │ │ │ +61// And since there may be a one-to-many mapping between vertices and face- │ │ │ │ │ +varying │ │ │ │ │ +62// values, that mapping is also allocated. │ │ │ │ │ +63// │ │ │ │ │ +64// It turns out that the mapping used is able to completely encode the set of │ │ │ │ │ +65// face-values and is more amenable to refinement. Currently the face-values │ │ │ │ │ +66// take up almost half the memory of this representation, so if memory does │ │ │ │ │ +67// become a concern, we do not need to store them. The only reason we do so │ │ │ │ │ +now │ │ │ │ │ +68// is that the face-value interface for specifying base topology and │ │ │ │ │ +inspecting │ │ │ │ │ +69// subsequent levels is very familiar to that of face-vertices for clients. │ │ │ │ │ +So │ │ │ │ │ +70// having them available for such access is convenient. │ │ │ │ │ +71// │ │ │ │ │ +72// Regarding scope and access... │ │ │ │ │ +73// Unclear at this early state, but leaning towards nesting this class within │ │ │ │ │ +74// Level, given the intimate dependency between the two. │ │ │ │ │ +75// Everything is being declared public for now to facilitate access until │ │ │ │ │ +it's │ │ │ │ │ +76// clearer how this functionality will be provided. │ │ │ │ │ +77// │ │ │ │ │ +78class FVarLevel { │ │ │ │ │ +79public: │ │ │ │ │ +80 // │ │ │ │ │ +81 // Component tags -- trying to minimize the types needed here: │ │ │ │ │ +82 // │ │ │ │ │ +83 // Tag per Edge: │ │ │ │ │ +84 // - facilitates topological analysis around each vertex │ │ │ │ │ +85 // - required during refinement to spawn one or more edge-values │ │ │ │ │ +86 // │ │ │ │ │ +87 struct ETag { │ │ │ │ │ +88 ETag() { } │ │ │ │ │ 89 │ │ │ │ │ -90 void GetNumVerticesPerFace(int vertsPerFace[]) const { │ │ │ │ │ -91 _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y eFaces = _level->getEdgeFaces(_eIndex); │ │ │ │ │ -92 for (int i = 0; i < eFaces.size(); ++i) { │ │ │ │ │ -93 vertsPerFace[i] = _level->getFaceVertices(eFaces[i]).size(); │ │ │ │ │ -94 } │ │ │ │ │ -95 } │ │ │ │ │ -96 │ │ │ │ │ -97private: │ │ │ │ │ -98 const Level* _level; │ │ │ │ │ -99 │ │ │ │ │ -100 int _eIndex; │ │ │ │ │ -101}; │ │ │ │ │ -102 │ │ │ │ │ -103 │ │ │ │ │ -104// │ │ │ │ │ -105// For , which provides information in the neighborhood of │ │ │ │ │ -a vertex: │ │ │ │ │ -106// │ │ │ │ │ -107class VertexInterface { │ │ │ │ │ -108public: │ │ │ │ │ -109 VertexInterface() { } │ │ │ │ │ -110 VertexInterface(Level const& parent, Level const& child) : _parent │ │ │ │ │ -(&parent), _child(&child) { } │ │ │ │ │ -111 ~VertexInterface() { } │ │ │ │ │ +90 void clear() { std::memset(this, 0, sizeof(ETag)); } │ │ │ │ │ +91 │ │ │ │ │ +92 typedef unsigned char ETagSize; │ │ │ │ │ +93 │ │ │ │ │ +94 ETagSize _mismatch : 1; // local FVar topology does not match │ │ │ │ │ +95 ETagSize _disctsV0 : 1; // discontinuous at vertex 0 │ │ │ │ │ +96 ETagSize _disctsV1 : 1; // discontinuous at vertex 1 │ │ │ │ │ +97 ETagSize _linear : 1; // linear boundary constraints │ │ │ │ │ +98 │ │ │ │ │ +99 Level::ETag combineWithLevelETag(Level::ETag) const; │ │ │ │ │ +100 }; │ │ │ │ │ +101 │ │ │ │ │ +102 // │ │ │ │ │ +103 // Tag per Value: │ │ │ │ │ +104 // - informs both refinement and interpolation │ │ │ │ │ +105 // - every value spawns a child value in refinement │ │ │ │ │ +106 // - includes a subset of Level::VTag to be later combined with a VTag │ │ │ │ │ +107 // │ │ │ │ │ +108 struct ValueTag { │ │ │ │ │ +109 ValueTag() { } │ │ │ │ │ +110 │ │ │ │ │ +111 void clear() { std::memset(this, 0, sizeof(ValueTag)); } │ │ │ │ │ 112 │ │ │ │ │ -113 void SetIndex(int parentIndex, int childIndex) { │ │ │ │ │ -114 _pIndex = parentIndex; │ │ │ │ │ -115 _cIndex = childIndex; │ │ │ │ │ -116 _eCount = _parent->getVertexEdges(_pIndex).size(); │ │ │ │ │ -117 _fCount = _parent->getVertexFaces(_pIndex).size(); │ │ │ │ │ -118 } │ │ │ │ │ -119 │ │ │ │ │ -120public: // Generic interface expected of : │ │ │ │ │ -121 int GetNumEdges() const { return _eCount; } │ │ │ │ │ -122 int GetNumFaces() const { return _fCount; } │ │ │ │ │ +113 bool isMismatch() const { return _mismatch; } │ │ │ │ │ +114 bool isCrease() const { return _crease; } │ │ │ │ │ +115 bool isCorner() const { return !_crease; } │ │ │ │ │ +116 bool isSemiSharp() const { return _semiSharp; } │ │ │ │ │ +117 bool isInfSharp() const { return !_semiSharp && !_crease; } │ │ │ │ │ +118 bool isDepSharp() const { return _depSharp; } │ │ │ │ │ +119 bool hasCreaseEnds() const { return _crease || _semiSharp; } │ │ │ │ │ +120 │ │ │ │ │ +121 bool hasInfSharpEdges() const { return _infSharpEdges; } │ │ │ │ │ +122 bool hasInfIrregularity() const { return _infIrregular; } │ │ │ │ │ 123 │ │ │ │ │ -124 float GetSharpness() const { return _parent->getVertexSharpness(_pIndex); } │ │ │ │ │ -125 float* GetSharpnessPerEdge(float pSharpness[]) const { │ │ │ │ │ -126 _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y pEdges = _parent->getVertexEdges(_pIndex); │ │ │ │ │ -127 for (int i = 0; i < _eCount; ++i) { │ │ │ │ │ -128 pSharpness[i] = _parent->getEdgeSharpness(pEdges[i]); │ │ │ │ │ -129 } │ │ │ │ │ -130 return pSharpness; │ │ │ │ │ -131 } │ │ │ │ │ -132 │ │ │ │ │ -133 float GetChildSharpness(Sdc::Crease const&) const { return _child- │ │ │ │ │ ->getVertexSharpness(_cIndex); } │ │ │ │ │ -134 float* GetChildSharpnessPerEdge(Sdc::Crease const& crease, float cSharpness │ │ │ │ │ -[]) const { │ │ │ │ │ -135 internal::StackBuffer pSharpness(_eCount); │ │ │ │ │ -136 GetSharpnessPerEdge(pSharpness); │ │ │ │ │ -137 crease.SubdivideEdgeSharpnessesAroundVertex(_eCount, pSharpness, │ │ │ │ │ -cSharpness); │ │ │ │ │ -138 return cSharpness; │ │ │ │ │ -139 } │ │ │ │ │ -140 │ │ │ │ │ -141private: │ │ │ │ │ -142 const Level* _parent; │ │ │ │ │ -143 const Level* _child; │ │ │ │ │ -144 │ │ │ │ │ -145 int _pIndex; │ │ │ │ │ -146 int _cIndex; │ │ │ │ │ -147 int _eCount; │ │ │ │ │ -148 int _fCount; │ │ │ │ │ -149}; │ │ │ │ │ -150 │ │ │ │ │ -151} // end namespace internal │ │ │ │ │ -152} // end namespace Vtr │ │ │ │ │ -153 │ │ │ │ │ -154} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ -155using namespace OPENSUBDIV_VERSION; │ │ │ │ │ -156} // end namespace OpenSubdiv │ │ │ │ │ -157 │ │ │ │ │ -158#endif /* OPENSUBDIV3_VTR_COMPONENT_INTERFACES_H */ │ │ │ │ │ +124 typedef unsigned char ValueTagSize; │ │ │ │ │ +125 │ │ │ │ │ +126 // If there is no mismatch, no other members should be inspected │ │ │ │ │ +127 ValueTagSize _mismatch : 1; // local FVar topology does not match │ │ │ │ │ +128 ValueTagSize _xordinary : 1; // local FVar topology is extra-ordinary │ │ │ │ │ +129 ValueTagSize _nonManifold : 1; // local FVar topology is non-manifold │ │ │ │ │ +130 ValueTagSize _crease : 1; // value is a crease, otherwise a corner │ │ │ │ │ +131 ValueTagSize _semiSharp : 1; // value is a corner decaying to crease │ │ │ │ │ +132 ValueTagSize _depSharp : 1; // value is a corner by dependency on another │ │ │ │ │ +133 │ │ │ │ │ +134 ValueTagSize _infSharpEdges : 1; // value is a corner by inf-sharp features │ │ │ │ │ +135 ValueTagSize _infIrregular : 1; // value span includes inf-sharp │ │ │ │ │ +irregularity │ │ │ │ │ +136 │ │ │ │ │ +137 Level::VTag combineWithLevelVTag(Level::VTag) const; │ │ │ │ │ +138 │ │ │ │ │ +139 // Alternate constructor and accessor for dealing with integer bits │ │ │ │ │ +directly: │ │ │ │ │ +140 explicit ValueTag(ValueTagSize bits) { │ │ │ │ │ +141 std::memcpy(this, &bits, sizeof(bits)); │ │ │ │ │ +142 } │ │ │ │ │ +143 ValueTagSize getBits() const { │ │ │ │ │ +144 ValueTagSize bits; │ │ │ │ │ +145 std::memcpy(&bits, this, sizeof(bits)); │ │ │ │ │ +146 return bits; │ │ │ │ │ +147 } │ │ │ │ │ +148 }; │ │ │ │ │ +149 │ │ │ │ │ +150 typedef Vtr::ConstArray ConstValueTagArray; │ │ │ │ │ +151 typedef Vtr::Array ValueTagArray; │ │ │ │ │ +152 │ │ │ │ │ +153 // │ │ │ │ │ +154 // Simple struct containing the "end faces" of a crease, i.e. the faces │ │ │ │ │ +which │ │ │ │ │ +155 // contain the FVar values to be used when interpolating the crease. │ │ │ │ │ +(Prefer │ │ │ │ │ +156 // the struct over std::pair for its member names) │ │ │ │ │ +157 // │ │ │ │ │ +158 struct CreaseEndPair { │ │ │ │ │ +159 _L_o_c_a_l_I_n_d_e_x _startFace; │ │ │ │ │ +160 _L_o_c_a_l_I_n_d_e_x _endFace; │ │ │ │ │ +161 }; │ │ │ │ │ +162 │ │ │ │ │ +163 typedef Vtr::ConstArray ConstCreaseEndPairArray; │ │ │ │ │ +164 typedef Vtr::Array CreaseEndPairArray; │ │ │ │ │ +165 │ │ │ │ │ +166 typedef _L_o_c_a_l_I_n_d_e_x Sibling; │ │ │ │ │ +167 │ │ │ │ │ +168 typedef _C_o_n_s_t_L_o_c_a_l_I_n_d_e_x_A_r_r_a_y ConstSiblingArray; │ │ │ │ │ +169 typedef _L_o_c_a_l_I_n_d_e_x_A_r_r_a_y SiblingArray; │ │ │ │ │ +170 │ │ │ │ │ +171public: │ │ │ │ │ +172 FVarLevel(Level const& level); │ │ │ │ │ +173 ~FVarLevel(); │ │ │ │ │ +174 │ │ │ │ │ +175 // Queries for the entire channel: │ │ │ │ │ +176 Level const& getLevel() const { return _level; } │ │ │ │ │ +177 │ │ │ │ │ +178 int getNumValues() const { return _valueCount; } │ │ │ │ │ +179 int getNumFaceValuesTotal() const { return (int) _faceVertValues.size(); } │ │ │ │ │ +180 │ │ │ │ │ +181 bool isLinear() const { return _isLinear; } │ │ │ │ │ +182 bool hasLinearBoundaries() const { return _hasLinearBoundaries; } │ │ │ │ │ +183 bool hasSmoothBoundaries() const { return ! _hasLinearBoundaries; } │ │ │ │ │ +184 bool hasCreaseEnds() const { return hasSmoothBoundaries(); } │ │ │ │ │ +185 │ │ │ │ │ +186 Sdc::Options getOptions() const { return _options; } │ │ │ │ │ +187 │ │ │ │ │ +188 // Queries per face: │ │ │ │ │ +189 _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y getFaceValues(_I_n_d_e_x fIndex) const; │ │ │ │ │ +190 _I_n_d_e_x_A_r_r_a_y getFaceValues(_I_n_d_e_x fIndex); │ │ │ │ │ +191 │ │ │ │ │ +192 // Queries per edge: │ │ │ │ │ +193 ETag getEdgeTag(_I_n_d_e_x eIndex) const { return _edgeTags[eIndex]; } │ │ │ │ │ +194 bool edgeTopologyMatches(_I_n_d_e_x eIndex) const { return !getEdgeTag │ │ │ │ │ +(eIndex)._mismatch; } │ │ │ │ │ +195 │ │ │ │ │ +196 // Queries per vertex (and its potential sibling values): │ │ │ │ │ +197 int getNumVertexValues(_I_n_d_e_x v) const { return _vertSiblingCounts[v]; } │ │ │ │ │ +198 _I_n_d_e_x getVertexValueOffset(_I_n_d_e_x v, Sibling i = 0) const { return │ │ │ │ │ +_vertSiblingOffsets[v] + i; } │ │ │ │ │ +199 │ │ │ │ │ +200 _I_n_d_e_x getVertexValue(_I_n_d_e_x v, Sibling i = 0) const { return │ │ │ │ │ +_vertValueIndices[getVertexValueOffset(v,i)]; } │ │ │ │ │ +201 │ │ │ │ │ +202 _I_n_d_e_x findVertexValueIndex(_I_n_d_e_x vertexIndex, _I_n_d_e_x valueIndex) const; │ │ │ │ │ +203 │ │ │ │ │ +204 // Methods to access/modify array properties per vertex: │ │ │ │ │ +205 _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y getVertexValues(_I_n_d_e_x vIndex) const; │ │ │ │ │ +206 _I_n_d_e_x_A_r_r_a_y getVertexValues(_I_n_d_e_x vIndex); │ │ │ │ │ +207 │ │ │ │ │ +208 ConstValueTagArray getVertexValueTags(_I_n_d_e_x vIndex) const; │ │ │ │ │ +209 ValueTagArray getVertexValueTags(_I_n_d_e_x vIndex); │ │ │ │ │ +210 │ │ │ │ │ +211 ConstCreaseEndPairArray getVertexValueCreaseEnds(_I_n_d_e_x vIndex) const; │ │ │ │ │ +212 CreaseEndPairArray getVertexValueCreaseEnds(_I_n_d_e_x vIndex); │ │ │ │ │ +213 │ │ │ │ │ +214 ConstSiblingArray getVertexFaceSiblings(_I_n_d_e_x vIndex) const; │ │ │ │ │ +215 SiblingArray getVertexFaceSiblings(_I_n_d_e_x vIndex); │ │ │ │ │ +216 │ │ │ │ │ +217 // Queries per value: │ │ │ │ │ +218 ValueTag getValueTag(_I_n_d_e_x valueIndex) const { return _vertValueTags │ │ │ │ │ +[valueIndex]; } │ │ │ │ │ +219 bool valueTopologyMatches(_I_n_d_e_x valueIndex) const { return !getValueTag │ │ │ │ │ +(valueIndex)._mismatch; } │ │ │ │ │ +220 │ │ │ │ │ +221 CreaseEndPair getValueCreaseEndPair(_I_n_d_e_x valueIndex) const { return │ │ │ │ │ +_vertValueCreaseEnds[valueIndex]; } │ │ │ │ │ +222 │ │ │ │ │ +223 // Tag queries related to faces (use Level methods for those returning │ │ │ │ │ +Level::VTag/ETag) │ │ │ │ │ +224 void getFaceValueTags(_I_n_d_e_x faceIndex, ValueTag valueTags[]) const; │ │ │ │ │ +225 │ │ │ │ │ +226 ValueTag getFaceCompositeValueTag(_I_n_d_e_x faceIndex) const; │ │ │ │ │ +227 │ │ │ │ │ +228 // Higher-level topological queries, i.e. values in a neighborhood: │ │ │ │ │ +229 void getEdgeFaceValues(_I_n_d_e_x eIndex, int fIncToEdge, _I_n_d_e_x valuesPerVert │ │ │ │ │ +[2]) const; │ │ │ │ │ +230 void getVertexEdgeValues(_I_n_d_e_x vIndex, _I_n_d_e_x valuesPerEdge[]) const; │ │ │ │ │ +231 void getVertexCreaseEndValues(_I_n_d_e_x vIndex, Sibling sibling, _I_n_d_e_x │ │ │ │ │ +endValues[2]) const; │ │ │ │ │ +232 │ │ │ │ │ +233 // Initialization and allocation helpers: │ │ │ │ │ +234 void setOptions(Sdc::Options const& options); │ │ │ │ │ +235 void resizeVertexValues(int numVertexValues); │ │ │ │ │ +236 void resizeValues(int numValues); │ │ │ │ │ +237 void resizeComponents(); │ │ │ │ │ +238 │ │ │ │ │ +239 // Topological analysis methods -- tagging and face-value population: │ │ │ │ │ +240 void completeTopologyFromFaceValues(int regBoundaryValence); │ │ │ │ │ +241 void initializeFaceValuesFromFaceVertices(); │ │ │ │ │ +242 void initializeFaceValuesFromVertexFaceSiblings(); │ │ │ │ │ +243 │ │ │ │ │ +244 struct ValueSpan; │ │ │ │ │ +245 void gatherValueSpans(_I_n_d_e_x vIndex, ValueSpan * vValueSpans) const; │ │ │ │ │ +246 │ │ │ │ │ +247 // Debugging methods: │ │ │ │ │ +248 bool validate() const; │ │ │ │ │ +249 void print() const; │ │ │ │ │ +250 void buildFaceVertexSiblingsFromVertexFaceSiblings(std::vector& │ │ │ │ │ +fvSiblings) const; │ │ │ │ │ +251 │ │ │ │ │ +252private: │ │ │ │ │ +253 // Just as Refinements build Levels, FVarRefinements build FVarLevels... │ │ │ │ │ +254 friend class FVarRefinement; │ │ │ │ │ +255 │ │ │ │ │ +256 Level const & _level; │ │ │ │ │ +257 │ │ │ │ │ +258 // Linear interpolation options vary between channels: │ │ │ │ │ +259 Sdc::Options _options; │ │ │ │ │ +260 │ │ │ │ │ +261 bool _isLinear; │ │ │ │ │ +262 bool _hasLinearBoundaries; │ │ │ │ │ +263 bool _hasDependentSharpness; │ │ │ │ │ +264 int _valueCount; │ │ │ │ │ +265 │ │ │ │ │ +266 // │ │ │ │ │ +267 // Vectors recording face-varying topology including tags that help │ │ │ │ │ +propagate │ │ │ │ │ +268 // data through the refinement hierarchy. Vectors are not sparse but most │ │ │ │ │ +use │ │ │ │ │ +269 // 8-bit values relative to the local topology. │ │ │ │ │ +270 // │ │ │ │ │ +271 // The vector of face-values is actually redundant here, but is constructed │ │ │ │ │ +as │ │ │ │ │ +272 // it is most convenient for clients. It represents almost half the memory │ │ │ │ │ +of │ │ │ │ │ +273 // the topology (4 32-bit integers per face) and not surprisingly, │ │ │ │ │ +populating │ │ │ │ │ +274 // it takes a considerable amount of the refinement time (1/3). We can │ │ │ │ │ +reduce │ │ │ │ │ +275 // both if we are willing to compute these on demand for clients. │ │ │ │ │ +276 // │ │ │ │ │ +277 // Per-face (matches face-verts of corresponding level): │ │ │ │ │ +278 std::vector _faceVertValues; │ │ │ │ │ +279 │ │ │ │ │ +280 // Per-edge: │ │ │ │ │ +281 std::vector _edgeTags; │ │ │ │ │ +282 │ │ │ │ │ +283 // Per-vertex: │ │ │ │ │ +284 std::vector _vertSiblingCounts; │ │ │ │ │ +285 std::vector _vertSiblingOffsets; │ │ │ │ │ +286 std::vector _vertFaceSiblings; │ │ │ │ │ +287 │ │ │ │ │ +288 // Per-value: │ │ │ │ │ +289 std::vector _vertValueIndices; │ │ │ │ │ +290 std::vector _vertValueTags; │ │ │ │ │ +291 std::vector _vertValueCreaseEnds; │ │ │ │ │ +292}; │ │ │ │ │ +293 │ │ │ │ │ +294// │ │ │ │ │ +295// Access/modify the values associated with each face: │ │ │ │ │ +296// │ │ │ │ │ +297inline _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y │ │ │ │ │ +298FVarLevel::getFaceValues(_I_n_d_e_x fIndex) const { │ │ │ │ │ +299 │ │ │ │ │ +300 int vCount = _level.getNumFaceVertices(fIndex); │ │ │ │ │ +301 int vOffset = _level.getOffsetOfFaceVertices(fIndex); │ │ │ │ │ +302 return _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y(&_faceVertValues[vOffset], vCount); │ │ │ │ │ +303} │ │ │ │ │ +304inline _I_n_d_e_x_A_r_r_a_y │ │ │ │ │ +305FVarLevel::getFaceValues(_I_n_d_e_x fIndex) { │ │ │ │ │ +306 │ │ │ │ │ +307 int vCount = _level.getNumFaceVertices(fIndex); │ │ │ │ │ +308 int vOffset = _level.getOffsetOfFaceVertices(fIndex); │ │ │ │ │ +309 return _I_n_d_e_x_A_r_r_a_y(&_faceVertValues[vOffset], vCount); │ │ │ │ │ +310} │ │ │ │ │ +311 │ │ │ │ │ +312inline FVarLevel::ConstSiblingArray │ │ │ │ │ +313FVarLevel::getVertexFaceSiblings(_I_n_d_e_x vIndex) const { │ │ │ │ │ +314 │ │ │ │ │ +315 int vCount = _level.getNumVertexFaces(vIndex); │ │ │ │ │ +316 int vOffset = _level.getOffsetOfVertexFaces(vIndex); │ │ │ │ │ +317 return ConstSiblingArray(&_vertFaceSiblings[vOffset], vCount); │ │ │ │ │ +318} │ │ │ │ │ +319inline FVarLevel::SiblingArray │ │ │ │ │ +320FVarLevel::getVertexFaceSiblings(_I_n_d_e_x vIndex) { │ │ │ │ │ +321 │ │ │ │ │ +322 int vCount = _level.getNumVertexFaces(vIndex); │ │ │ │ │ +323 int vOffset = _level.getOffsetOfVertexFaces(vIndex); │ │ │ │ │ +324 return SiblingArray(&_vertFaceSiblings[vOffset], vCount); │ │ │ │ │ +325} │ │ │ │ │ +326 │ │ │ │ │ +327inline _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y │ │ │ │ │ +328FVarLevel::getVertexValues(_I_n_d_e_x vIndex) const │ │ │ │ │ +329{ │ │ │ │ │ +330 int vCount = getNumVertexValues(vIndex); │ │ │ │ │ +331 int vOffset = getVertexValueOffset(vIndex); │ │ │ │ │ +332 return _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y(&_vertValueIndices[vOffset], vCount); │ │ │ │ │ +333} │ │ │ │ │ +334inline _I_n_d_e_x_A_r_r_a_y │ │ │ │ │ +335FVarLevel::getVertexValues(_I_n_d_e_x vIndex) │ │ │ │ │ +336{ │ │ │ │ │ +337 int vCount = getNumVertexValues(vIndex); │ │ │ │ │ +338 int vOffset = getVertexValueOffset(vIndex); │ │ │ │ │ +339 return _I_n_d_e_x_A_r_r_a_y(&_vertValueIndices[vOffset], vCount); │ │ │ │ │ +340} │ │ │ │ │ +341 │ │ │ │ │ +342inline FVarLevel::ConstValueTagArray │ │ │ │ │ +343FVarLevel::getVertexValueTags(_I_n_d_e_x vIndex) const │ │ │ │ │ +344{ │ │ │ │ │ +345 int vCount = getNumVertexValues(vIndex); │ │ │ │ │ +346 int vOffset = getVertexValueOffset(vIndex); │ │ │ │ │ +347 return ConstValueTagArray(&_vertValueTags[vOffset], vCount); │ │ │ │ │ +348} │ │ │ │ │ +349inline FVarLevel::ValueTagArray │ │ │ │ │ +350FVarLevel::getVertexValueTags(_I_n_d_e_x vIndex) │ │ │ │ │ +351{ │ │ │ │ │ +352 int vCount = getNumVertexValues(vIndex); │ │ │ │ │ +353 int vOffset = getVertexValueOffset(vIndex); │ │ │ │ │ +354 return ValueTagArray(&_vertValueTags[vOffset], vCount); │ │ │ │ │ +355} │ │ │ │ │ +356 │ │ │ │ │ +357inline FVarLevel::ConstCreaseEndPairArray │ │ │ │ │ +358FVarLevel::getVertexValueCreaseEnds(_I_n_d_e_x vIndex) const │ │ │ │ │ +359{ │ │ │ │ │ +360 int vCount = getNumVertexValues(vIndex); │ │ │ │ │ +361 int vOffset = getVertexValueOffset(vIndex); │ │ │ │ │ +362 return ConstCreaseEndPairArray(&_vertValueCreaseEnds[vOffset], vCount); │ │ │ │ │ +363} │ │ │ │ │ +364inline FVarLevel::CreaseEndPairArray │ │ │ │ │ +365FVarLevel::getVertexValueCreaseEnds(_I_n_d_e_x vIndex) │ │ │ │ │ +366{ │ │ │ │ │ +367 int vCount = getNumVertexValues(vIndex); │ │ │ │ │ +368 int vOffset = getVertexValueOffset(vIndex); │ │ │ │ │ +369 return CreaseEndPairArray(&_vertValueCreaseEnds[vOffset], vCount); │ │ │ │ │ +370} │ │ │ │ │ +371 │ │ │ │ │ +372inline _I_n_d_e_x │ │ │ │ │ +373FVarLevel::findVertexValueIndex(_I_n_d_e_x vertexIndex, _I_n_d_e_x valueIndex) const { │ │ │ │ │ +374 │ │ │ │ │ +375 if (_level.getDepth() > 0) return valueIndex; │ │ │ │ │ +376 │ │ │ │ │ +377 _I_n_d_e_x vvIndex = getVertexValueOffset(vertexIndex); │ │ │ │ │ +378 while (_vertValueIndices[vvIndex] != valueIndex) { │ │ │ │ │ +379 ++ vvIndex; │ │ │ │ │ +380 } │ │ │ │ │ +381 return vvIndex; │ │ │ │ │ +382} │ │ │ │ │ +383 │ │ │ │ │ +384// │ │ │ │ │ +385// Methods related to tagging: │ │ │ │ │ +386// │ │ │ │ │ +387inline Level::ETag │ │ │ │ │ +388FVarLevel::ETag::combineWithLevelETag(Level::ETag levelTag) const │ │ │ │ │ +389{ │ │ │ │ │ +390 if (this->_mismatch) { │ │ │ │ │ +391 levelTag._boundary = true; │ │ │ │ │ +392 levelTag._infSharp = true; │ │ │ │ │ +393 } │ │ │ │ │ +394 return levelTag; │ │ │ │ │ +395} │ │ │ │ │ +396inline Level::VTag │ │ │ │ │ +397FVarLevel::ValueTag::combineWithLevelVTag(Level::VTag levelTag) const │ │ │ │ │ +398{ │ │ │ │ │ +399 if (this->_mismatch) { │ │ │ │ │ +400 // │ │ │ │ │ +401 // Semi-sharp FVar values are always tagged and treated as corners │ │ │ │ │ +402 // (at least three sharp edges (two boundary edges and one interior │ │ │ │ │ +403 // semi-sharp) and/or vertex is semi-sharp) until the sharpness has │ │ │ │ │ +404 // decayed, but they ultimately lie on the inf-sharp crease of the │ │ │ │ │ +405 // FVar boundary. Consider this when tagging inf-sharp features. │ │ │ │ │ +406 // │ │ │ │ │ +407 if (this->isCorner()) { │ │ │ │ │ +408 levelTag._rule = (Level::VTag::VTagSize) _S_d_c_:_:_C_r_e_a_s_e_:_:_R_U_L_E___C_O_R_N_E_R; │ │ │ │ │ +409 } else { │ │ │ │ │ +410 levelTag._rule = (Level::VTag::VTagSize) _S_d_c_:_:_C_r_e_a_s_e_:_:_R_U_L_E___C_R_E_A_S_E; │ │ │ │ │ +411 } │ │ │ │ │ +412 if (this->isCrease() || this->isSemiSharp()) { │ │ │ │ │ +413 levelTag._infSharp = false; │ │ │ │ │ +414 levelTag._infSharpCrease = true; │ │ │ │ │ +415 levelTag._corner = false; │ │ │ │ │ +416 } else { │ │ │ │ │ +417 levelTag._infSharp = true; │ │ │ │ │ +418 levelTag._infSharpCrease = false; │ │ │ │ │ +419 levelTag._corner = !this->_infIrregular && !this->_infSharpEdges; │ │ │ │ │ +420 } │ │ │ │ │ +421 levelTag._infSharpEdges = true; │ │ │ │ │ +422 levelTag._infIrregular = this->_infIrregular; │ │ │ │ │ +423 │ │ │ │ │ +424 levelTag._boundary = true; │ │ │ │ │ +425 levelTag._xordinary = this->_xordinary; │ │ │ │ │ +426 │ │ │ │ │ +427 levelTag._nonManifold |= this->_nonManifold; │ │ │ │ │ +428 } │ │ │ │ │ +429 return levelTag; │ │ │ │ │ +430} │ │ │ │ │ +431 │ │ │ │ │ +432} // end namespace internal │ │ │ │ │ +433} // end namespace Vtr │ │ │ │ │ +434 │ │ │ │ │ +435} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ +436using namespace OPENSUBDIV_VERSION; │ │ │ │ │ +437} // end namespace OpenSubdiv │ │ │ │ │ +438 │ │ │ │ │ +439#endif /* OPENSUBDIV3_VTR_FVAR_LEVEL_H */ │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v │ │ │ │ │ DDeeffiinniittiioonn _l_i_m_i_t_s_._h_:_3_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_V_t_r_:_:_C_o_n_s_t_L_o_c_a_l_I_n_d_e_x_A_r_r_a_y │ │ │ │ │ +ConstArray< LocalIndex > ConstLocalIndexArray │ │ │ │ │ +DDeeffiinniittiioonn _t_y_p_e_s_._h_:_8_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_V_t_r_:_:_L_o_c_a_l_I_n_d_e_x_A_r_r_a_y │ │ │ │ │ +Array< LocalIndex > LocalIndexArray │ │ │ │ │ +DDeeffiinniittiioonn _t_y_p_e_s_._h_:_8_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_V_t_r_:_:_I_n_d_e_x │ │ │ │ │ +int Index │ │ │ │ │ +DDeeffiinniittiioonn _t_y_p_e_s_._h_:_5_4 │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_V_t_r_:_:_C_o_n_s_t_I_n_d_e_x_A_r_r_a_y │ │ │ │ │ ConstArray< Index > ConstIndexArray │ │ │ │ │ DDeeffiinniittiioonn _t_y_p_e_s_._h_:_8_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_V_t_r_:_:_L_o_c_a_l_I_n_d_e_x │ │ │ │ │ +unsigned short LocalIndex │ │ │ │ │ +DDeeffiinniittiioonn _t_y_p_e_s_._h_:_6_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_V_t_r_:_:_I_n_d_e_x_A_r_r_a_y │ │ │ │ │ +Array< Index > IndexArray │ │ │ │ │ +DDeeffiinniittiioonn _t_y_p_e_s_._h_:_7_9 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_C_r_e_a_s_e_:_:_R_U_L_E___C_O_R_N_E_R │ │ │ │ │ +@ RULE_CORNER │ │ │ │ │ +DDeeffiinniittiioonn _c_r_e_a_s_e_._h_:_8_7 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_C_r_e_a_s_e_:_:_R_U_L_E___C_R_E_A_S_E │ │ │ │ │ +@ RULE_CREASE │ │ │ │ │ +DDeeffiinniittiioonn _c_r_e_a_s_e_._h_:_8_6 │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _v_t_r │ │ │ │ │ - * _c_o_m_p_o_n_e_n_t_I_n_t_e_r_f_a_c_e_s_._h │ │ │ │ │ + * _f_v_a_r_L_e_v_e_l_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00764.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/vtr/fvarLevel.h File Reference │ │ │ │ +OpenSubdiv: opensubdiv/vtr/componentInterfaces.h File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -89,26 +89,23 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Namespaces
│ │ │ │ -
fvarLevel.h File Reference
│ │ │ │ +
componentInterfaces.h File Reference
│ │ │ │
│ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ #include "../sdc/types.h"
│ │ │ │ #include "../sdc/crease.h"
│ │ │ │ -#include "../sdc/options.h"
│ │ │ │ #include "../vtr/types.h"
│ │ │ │ -#include "../vtr/level.h"
│ │ │ │ +#include "../vtr/stackBuffer.h"
│ │ │ │ #include <vector>
│ │ │ │ -#include <cassert>
│ │ │ │ -#include <cstring>
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -118,13 +115,13 @@ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  OpenSubdiv
 
 
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,27 +1,24 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -fvarLevel.h File Reference │ │ │ │ │ +componentInterfaces.h File Reference │ │ │ │ │ #include "../version.h" │ │ │ │ │ #include "_._._/_s_d_c_/_t_y_p_e_s_._h" │ │ │ │ │ #include "_._._/_s_d_c_/_c_r_e_a_s_e_._h" │ │ │ │ │ -#include "_._._/_s_d_c_/_o_p_t_i_o_n_s_._h" │ │ │ │ │ #include "_._._/_v_t_r_/_t_y_p_e_s_._h" │ │ │ │ │ -#include "_._._/_v_t_r_/_l_e_v_e_l_._h" │ │ │ │ │ +#include "_._._/_v_t_r_/_s_t_a_c_k_B_u_f_f_e_r_._h" │ │ │ │ │ #include │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_V_t_r │ │ │ │ │   │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _v_t_r │ │ │ │ │ - * _f_v_a_r_L_e_v_e_l_._h │ │ │ │ │ + * _c_o_m_p_o_n_e_n_t_I_n_t_e_r_f_a_c_e_s_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00764_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/vtr/fvarLevel.h Source File │ │ │ │ +OpenSubdiv: opensubdiv/vtr/componentInterfaces.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -92,15 +92,15 @@ │ │ │ │
No Matches
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
fvarLevel.h
│ │ │ │ +
componentInterfaces.h
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1//
│ │ │ │
2// Copyright 2014 DreamWorks Animation LLC.
│ │ │ │
3//
│ │ │ │
4// Licensed under the Apache License, Version 2.0 (the "Apache License")
│ │ │ │
5// with the following modification; you may not use this file except in
│ │ │ │ @@ -118,443 +118,155 @@ │ │ │ │
17//
│ │ │ │
18// Unless required by applicable law or agreed to in writing, software
│ │ │ │
19// distributed under the Apache License with the above modification is
│ │ │ │
20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
│ │ │ │
21// KIND, either express or implied. See the Apache License for the specific
│ │ │ │
22// language governing permissions and limitations under the Apache License.
│ │ │ │
23//
│ │ │ │ -
24#ifndef OPENSUBDIV3_VTR_FVAR_LEVEL_H
│ │ │ │ -
25#define OPENSUBDIV3_VTR_FVAR_LEVEL_H
│ │ │ │ +
24#ifndef OPENSUBDIV3_VTR_COMPONENT_INTERFACES_H
│ │ │ │ +
25#define OPENSUBDIV3_VTR_COMPONENT_INTERFACES_H
│ │ │ │
26
│ │ │ │
27#include "../version.h"
│ │ │ │
28
│ │ │ │
29#include "../sdc/types.h"
│ │ │ │
30#include "../sdc/crease.h"
│ │ │ │ -
31#include "../sdc/options.h"
│ │ │ │ -
32#include "../vtr/types.h"
│ │ │ │ -
33#include "../vtr/level.h"
│ │ │ │ -
34
│ │ │ │ -
35#include <vector>
│ │ │ │ -
36#include <cassert>
│ │ │ │ -
37#include <cstring>
│ │ │ │ -
38
│ │ │ │ +
31#include "../vtr/types.h"
│ │ │ │ +
32#include "../vtr/stackBuffer.h"
│ │ │ │ +
33
│ │ │ │ +
34#include <vector>
│ │ │ │ +
35
│ │ │ │ +
36
│ │ │ │ +
37namespace OpenSubdiv {
│ │ │ │ +
38namespace OPENSUBDIV_VERSION {
│ │ │ │
39
│ │ │ │ -
40namespace OpenSubdiv {
│ │ │ │ -
41namespace OPENSUBDIV_VERSION {
│ │ │ │ +
40namespace Vtr {
│ │ │ │ +
41namespace internal {
│ │ │ │
42
│ │ │ │ -
43namespace Vtr {
│ │ │ │ -
44namespace internal {
│ │ │ │ -
45
│ │ │ │ +
43//
│ │ │ │ +
44// Simple classes supporting the interfaces required of generic topological
│ │ │ │ +
45// types in the Scheme mask queries, e.g. <typename FACE, VERTEX, etc.>
│ │ │ │
46//
│ │ │ │ -
47// FVarLevel:
│ │ │ │ -
48// A "face-varying channel" includes the topology for a set of face-varying
│ │ │ │ -
49// data, relative to the topology of the Level with which it is associated.
│ │ │ │ +
47// These are not used with Vtr but arguably belong with it as the details to
│ │ │ │ +
48// write these efficiently depends very much on intimate details of Vtr's
│ │ │ │ +
49// implementation, e.g. the use of tag bits, subdivision Rules, etc.
│ │ │ │
50//
│ │ │ │ -
51// Analogous to a set of vertices and face-vertices that define the topology for
│ │ │ │ -
52// the geometry, a channel requires a set of "values" and "face-values". The
│ │ │ │ -
53// "values" are indices of entries in a set of face-varying data, just as vertices
│ │ │ │ -
54// are indices into a set of vertex data. The face-values identify a value for
│ │ │ │ -
55// each vertex of the face, and so define topology for the values that may be
│ │ │ │ -
56// unique to each channel.
│ │ │ │ -
57//
│ │ │ │ -
58// In addition to the value size and the vector of face-values (which matches the
│ │ │ │ -
59// size of the geometry's face-vertices), tags are associated with each component
│ │ │ │ -
60// to identify deviations of the face-varying topology from the vertex topology.
│ │ │ │ -
61// And since there may be a one-to-many mapping between vertices and face-varying
│ │ │ │ -
62// values, that mapping is also allocated.
│ │ │ │ -
63//
│ │ │ │ -
64// It turns out that the mapping used is able to completely encode the set of
│ │ │ │ -
65// face-values and is more amenable to refinement. Currently the face-values
│ │ │ │ -
66// take up almost half the memory of this representation, so if memory does
│ │ │ │ -
67// become a concern, we do not need to store them. The only reason we do so now
│ │ │ │ -
68// is that the face-value interface for specifying base topology and inspecting
│ │ │ │ -
69// subsequent levels is very familiar to that of face-vertices for clients. So
│ │ │ │ -
70// having them available for such access is convenient.
│ │ │ │ -
71//
│ │ │ │ -
72// Regarding scope and access...
│ │ │ │ -
73// Unclear at this early state, but leaning towards nesting this class within
│ │ │ │ -
74// Level, given the intimate dependency between the two.
│ │ │ │ -
75// Everything is being declared public for now to facilitate access until it's
│ │ │ │ -
76// clearer how this functionality will be provided.
│ │ │ │ -
77//
│ │ │ │ -
78class FVarLevel {
│ │ │ │ -
79public:
│ │ │ │ -
80 //
│ │ │ │ -
81 // Component tags -- trying to minimize the types needed here:
│ │ │ │ -
82 //
│ │ │ │ -
83 // Tag per Edge:
│ │ │ │ -
84 // - facilitates topological analysis around each vertex
│ │ │ │ -
85 // - required during refinement to spawn one or more edge-values
│ │ │ │ -
86 //
│ │ │ │ -
87 struct ETag {
│ │ │ │ -
88 ETag() { }
│ │ │ │ +
51
│ │ │ │ +
52
│ │ │ │ +
53//
│ │ │ │ +
54// For <typename FACE>, which provides information in the neighborhood of a face:
│ │ │ │ +
55//
│ │ │ │ +
56class FaceInterface {
│ │ │ │ +
57public:
│ │ │ │ +
58 FaceInterface() { }
│ │ │ │ +
59 FaceInterface(int vertCount) : _vertCount(vertCount) { }
│ │ │ │ +
60 ~FaceInterface() { }
│ │ │ │ +
61
│ │ │ │ +
62public: // Generic interface expected of <typename FACE>:
│ │ │ │ +
63 int GetNumVertices() const { return _vertCount; }
│ │ │ │ +
64
│ │ │ │ +
65private:
│ │ │ │ +
66 int _vertCount;
│ │ │ │ +
67};
│ │ │ │ +
68
│ │ │ │ +
69
│ │ │ │ +
70//
│ │ │ │ +
71// For <typename EDGE>, which provides information in the neighborhood of an edge:
│ │ │ │ +
72//
│ │ │ │ +
73class EdgeInterface {
│ │ │ │ +
74public:
│ │ │ │ +
75 EdgeInterface() { }
│ │ │ │ +
76 EdgeInterface(Level const& level) : _level(&level) { }
│ │ │ │ +
77 ~EdgeInterface() { }
│ │ │ │ +
78
│ │ │ │ +
79 void SetIndex(int edgeIndex) { _eIndex = edgeIndex; }
│ │ │ │ +
80
│ │ │ │ +
81public: // Generic interface expected of <typename EDGE>:
│ │ │ │ +
82 int GetNumFaces() const { return _level->getEdgeFaces(_eIndex).size(); }
│ │ │ │ +
83 float GetSharpness() const { return _level->getEdgeSharpness(_eIndex); }
│ │ │ │ +
84
│ │ │ │ +
85 void GetChildSharpnesses(Sdc::Crease const&, float s[2]) const {
│ │ │ │ +
86 // Need to use the Refinement here to identify the two child edges:
│ │ │ │ +
87 s[0] = s[1] = GetSharpness() - 1.0f;
│ │ │ │ +
88 }
│ │ │ │
89
│ │ │ │ -
90 void clear() { std::memset(this, 0, sizeof(ETag)); }
│ │ │ │ -
91
│ │ │ │ -
92 typedef unsigned char ETagSize;
│ │ │ │ -
93
│ │ │ │ -
94 ETagSize _mismatch : 1; // local FVar topology does not match
│ │ │ │ -
95 ETagSize _disctsV0 : 1; // discontinuous at vertex 0
│ │ │ │ -
96 ETagSize _disctsV1 : 1; // discontinuous at vertex 1
│ │ │ │ -
97 ETagSize _linear : 1; // linear boundary constraints
│ │ │ │ -
98
│ │ │ │ -
99 Level::ETag combineWithLevelETag(Level::ETag) const;
│ │ │ │ -
100 };
│ │ │ │ -
101
│ │ │ │ -
102 //
│ │ │ │ -
103 // Tag per Value:
│ │ │ │ -
104 // - informs both refinement and interpolation
│ │ │ │ -
105 // - every value spawns a child value in refinement
│ │ │ │ -
106 // - includes a subset of Level::VTag to be later combined with a VTag
│ │ │ │ -
107 //
│ │ │ │ -
108 struct ValueTag {
│ │ │ │ -
109 ValueTag() { }
│ │ │ │ -
110
│ │ │ │ -
111 void clear() { std::memset(this, 0, sizeof(ValueTag)); }
│ │ │ │ +
90 void GetNumVerticesPerFace(int vertsPerFace[]) const {
│ │ │ │ +
91 ConstIndexArray eFaces = _level->getEdgeFaces(_eIndex);
│ │ │ │ +
92 for (int i = 0; i < eFaces.size(); ++i) {
│ │ │ │ +
93 vertsPerFace[i] = _level->getFaceVertices(eFaces[i]).size();
│ │ │ │ +
94 }
│ │ │ │ +
95 }
│ │ │ │ +
96
│ │ │ │ +
97private:
│ │ │ │ +
98 const Level* _level;
│ │ │ │ +
99
│ │ │ │ +
100 int _eIndex;
│ │ │ │ +
101};
│ │ │ │ +
102
│ │ │ │ +
103
│ │ │ │ +
104//
│ │ │ │ +
105// For <typename VERTEX>, which provides information in the neighborhood of a vertex:
│ │ │ │ +
106//
│ │ │ │ +
107class VertexInterface {
│ │ │ │ +
108public:
│ │ │ │ +
109 VertexInterface() { }
│ │ │ │ +
110 VertexInterface(Level const& parent, Level const& child) : _parent(&parent), _child(&child) { }
│ │ │ │ +
111 ~VertexInterface() { }
│ │ │ │
112
│ │ │ │ -
113 bool isMismatch() const { return _mismatch; }
│ │ │ │ -
114 bool isCrease() const { return _crease; }
│ │ │ │ -
115 bool isCorner() const { return !_crease; }
│ │ │ │ -
116 bool isSemiSharp() const { return _semiSharp; }
│ │ │ │ -
117 bool isInfSharp() const { return !_semiSharp && !_crease; }
│ │ │ │ -
118 bool isDepSharp() const { return _depSharp; }
│ │ │ │ -
119 bool hasCreaseEnds() const { return _crease || _semiSharp; }
│ │ │ │ -
120
│ │ │ │ -
121 bool hasInfSharpEdges() const { return _infSharpEdges; }
│ │ │ │ -
122 bool hasInfIrregularity() const { return _infIrregular; }
│ │ │ │ +
113 void SetIndex(int parentIndex, int childIndex) {
│ │ │ │ +
114 _pIndex = parentIndex;
│ │ │ │ +
115 _cIndex = childIndex;
│ │ │ │ +
116 _eCount = _parent->getVertexEdges(_pIndex).size();
│ │ │ │ +
117 _fCount = _parent->getVertexFaces(_pIndex).size();
│ │ │ │ +
118 }
│ │ │ │ +
119
│ │ │ │ +
120public: // Generic interface expected of <typename VERT>:
│ │ │ │ +
121 int GetNumEdges() const { return _eCount; }
│ │ │ │ +
122 int GetNumFaces() const { return _fCount; }
│ │ │ │
123
│ │ │ │ -
124 typedef unsigned char ValueTagSize;
│ │ │ │ -
125
│ │ │ │ -
126 // If there is no mismatch, no other members should be inspected
│ │ │ │ -
127 ValueTagSize _mismatch : 1; // local FVar topology does not match
│ │ │ │ -
128 ValueTagSize _xordinary : 1; // local FVar topology is extra-ordinary
│ │ │ │ -
129 ValueTagSize _nonManifold : 1; // local FVar topology is non-manifold
│ │ │ │ -
130 ValueTagSize _crease : 1; // value is a crease, otherwise a corner
│ │ │ │ -
131 ValueTagSize _semiSharp : 1; // value is a corner decaying to crease
│ │ │ │ -
132 ValueTagSize _depSharp : 1; // value is a corner by dependency on another
│ │ │ │ -
133
│ │ │ │ -
134 ValueTagSize _infSharpEdges : 1; // value is a corner by inf-sharp features
│ │ │ │ -
135 ValueTagSize _infIrregular : 1; // value span includes inf-sharp irregularity
│ │ │ │ -
136
│ │ │ │ -
137 Level::VTag combineWithLevelVTag(Level::VTag) const;
│ │ │ │ -
138
│ │ │ │ -
139 // Alternate constructor and accessor for dealing with integer bits directly:
│ │ │ │ -
140 explicit ValueTag(ValueTagSize bits) {
│ │ │ │ -
141 std::memcpy(this, &bits, sizeof(bits));
│ │ │ │ -
142 }
│ │ │ │ -
143 ValueTagSize getBits() const {
│ │ │ │ -
144 ValueTagSize bits;
│ │ │ │ -
145 std::memcpy(&bits, this, sizeof(bits));
│ │ │ │ -
146 return bits;
│ │ │ │ -
147 }
│ │ │ │ -
148 };
│ │ │ │ -
149
│ │ │ │ -
150 typedef Vtr::ConstArray<ValueTag> ConstValueTagArray;
│ │ │ │ -
151 typedef Vtr::Array<ValueTag> ValueTagArray;
│ │ │ │ -
152
│ │ │ │ -
153 //
│ │ │ │ -
154 // Simple struct containing the "end faces" of a crease, i.e. the faces which
│ │ │ │ -
155 // contain the FVar values to be used when interpolating the crease. (Prefer
│ │ │ │ -
156 // the struct over std::pair for its member names)
│ │ │ │ -
157 //
│ │ │ │ -
158 struct CreaseEndPair {
│ │ │ │ -
159 LocalIndex _startFace;
│ │ │ │ -
160 LocalIndex _endFace;
│ │ │ │ -
161 };
│ │ │ │ -
162
│ │ │ │ -
163 typedef Vtr::ConstArray<CreaseEndPair> ConstCreaseEndPairArray;
│ │ │ │ -
164 typedef Vtr::Array<CreaseEndPair> CreaseEndPairArray;
│ │ │ │ -
165
│ │ │ │ -
166 typedef LocalIndex Sibling;
│ │ │ │ -
167
│ │ │ │ -
168 typedef ConstLocalIndexArray ConstSiblingArray;
│ │ │ │ -
169 typedef LocalIndexArray SiblingArray;
│ │ │ │ -
170
│ │ │ │ -
171public:
│ │ │ │ -
172 FVarLevel(Level const& level);
│ │ │ │ -
173 ~FVarLevel();
│ │ │ │ -
174
│ │ │ │ -
175 // Queries for the entire channel:
│ │ │ │ -
176 Level const& getLevel() const { return _level; }
│ │ │ │ -
177
│ │ │ │ -
178 int getNumValues() const { return _valueCount; }
│ │ │ │ -
179 int getNumFaceValuesTotal() const { return (int) _faceVertValues.size(); }
│ │ │ │ -
180
│ │ │ │ -
181 bool isLinear() const { return _isLinear; }
│ │ │ │ -
182 bool hasLinearBoundaries() const { return _hasLinearBoundaries; }
│ │ │ │ -
183 bool hasSmoothBoundaries() const { return ! _hasLinearBoundaries; }
│ │ │ │ -
184 bool hasCreaseEnds() const { return hasSmoothBoundaries(); }
│ │ │ │ -
185
│ │ │ │ -
186 Sdc::Options getOptions() const { return _options; }
│ │ │ │ -
187
│ │ │ │ -
188 // Queries per face:
│ │ │ │ -
189 ConstIndexArray getFaceValues(Index fIndex) const;
│ │ │ │ -
190 IndexArray getFaceValues(Index fIndex);
│ │ │ │ -
191
│ │ │ │ -
192 // Queries per edge:
│ │ │ │ -
193 ETag getEdgeTag(Index eIndex) const { return _edgeTags[eIndex]; }
│ │ │ │ -
194 bool edgeTopologyMatches(Index eIndex) const { return !getEdgeTag(eIndex)._mismatch; }
│ │ │ │ -
195
│ │ │ │ -
196 // Queries per vertex (and its potential sibling values):
│ │ │ │ -
197 int getNumVertexValues(Index v) const { return _vertSiblingCounts[v]; }
│ │ │ │ -
198 Index getVertexValueOffset(Index v, Sibling i = 0) const { return _vertSiblingOffsets[v] + i; }
│ │ │ │ -
199
│ │ │ │ -
200 Index getVertexValue(Index v, Sibling i = 0) const { return _vertValueIndices[getVertexValueOffset(v,i)]; }
│ │ │ │ -
201
│ │ │ │ -
202 Index findVertexValueIndex(Index vertexIndex, Index valueIndex) const;
│ │ │ │ -
203
│ │ │ │ -
204 // Methods to access/modify array properties per vertex:
│ │ │ │ -
205 ConstIndexArray getVertexValues(Index vIndex) const;
│ │ │ │ -
206 IndexArray getVertexValues(Index vIndex);
│ │ │ │ -
207
│ │ │ │ -
208 ConstValueTagArray getVertexValueTags(Index vIndex) const;
│ │ │ │ -
209 ValueTagArray getVertexValueTags(Index vIndex);
│ │ │ │ -
210
│ │ │ │ -
211 ConstCreaseEndPairArray getVertexValueCreaseEnds(Index vIndex) const;
│ │ │ │ -
212 CreaseEndPairArray getVertexValueCreaseEnds(Index vIndex);
│ │ │ │ -
213
│ │ │ │ -
214 ConstSiblingArray getVertexFaceSiblings(Index vIndex) const;
│ │ │ │ -
215 SiblingArray getVertexFaceSiblings(Index vIndex);
│ │ │ │ -
216
│ │ │ │ -
217 // Queries per value:
│ │ │ │ -
218 ValueTag getValueTag(Index valueIndex) const { return _vertValueTags[valueIndex]; }
│ │ │ │ -
219 bool valueTopologyMatches(Index valueIndex) const { return !getValueTag(valueIndex)._mismatch; }
│ │ │ │ -
220
│ │ │ │ -
221 CreaseEndPair getValueCreaseEndPair(Index valueIndex) const { return _vertValueCreaseEnds[valueIndex]; }
│ │ │ │ -
222
│ │ │ │ -
223 // Tag queries related to faces (use Level methods for those returning Level::VTag/ETag)
│ │ │ │ -
224 void getFaceValueTags(Index faceIndex, ValueTag valueTags[]) const;
│ │ │ │ -
225
│ │ │ │ -
226 ValueTag getFaceCompositeValueTag(Index faceIndex) const;
│ │ │ │ -
227
│ │ │ │ -
228 // Higher-level topological queries, i.e. values in a neighborhood:
│ │ │ │ -
229 void getEdgeFaceValues(Index eIndex, int fIncToEdge, Index valuesPerVert[2]) const;
│ │ │ │ -
230 void getVertexEdgeValues(Index vIndex, Index valuesPerEdge[]) const;
│ │ │ │ -
231 void getVertexCreaseEndValues(Index vIndex, Sibling sibling, Index endValues[2]) const;
│ │ │ │ -
232
│ │ │ │ -
233 // Initialization and allocation helpers:
│ │ │ │ -
234 void setOptions(Sdc::Options const& options);
│ │ │ │ -
235 void resizeVertexValues(int numVertexValues);
│ │ │ │ -
236 void resizeValues(int numValues);
│ │ │ │ -
237 void resizeComponents();
│ │ │ │ -
238
│ │ │ │ -
239 // Topological analysis methods -- tagging and face-value population:
│ │ │ │ -
240 void completeTopologyFromFaceValues(int regBoundaryValence);
│ │ │ │ -
241 void initializeFaceValuesFromFaceVertices();
│ │ │ │ -
242 void initializeFaceValuesFromVertexFaceSiblings();
│ │ │ │ -
243
│ │ │ │ -
244 struct ValueSpan;
│ │ │ │ -
245 void gatherValueSpans(Index vIndex, ValueSpan * vValueSpans) const;
│ │ │ │ -
246
│ │ │ │ -
247 // Debugging methods:
│ │ │ │ -
248 bool validate() const;
│ │ │ │ -
249 void print() const;
│ │ │ │ -
250 void buildFaceVertexSiblingsFromVertexFaceSiblings(std::vector<Sibling>& fvSiblings) const;
│ │ │ │ -
251
│ │ │ │ -
252private:
│ │ │ │ -
253 // Just as Refinements build Levels, FVarRefinements build FVarLevels...
│ │ │ │ -
254 friend class FVarRefinement;
│ │ │ │ -
255
│ │ │ │ -
256 Level const & _level;
│ │ │ │ -
257
│ │ │ │ -
258 // Linear interpolation options vary between channels:
│ │ │ │ -
259 Sdc::Options _options;
│ │ │ │ -
260
│ │ │ │ -
261 bool _isLinear;
│ │ │ │ -
262 bool _hasLinearBoundaries;
│ │ │ │ -
263 bool _hasDependentSharpness;
│ │ │ │ -
264 int _valueCount;
│ │ │ │ -
265
│ │ │ │ -
266 //
│ │ │ │ -
267 // Vectors recording face-varying topology including tags that help propagate
│ │ │ │ -
268 // data through the refinement hierarchy. Vectors are not sparse but most use
│ │ │ │ -
269 // 8-bit values relative to the local topology.
│ │ │ │ -
270 //
│ │ │ │ -
271 // The vector of face-values is actually redundant here, but is constructed as
│ │ │ │ -
272 // it is most convenient for clients. It represents almost half the memory of
│ │ │ │ -
273 // the topology (4 32-bit integers per face) and not surprisingly, populating
│ │ │ │ -
274 // it takes a considerable amount of the refinement time (1/3). We can reduce
│ │ │ │ -
275 // both if we are willing to compute these on demand for clients.
│ │ │ │ -
276 //
│ │ │ │ -
277 // Per-face (matches face-verts of corresponding level):
│ │ │ │ -
278 std::vector<Index> _faceVertValues;
│ │ │ │ -
279
│ │ │ │ -
280 // Per-edge:
│ │ │ │ -
281 std::vector<ETag> _edgeTags;
│ │ │ │ -
282
│ │ │ │ -
283 // Per-vertex:
│ │ │ │ -
284 std::vector<Sibling> _vertSiblingCounts;
│ │ │ │ -
285 std::vector<int> _vertSiblingOffsets;
│ │ │ │ -
286 std::vector<Sibling> _vertFaceSiblings;
│ │ │ │ -
287
│ │ │ │ -
288 // Per-value:
│ │ │ │ -
289 std::vector<Index> _vertValueIndices;
│ │ │ │ -
290 std::vector<ValueTag> _vertValueTags;
│ │ │ │ -
291 std::vector<CreaseEndPair> _vertValueCreaseEnds;
│ │ │ │ -
292};
│ │ │ │ -
293
│ │ │ │ -
294//
│ │ │ │ -
295// Access/modify the values associated with each face:
│ │ │ │ -
296//
│ │ │ │ -
297inline ConstIndexArray
│ │ │ │ -
298FVarLevel::getFaceValues(Index fIndex) const {
│ │ │ │ -
299
│ │ │ │ -
300 int vCount = _level.getNumFaceVertices(fIndex);
│ │ │ │ -
301 int vOffset = _level.getOffsetOfFaceVertices(fIndex);
│ │ │ │ -
302 return ConstIndexArray(&_faceVertValues[vOffset], vCount);
│ │ │ │ -
303}
│ │ │ │ -
304inline IndexArray
│ │ │ │ -
305FVarLevel::getFaceValues(Index fIndex) {
│ │ │ │ -
306
│ │ │ │ -
307 int vCount = _level.getNumFaceVertices(fIndex);
│ │ │ │ -
308 int vOffset = _level.getOffsetOfFaceVertices(fIndex);
│ │ │ │ -
309 return IndexArray(&_faceVertValues[vOffset], vCount);
│ │ │ │ -
310}
│ │ │ │ -
311
│ │ │ │ -
312inline FVarLevel::ConstSiblingArray
│ │ │ │ -
313FVarLevel::getVertexFaceSiblings(Index vIndex) const {
│ │ │ │ -
314
│ │ │ │ -
315 int vCount = _level.getNumVertexFaces(vIndex);
│ │ │ │ -
316 int vOffset = _level.getOffsetOfVertexFaces(vIndex);
│ │ │ │ -
317 return ConstSiblingArray(&_vertFaceSiblings[vOffset], vCount);
│ │ │ │ -
318}
│ │ │ │ -
319inline FVarLevel::SiblingArray
│ │ │ │ -
320FVarLevel::getVertexFaceSiblings(Index vIndex) {
│ │ │ │ -
321
│ │ │ │ -
322 int vCount = _level.getNumVertexFaces(vIndex);
│ │ │ │ -
323 int vOffset = _level.getOffsetOfVertexFaces(vIndex);
│ │ │ │ -
324 return SiblingArray(&_vertFaceSiblings[vOffset], vCount);
│ │ │ │ -
325}
│ │ │ │ -
326
│ │ │ │ -
327inline ConstIndexArray
│ │ │ │ -
328FVarLevel::getVertexValues(Index vIndex) const
│ │ │ │ -
329{
│ │ │ │ -
330 int vCount = getNumVertexValues(vIndex);
│ │ │ │ -
331 int vOffset = getVertexValueOffset(vIndex);
│ │ │ │ -
332 return ConstIndexArray(&_vertValueIndices[vOffset], vCount);
│ │ │ │ -
333}
│ │ │ │ -
334inline IndexArray
│ │ │ │ -
335FVarLevel::getVertexValues(Index vIndex)
│ │ │ │ -
336{
│ │ │ │ -
337 int vCount = getNumVertexValues(vIndex);
│ │ │ │ -
338 int vOffset = getVertexValueOffset(vIndex);
│ │ │ │ -
339 return IndexArray(&_vertValueIndices[vOffset], vCount);
│ │ │ │ -
340}
│ │ │ │ -
341
│ │ │ │ -
342inline FVarLevel::ConstValueTagArray
│ │ │ │ -
343FVarLevel::getVertexValueTags(Index vIndex) const
│ │ │ │ -
344{
│ │ │ │ -
345 int vCount = getNumVertexValues(vIndex);
│ │ │ │ -
346 int vOffset = getVertexValueOffset(vIndex);
│ │ │ │ -
347 return ConstValueTagArray(&_vertValueTags[vOffset], vCount);
│ │ │ │ -
348}
│ │ │ │ -
349inline FVarLevel::ValueTagArray
│ │ │ │ -
350FVarLevel::getVertexValueTags(Index vIndex)
│ │ │ │ -
351{
│ │ │ │ -
352 int vCount = getNumVertexValues(vIndex);
│ │ │ │ -
353 int vOffset = getVertexValueOffset(vIndex);
│ │ │ │ -
354 return ValueTagArray(&_vertValueTags[vOffset], vCount);
│ │ │ │ -
355}
│ │ │ │ -
356
│ │ │ │ -
357inline FVarLevel::ConstCreaseEndPairArray
│ │ │ │ -
358FVarLevel::getVertexValueCreaseEnds(Index vIndex) const
│ │ │ │ -
359{
│ │ │ │ -
360 int vCount = getNumVertexValues(vIndex);
│ │ │ │ -
361 int vOffset = getVertexValueOffset(vIndex);
│ │ │ │ -
362 return ConstCreaseEndPairArray(&_vertValueCreaseEnds[vOffset], vCount);
│ │ │ │ -
363}
│ │ │ │ -
364inline FVarLevel::CreaseEndPairArray
│ │ │ │ -
365FVarLevel::getVertexValueCreaseEnds(Index vIndex)
│ │ │ │ -
366{
│ │ │ │ -
367 int vCount = getNumVertexValues(vIndex);
│ │ │ │ -
368 int vOffset = getVertexValueOffset(vIndex);
│ │ │ │ -
369 return CreaseEndPairArray(&_vertValueCreaseEnds[vOffset], vCount);
│ │ │ │ -
370}
│ │ │ │ -
371
│ │ │ │ -
372inline Index
│ │ │ │ -
373FVarLevel::findVertexValueIndex(Index vertexIndex, Index valueIndex) const {
│ │ │ │ -
374
│ │ │ │ -
375 if (_level.getDepth() > 0) return valueIndex;
│ │ │ │ -
376
│ │ │ │ -
377 Index vvIndex = getVertexValueOffset(vertexIndex);
│ │ │ │ -
378 while (_vertValueIndices[vvIndex] != valueIndex) {
│ │ │ │ -
379 ++ vvIndex;
│ │ │ │ -
380 }
│ │ │ │ -
381 return vvIndex;
│ │ │ │ -
382}
│ │ │ │ -
383
│ │ │ │ -
384//
│ │ │ │ -
385// Methods related to tagging:
│ │ │ │ -
386//
│ │ │ │ -
387inline Level::ETag
│ │ │ │ -
388FVarLevel::ETag::combineWithLevelETag(Level::ETag levelTag) const
│ │ │ │ -
389{
│ │ │ │ -
390 if (this->_mismatch) {
│ │ │ │ -
391 levelTag._boundary = true;
│ │ │ │ -
392 levelTag._infSharp = true;
│ │ │ │ -
393 }
│ │ │ │ -
394 return levelTag;
│ │ │ │ -
395}
│ │ │ │ -
396inline Level::VTag
│ │ │ │ -
397FVarLevel::ValueTag::combineWithLevelVTag(Level::VTag levelTag) const
│ │ │ │ -
398{
│ │ │ │ -
399 if (this->_mismatch) {
│ │ │ │ -
400 //
│ │ │ │ -
401 // Semi-sharp FVar values are always tagged and treated as corners
│ │ │ │ -
402 // (at least three sharp edges (two boundary edges and one interior
│ │ │ │ -
403 // semi-sharp) and/or vertex is semi-sharp) until the sharpness has
│ │ │ │ -
404 // decayed, but they ultimately lie on the inf-sharp crease of the
│ │ │ │ -
405 // FVar boundary. Consider this when tagging inf-sharp features.
│ │ │ │ -
406 //
│ │ │ │ -
407 if (this->isCorner()) {
│ │ │ │ -
408 levelTag._rule = (Level::VTag::VTagSize) Sdc::Crease::RULE_CORNER;
│ │ │ │ -
409 } else {
│ │ │ │ -
410 levelTag._rule = (Level::VTag::VTagSize) Sdc::Crease::RULE_CREASE;
│ │ │ │ -
411 }
│ │ │ │ -
412 if (this->isCrease() || this->isSemiSharp()) {
│ │ │ │ -
413 levelTag._infSharp = false;
│ │ │ │ -
414 levelTag._infSharpCrease = true;
│ │ │ │ -
415 levelTag._corner = false;
│ │ │ │ -
416 } else {
│ │ │ │ -
417 levelTag._infSharp = true;
│ │ │ │ -
418 levelTag._infSharpCrease = false;
│ │ │ │ -
419 levelTag._corner = !this->_infIrregular && !this->_infSharpEdges;
│ │ │ │ -
420 }
│ │ │ │ -
421 levelTag._infSharpEdges = true;
│ │ │ │ -
422 levelTag._infIrregular = this->_infIrregular;
│ │ │ │ -
423
│ │ │ │ -
424 levelTag._boundary = true;
│ │ │ │ -
425 levelTag._xordinary = this->_xordinary;
│ │ │ │ -
426
│ │ │ │ -
427 levelTag._nonManifold |= this->_nonManifold;
│ │ │ │ -
428 }
│ │ │ │ -
429 return levelTag;
│ │ │ │ -
430}
│ │ │ │ -
431
│ │ │ │ -
432} // end namespace internal
│ │ │ │ -
433} // end namespace Vtr
│ │ │ │ -
434
│ │ │ │ -
435} // end namespace OPENSUBDIV_VERSION
│ │ │ │ -
436using namespace OPENSUBDIV_VERSION;
│ │ │ │ -
437} // end namespace OpenSubdiv
│ │ │ │ -
438
│ │ │ │ -
439#endif /* OPENSUBDIV3_VTR_FVAR_LEVEL_H */
│ │ │ │ +
124 float GetSharpness() const { return _parent->getVertexSharpness(_pIndex); }
│ │ │ │ +
125 float* GetSharpnessPerEdge(float pSharpness[]) const {
│ │ │ │ +
126 ConstIndexArray pEdges = _parent->getVertexEdges(_pIndex);
│ │ │ │ +
127 for (int i = 0; i < _eCount; ++i) {
│ │ │ │ +
128 pSharpness[i] = _parent->getEdgeSharpness(pEdges[i]);
│ │ │ │ +
129 }
│ │ │ │ +
130 return pSharpness;
│ │ │ │ +
131 }
│ │ │ │ +
132
│ │ │ │ +
133 float GetChildSharpness(Sdc::Crease const&) const { return _child->getVertexSharpness(_cIndex); }
│ │ │ │ +
134 float* GetChildSharpnessPerEdge(Sdc::Crease const& crease, float cSharpness[]) const {
│ │ │ │ +
135 internal::StackBuffer<float,16> pSharpness(_eCount);
│ │ │ │ +
136 GetSharpnessPerEdge(pSharpness);
│ │ │ │ +
137 crease.SubdivideEdgeSharpnessesAroundVertex(_eCount, pSharpness, cSharpness);
│ │ │ │ +
138 return cSharpness;
│ │ │ │ +
139 }
│ │ │ │ +
140
│ │ │ │ +
141private:
│ │ │ │ +
142 const Level* _parent;
│ │ │ │ +
143 const Level* _child;
│ │ │ │ +
144
│ │ │ │ +
145 int _pIndex;
│ │ │ │ +
146 int _cIndex;
│ │ │ │ +
147 int _eCount;
│ │ │ │ +
148 int _fCount;
│ │ │ │ +
149};
│ │ │ │ +
150
│ │ │ │ +
151} // end namespace internal
│ │ │ │ +
152} // end namespace Vtr
│ │ │ │ +
153
│ │ │ │ +
154} // end namespace OPENSUBDIV_VERSION
│ │ │ │ +
155using namespace OPENSUBDIV_VERSION;
│ │ │ │ +
156} // end namespace OpenSubdiv
│ │ │ │ +
157
│ │ │ │ +
158#endif /* OPENSUBDIV3_VTR_COMPONENT_INTERFACES_H */
│ │ │ │ │ │ │ │ -
ConstArray< LocalIndex > ConstLocalIndexArray
Definition types.h:83
│ │ │ │ -
Array< LocalIndex > LocalIndexArray
Definition types.h:82
│ │ │ │ - │ │ │ │
ConstArray< Index > ConstIndexArray
Definition types.h:80
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,12 +1,12 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ -fvarLevel.h │ │ │ │ │ +componentInterfaces.h │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// │ │ │ │ │ 2// Copyright 2014 DreamWorks Animation LLC. │ │ │ │ │ 3// │ │ │ │ │ 4// Licensed under the Apache License, Version 2.0 (the "Apache License") │ │ │ │ │ 5// with the following modification; you may not use this file except in │ │ │ │ │ 6// compliance with the Apache License and the following modification to it: │ │ │ │ │ @@ -23,484 +23,158 @@ │ │ │ │ │ 17// │ │ │ │ │ 18// Unless required by applicable law or agreed to in writing, software │ │ │ │ │ 19// distributed under the Apache License with the above modification is │ │ │ │ │ 20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY │ │ │ │ │ 21// KIND, either express or implied. See the Apache License for the specific │ │ │ │ │ 22// language governing permissions and limitations under the Apache License. │ │ │ │ │ 23// │ │ │ │ │ -24#ifndef OPENSUBDIV3_VTR_FVAR_LEVEL_H │ │ │ │ │ -25#define OPENSUBDIV3_VTR_FVAR_LEVEL_H │ │ │ │ │ +24#ifndef OPENSUBDIV3_VTR_COMPONENT_INTERFACES_H │ │ │ │ │ +25#define OPENSUBDIV3_VTR_COMPONENT_INTERFACES_H │ │ │ │ │ 26 │ │ │ │ │ 27#include "../version.h" │ │ │ │ │ 28 │ │ │ │ │ 29#include "../sdc/types.h" │ │ │ │ │ 30#include "../sdc/crease.h" │ │ │ │ │ -31#include "../sdc/options.h" │ │ │ │ │ -32#include "../vtr/types.h" │ │ │ │ │ -33#include "../vtr/level.h" │ │ │ │ │ -34 │ │ │ │ │ -35#include │ │ │ │ │ -36#include │ │ │ │ │ -37#include │ │ │ │ │ -38 │ │ │ │ │ +31#include "../vtr/types.h" │ │ │ │ │ +32#include "../vtr/stackBuffer.h" │ │ │ │ │ +33 │ │ │ │ │ +34#include │ │ │ │ │ +35 │ │ │ │ │ +36 │ │ │ │ │ +37namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ +38namespace OPENSUBDIV_VERSION { │ │ │ │ │ 39 │ │ │ │ │ -40namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ -41namespace OPENSUBDIV_VERSION { │ │ │ │ │ +40namespace Vtr { │ │ │ │ │ +41namespace internal { │ │ │ │ │ 42 │ │ │ │ │ -43namespace Vtr { │ │ │ │ │ -44namespace internal { │ │ │ │ │ -45 │ │ │ │ │ +43// │ │ │ │ │ +44// Simple classes supporting the interfaces required of generic topological │ │ │ │ │ +45// types in the Scheme mask queries, e.g. │ │ │ │ │ 46// │ │ │ │ │ -47// FVarLevel: │ │ │ │ │ -48// A "face-varying channel" includes the topology for a set of face-varying │ │ │ │ │ -49// data, relative to the topology of the Level with which it is associated. │ │ │ │ │ +47// These are not used with Vtr but arguably belong with it as the details to │ │ │ │ │ +48// write these efficiently depends very much on intimate details of Vtr's │ │ │ │ │ +49// implementation, e.g. the use of tag bits, subdivision Rules, etc. │ │ │ │ │ 50// │ │ │ │ │ -51// Analogous to a set of vertices and face-vertices that define the topology │ │ │ │ │ -for │ │ │ │ │ -52// the geometry, a channel requires a set of "values" and "face-values". The │ │ │ │ │ -53// "values" are indices of entries in a set of face-varying data, just as │ │ │ │ │ -vertices │ │ │ │ │ -54// are indices into a set of vertex data. The face-values identify a value │ │ │ │ │ -for │ │ │ │ │ -55// each vertex of the face, and so define topology for the values that may be │ │ │ │ │ -56// unique to each channel. │ │ │ │ │ -57// │ │ │ │ │ -58// In addition to the value size and the vector of face-values (which matches │ │ │ │ │ -the │ │ │ │ │ -59// size of the geometry's face-vertices), tags are associated with each │ │ │ │ │ -component │ │ │ │ │ -60// to identify deviations of the face-varying topology from the vertex │ │ │ │ │ -topology. │ │ │ │ │ -61// And since there may be a one-to-many mapping between vertices and face- │ │ │ │ │ -varying │ │ │ │ │ -62// values, that mapping is also allocated. │ │ │ │ │ -63// │ │ │ │ │ -64// It turns out that the mapping used is able to completely encode the set of │ │ │ │ │ -65// face-values and is more amenable to refinement. Currently the face-values │ │ │ │ │ -66// take up almost half the memory of this representation, so if memory does │ │ │ │ │ -67// become a concern, we do not need to store them. The only reason we do so │ │ │ │ │ -now │ │ │ │ │ -68// is that the face-value interface for specifying base topology and │ │ │ │ │ -inspecting │ │ │ │ │ -69// subsequent levels is very familiar to that of face-vertices for clients. │ │ │ │ │ -So │ │ │ │ │ -70// having them available for such access is convenient. │ │ │ │ │ -71// │ │ │ │ │ -72// Regarding scope and access... │ │ │ │ │ -73// Unclear at this early state, but leaning towards nesting this class within │ │ │ │ │ -74// Level, given the intimate dependency between the two. │ │ │ │ │ -75// Everything is being declared public for now to facilitate access until │ │ │ │ │ -it's │ │ │ │ │ -76// clearer how this functionality will be provided. │ │ │ │ │ -77// │ │ │ │ │ -78class FVarLevel { │ │ │ │ │ -79public: │ │ │ │ │ -80 // │ │ │ │ │ -81 // Component tags -- trying to minimize the types needed here: │ │ │ │ │ -82 // │ │ │ │ │ -83 // Tag per Edge: │ │ │ │ │ -84 // - facilitates topological analysis around each vertex │ │ │ │ │ -85 // - required during refinement to spawn one or more edge-values │ │ │ │ │ -86 // │ │ │ │ │ -87 struct ETag { │ │ │ │ │ -88 ETag() { } │ │ │ │ │ +51 │ │ │ │ │ +52 │ │ │ │ │ +53// │ │ │ │ │ +54// For , which provides information in the neighborhood of a │ │ │ │ │ +face: │ │ │ │ │ +55// │ │ │ │ │ +56class FaceInterface { │ │ │ │ │ +57public: │ │ │ │ │ +58 FaceInterface() { } │ │ │ │ │ +59 FaceInterface(int vertCount) : _vertCount(vertCount) { } │ │ │ │ │ +60 ~FaceInterface() { } │ │ │ │ │ +61 │ │ │ │ │ +62public: // Generic interface expected of : │ │ │ │ │ +63 int GetNumVertices() const { return _vertCount; } │ │ │ │ │ +64 │ │ │ │ │ +65private: │ │ │ │ │ +66 int _vertCount; │ │ │ │ │ +67}; │ │ │ │ │ +68 │ │ │ │ │ +69 │ │ │ │ │ +70// │ │ │ │ │ +71// For , which provides information in the neighborhood of an │ │ │ │ │ +edge: │ │ │ │ │ +72// │ │ │ │ │ +73class EdgeInterface { │ │ │ │ │ +74public: │ │ │ │ │ +75 EdgeInterface() { } │ │ │ │ │ +76 EdgeInterface(Level const& level) : _level(&level) { } │ │ │ │ │ +77 ~EdgeInterface() { } │ │ │ │ │ +78 │ │ │ │ │ +79 void SetIndex(int edgeIndex) { _eIndex = edgeIndex; } │ │ │ │ │ +80 │ │ │ │ │ +81public: // Generic interface expected of : │ │ │ │ │ +82 int GetNumFaces() const { return _level->getEdgeFaces(_eIndex).size(); } │ │ │ │ │ +83 float GetSharpness() const { return _level->getEdgeSharpness(_eIndex); } │ │ │ │ │ +84 │ │ │ │ │ +85 void GetChildSharpnesses(Sdc::Crease const&, float s[2]) const { │ │ │ │ │ +86 // Need to use the Refinement here to identify the two child edges: │ │ │ │ │ +87 s[0] = s[1] = GetSharpness() - 1.0f; │ │ │ │ │ +88 } │ │ │ │ │ 89 │ │ │ │ │ -90 void clear() { std::memset(this, 0, sizeof(ETag)); } │ │ │ │ │ -91 │ │ │ │ │ -92 typedef unsigned char ETagSize; │ │ │ │ │ -93 │ │ │ │ │ -94 ETagSize _mismatch : 1; // local FVar topology does not match │ │ │ │ │ -95 ETagSize _disctsV0 : 1; // discontinuous at vertex 0 │ │ │ │ │ -96 ETagSize _disctsV1 : 1; // discontinuous at vertex 1 │ │ │ │ │ -97 ETagSize _linear : 1; // linear boundary constraints │ │ │ │ │ -98 │ │ │ │ │ -99 Level::ETag combineWithLevelETag(Level::ETag) const; │ │ │ │ │ -100 }; │ │ │ │ │ -101 │ │ │ │ │ -102 // │ │ │ │ │ -103 // Tag per Value: │ │ │ │ │ -104 // - informs both refinement and interpolation │ │ │ │ │ -105 // - every value spawns a child value in refinement │ │ │ │ │ -106 // - includes a subset of Level::VTag to be later combined with a VTag │ │ │ │ │ -107 // │ │ │ │ │ -108 struct ValueTag { │ │ │ │ │ -109 ValueTag() { } │ │ │ │ │ -110 │ │ │ │ │ -111 void clear() { std::memset(this, 0, sizeof(ValueTag)); } │ │ │ │ │ +90 void GetNumVerticesPerFace(int vertsPerFace[]) const { │ │ │ │ │ +91 _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y eFaces = _level->getEdgeFaces(_eIndex); │ │ │ │ │ +92 for (int i = 0; i < eFaces.size(); ++i) { │ │ │ │ │ +93 vertsPerFace[i] = _level->getFaceVertices(eFaces[i]).size(); │ │ │ │ │ +94 } │ │ │ │ │ +95 } │ │ │ │ │ +96 │ │ │ │ │ +97private: │ │ │ │ │ +98 const Level* _level; │ │ │ │ │ +99 │ │ │ │ │ +100 int _eIndex; │ │ │ │ │ +101}; │ │ │ │ │ +102 │ │ │ │ │ +103 │ │ │ │ │ +104// │ │ │ │ │ +105// For , which provides information in the neighborhood of │ │ │ │ │ +a vertex: │ │ │ │ │ +106// │ │ │ │ │ +107class VertexInterface { │ │ │ │ │ +108public: │ │ │ │ │ +109 VertexInterface() { } │ │ │ │ │ +110 VertexInterface(Level const& parent, Level const& child) : _parent │ │ │ │ │ +(&parent), _child(&child) { } │ │ │ │ │ +111 ~VertexInterface() { } │ │ │ │ │ 112 │ │ │ │ │ -113 bool isMismatch() const { return _mismatch; } │ │ │ │ │ -114 bool isCrease() const { return _crease; } │ │ │ │ │ -115 bool isCorner() const { return !_crease; } │ │ │ │ │ -116 bool isSemiSharp() const { return _semiSharp; } │ │ │ │ │ -117 bool isInfSharp() const { return !_semiSharp && !_crease; } │ │ │ │ │ -118 bool isDepSharp() const { return _depSharp; } │ │ │ │ │ -119 bool hasCreaseEnds() const { return _crease || _semiSharp; } │ │ │ │ │ -120 │ │ │ │ │ -121 bool hasInfSharpEdges() const { return _infSharpEdges; } │ │ │ │ │ -122 bool hasInfIrregularity() const { return _infIrregular; } │ │ │ │ │ +113 void SetIndex(int parentIndex, int childIndex) { │ │ │ │ │ +114 _pIndex = parentIndex; │ │ │ │ │ +115 _cIndex = childIndex; │ │ │ │ │ +116 _eCount = _parent->getVertexEdges(_pIndex).size(); │ │ │ │ │ +117 _fCount = _parent->getVertexFaces(_pIndex).size(); │ │ │ │ │ +118 } │ │ │ │ │ +119 │ │ │ │ │ +120public: // Generic interface expected of : │ │ │ │ │ +121 int GetNumEdges() const { return _eCount; } │ │ │ │ │ +122 int GetNumFaces() const { return _fCount; } │ │ │ │ │ 123 │ │ │ │ │ -124 typedef unsigned char ValueTagSize; │ │ │ │ │ -125 │ │ │ │ │ -126 // If there is no mismatch, no other members should be inspected │ │ │ │ │ -127 ValueTagSize _mismatch : 1; // local FVar topology does not match │ │ │ │ │ -128 ValueTagSize _xordinary : 1; // local FVar topology is extra-ordinary │ │ │ │ │ -129 ValueTagSize _nonManifold : 1; // local FVar topology is non-manifold │ │ │ │ │ -130 ValueTagSize _crease : 1; // value is a crease, otherwise a corner │ │ │ │ │ -131 ValueTagSize _semiSharp : 1; // value is a corner decaying to crease │ │ │ │ │ -132 ValueTagSize _depSharp : 1; // value is a corner by dependency on another │ │ │ │ │ -133 │ │ │ │ │ -134 ValueTagSize _infSharpEdges : 1; // value is a corner by inf-sharp features │ │ │ │ │ -135 ValueTagSize _infIrregular : 1; // value span includes inf-sharp │ │ │ │ │ -irregularity │ │ │ │ │ -136 │ │ │ │ │ -137 Level::VTag combineWithLevelVTag(Level::VTag) const; │ │ │ │ │ -138 │ │ │ │ │ -139 // Alternate constructor and accessor for dealing with integer bits │ │ │ │ │ -directly: │ │ │ │ │ -140 explicit ValueTag(ValueTagSize bits) { │ │ │ │ │ -141 std::memcpy(this, &bits, sizeof(bits)); │ │ │ │ │ -142 } │ │ │ │ │ -143 ValueTagSize getBits() const { │ │ │ │ │ -144 ValueTagSize bits; │ │ │ │ │ -145 std::memcpy(&bits, this, sizeof(bits)); │ │ │ │ │ -146 return bits; │ │ │ │ │ -147 } │ │ │ │ │ -148 }; │ │ │ │ │ -149 │ │ │ │ │ -150 typedef Vtr::ConstArray ConstValueTagArray; │ │ │ │ │ -151 typedef Vtr::Array ValueTagArray; │ │ │ │ │ -152 │ │ │ │ │ -153 // │ │ │ │ │ -154 // Simple struct containing the "end faces" of a crease, i.e. the faces │ │ │ │ │ -which │ │ │ │ │ -155 // contain the FVar values to be used when interpolating the crease. │ │ │ │ │ -(Prefer │ │ │ │ │ -156 // the struct over std::pair for its member names) │ │ │ │ │ -157 // │ │ │ │ │ -158 struct CreaseEndPair { │ │ │ │ │ -159 _L_o_c_a_l_I_n_d_e_x _startFace; │ │ │ │ │ -160 _L_o_c_a_l_I_n_d_e_x _endFace; │ │ │ │ │ -161 }; │ │ │ │ │ -162 │ │ │ │ │ -163 typedef Vtr::ConstArray ConstCreaseEndPairArray; │ │ │ │ │ -164 typedef Vtr::Array CreaseEndPairArray; │ │ │ │ │ -165 │ │ │ │ │ -166 typedef _L_o_c_a_l_I_n_d_e_x Sibling; │ │ │ │ │ -167 │ │ │ │ │ -168 typedef _C_o_n_s_t_L_o_c_a_l_I_n_d_e_x_A_r_r_a_y ConstSiblingArray; │ │ │ │ │ -169 typedef _L_o_c_a_l_I_n_d_e_x_A_r_r_a_y SiblingArray; │ │ │ │ │ -170 │ │ │ │ │ -171public: │ │ │ │ │ -172 FVarLevel(Level const& level); │ │ │ │ │ -173 ~FVarLevel(); │ │ │ │ │ -174 │ │ │ │ │ -175 // Queries for the entire channel: │ │ │ │ │ -176 Level const& getLevel() const { return _level; } │ │ │ │ │ -177 │ │ │ │ │ -178 int getNumValues() const { return _valueCount; } │ │ │ │ │ -179 int getNumFaceValuesTotal() const { return (int) _faceVertValues.size(); } │ │ │ │ │ -180 │ │ │ │ │ -181 bool isLinear() const { return _isLinear; } │ │ │ │ │ -182 bool hasLinearBoundaries() const { return _hasLinearBoundaries; } │ │ │ │ │ -183 bool hasSmoothBoundaries() const { return ! _hasLinearBoundaries; } │ │ │ │ │ -184 bool hasCreaseEnds() const { return hasSmoothBoundaries(); } │ │ │ │ │ -185 │ │ │ │ │ -186 Sdc::Options getOptions() const { return _options; } │ │ │ │ │ -187 │ │ │ │ │ -188 // Queries per face: │ │ │ │ │ -189 _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y getFaceValues(_I_n_d_e_x fIndex) const; │ │ │ │ │ -190 _I_n_d_e_x_A_r_r_a_y getFaceValues(_I_n_d_e_x fIndex); │ │ │ │ │ -191 │ │ │ │ │ -192 // Queries per edge: │ │ │ │ │ -193 ETag getEdgeTag(_I_n_d_e_x eIndex) const { return _edgeTags[eIndex]; } │ │ │ │ │ -194 bool edgeTopologyMatches(_I_n_d_e_x eIndex) const { return !getEdgeTag │ │ │ │ │ -(eIndex)._mismatch; } │ │ │ │ │ -195 │ │ │ │ │ -196 // Queries per vertex (and its potential sibling values): │ │ │ │ │ -197 int getNumVertexValues(_I_n_d_e_x v) const { return _vertSiblingCounts[v]; } │ │ │ │ │ -198 _I_n_d_e_x getVertexValueOffset(_I_n_d_e_x v, Sibling i = 0) const { return │ │ │ │ │ -_vertSiblingOffsets[v] + i; } │ │ │ │ │ -199 │ │ │ │ │ -200 _I_n_d_e_x getVertexValue(_I_n_d_e_x v, Sibling i = 0) const { return │ │ │ │ │ -_vertValueIndices[getVertexValueOffset(v,i)]; } │ │ │ │ │ -201 │ │ │ │ │ -202 _I_n_d_e_x findVertexValueIndex(_I_n_d_e_x vertexIndex, _I_n_d_e_x valueIndex) const; │ │ │ │ │ -203 │ │ │ │ │ -204 // Methods to access/modify array properties per vertex: │ │ │ │ │ -205 _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y getVertexValues(_I_n_d_e_x vIndex) const; │ │ │ │ │ -206 _I_n_d_e_x_A_r_r_a_y getVertexValues(_I_n_d_e_x vIndex); │ │ │ │ │ -207 │ │ │ │ │ -208 ConstValueTagArray getVertexValueTags(_I_n_d_e_x vIndex) const; │ │ │ │ │ -209 ValueTagArray getVertexValueTags(_I_n_d_e_x vIndex); │ │ │ │ │ -210 │ │ │ │ │ -211 ConstCreaseEndPairArray getVertexValueCreaseEnds(_I_n_d_e_x vIndex) const; │ │ │ │ │ -212 CreaseEndPairArray getVertexValueCreaseEnds(_I_n_d_e_x vIndex); │ │ │ │ │ -213 │ │ │ │ │ -214 ConstSiblingArray getVertexFaceSiblings(_I_n_d_e_x vIndex) const; │ │ │ │ │ -215 SiblingArray getVertexFaceSiblings(_I_n_d_e_x vIndex); │ │ │ │ │ -216 │ │ │ │ │ -217 // Queries per value: │ │ │ │ │ -218 ValueTag getValueTag(_I_n_d_e_x valueIndex) const { return _vertValueTags │ │ │ │ │ -[valueIndex]; } │ │ │ │ │ -219 bool valueTopologyMatches(_I_n_d_e_x valueIndex) const { return !getValueTag │ │ │ │ │ -(valueIndex)._mismatch; } │ │ │ │ │ -220 │ │ │ │ │ -221 CreaseEndPair getValueCreaseEndPair(_I_n_d_e_x valueIndex) const { return │ │ │ │ │ -_vertValueCreaseEnds[valueIndex]; } │ │ │ │ │ -222 │ │ │ │ │ -223 // Tag queries related to faces (use Level methods for those returning │ │ │ │ │ -Level::VTag/ETag) │ │ │ │ │ -224 void getFaceValueTags(_I_n_d_e_x faceIndex, ValueTag valueTags[]) const; │ │ │ │ │ -225 │ │ │ │ │ -226 ValueTag getFaceCompositeValueTag(_I_n_d_e_x faceIndex) const; │ │ │ │ │ -227 │ │ │ │ │ -228 // Higher-level topological queries, i.e. values in a neighborhood: │ │ │ │ │ -229 void getEdgeFaceValues(_I_n_d_e_x eIndex, int fIncToEdge, _I_n_d_e_x valuesPerVert │ │ │ │ │ -[2]) const; │ │ │ │ │ -230 void getVertexEdgeValues(_I_n_d_e_x vIndex, _I_n_d_e_x valuesPerEdge[]) const; │ │ │ │ │ -231 void getVertexCreaseEndValues(_I_n_d_e_x vIndex, Sibling sibling, _I_n_d_e_x │ │ │ │ │ -endValues[2]) const; │ │ │ │ │ -232 │ │ │ │ │ -233 // Initialization and allocation helpers: │ │ │ │ │ -234 void setOptions(Sdc::Options const& options); │ │ │ │ │ -235 void resizeVertexValues(int numVertexValues); │ │ │ │ │ -236 void resizeValues(int numValues); │ │ │ │ │ -237 void resizeComponents(); │ │ │ │ │ -238 │ │ │ │ │ -239 // Topological analysis methods -- tagging and face-value population: │ │ │ │ │ -240 void completeTopologyFromFaceValues(int regBoundaryValence); │ │ │ │ │ -241 void initializeFaceValuesFromFaceVertices(); │ │ │ │ │ -242 void initializeFaceValuesFromVertexFaceSiblings(); │ │ │ │ │ -243 │ │ │ │ │ -244 struct ValueSpan; │ │ │ │ │ -245 void gatherValueSpans(_I_n_d_e_x vIndex, ValueSpan * vValueSpans) const; │ │ │ │ │ -246 │ │ │ │ │ -247 // Debugging methods: │ │ │ │ │ -248 bool validate() const; │ │ │ │ │ -249 void print() const; │ │ │ │ │ -250 void buildFaceVertexSiblingsFromVertexFaceSiblings(std::vector& │ │ │ │ │ -fvSiblings) const; │ │ │ │ │ -251 │ │ │ │ │ -252private: │ │ │ │ │ -253 // Just as Refinements build Levels, FVarRefinements build FVarLevels... │ │ │ │ │ -254 friend class FVarRefinement; │ │ │ │ │ -255 │ │ │ │ │ -256 Level const & _level; │ │ │ │ │ -257 │ │ │ │ │ -258 // Linear interpolation options vary between channels: │ │ │ │ │ -259 Sdc::Options _options; │ │ │ │ │ -260 │ │ │ │ │ -261 bool _isLinear; │ │ │ │ │ -262 bool _hasLinearBoundaries; │ │ │ │ │ -263 bool _hasDependentSharpness; │ │ │ │ │ -264 int _valueCount; │ │ │ │ │ -265 │ │ │ │ │ -266 // │ │ │ │ │ -267 // Vectors recording face-varying topology including tags that help │ │ │ │ │ -propagate │ │ │ │ │ -268 // data through the refinement hierarchy. Vectors are not sparse but most │ │ │ │ │ -use │ │ │ │ │ -269 // 8-bit values relative to the local topology. │ │ │ │ │ -270 // │ │ │ │ │ -271 // The vector of face-values is actually redundant here, but is constructed │ │ │ │ │ -as │ │ │ │ │ -272 // it is most convenient for clients. It represents almost half the memory │ │ │ │ │ -of │ │ │ │ │ -273 // the topology (4 32-bit integers per face) and not surprisingly, │ │ │ │ │ -populating │ │ │ │ │ -274 // it takes a considerable amount of the refinement time (1/3). We can │ │ │ │ │ -reduce │ │ │ │ │ -275 // both if we are willing to compute these on demand for clients. │ │ │ │ │ -276 // │ │ │ │ │ -277 // Per-face (matches face-verts of corresponding level): │ │ │ │ │ -278 std::vector _faceVertValues; │ │ │ │ │ -279 │ │ │ │ │ -280 // Per-edge: │ │ │ │ │ -281 std::vector _edgeTags; │ │ │ │ │ -282 │ │ │ │ │ -283 // Per-vertex: │ │ │ │ │ -284 std::vector _vertSiblingCounts; │ │ │ │ │ -285 std::vector _vertSiblingOffsets; │ │ │ │ │ -286 std::vector _vertFaceSiblings; │ │ │ │ │ -287 │ │ │ │ │ -288 // Per-value: │ │ │ │ │ -289 std::vector _vertValueIndices; │ │ │ │ │ -290 std::vector _vertValueTags; │ │ │ │ │ -291 std::vector _vertValueCreaseEnds; │ │ │ │ │ -292}; │ │ │ │ │ -293 │ │ │ │ │ -294// │ │ │ │ │ -295// Access/modify the values associated with each face: │ │ │ │ │ -296// │ │ │ │ │ -297inline _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y │ │ │ │ │ -298FVarLevel::getFaceValues(_I_n_d_e_x fIndex) const { │ │ │ │ │ -299 │ │ │ │ │ -300 int vCount = _level.getNumFaceVertices(fIndex); │ │ │ │ │ -301 int vOffset = _level.getOffsetOfFaceVertices(fIndex); │ │ │ │ │ -302 return _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y(&_faceVertValues[vOffset], vCount); │ │ │ │ │ -303} │ │ │ │ │ -304inline _I_n_d_e_x_A_r_r_a_y │ │ │ │ │ -305FVarLevel::getFaceValues(_I_n_d_e_x fIndex) { │ │ │ │ │ -306 │ │ │ │ │ -307 int vCount = _level.getNumFaceVertices(fIndex); │ │ │ │ │ -308 int vOffset = _level.getOffsetOfFaceVertices(fIndex); │ │ │ │ │ -309 return _I_n_d_e_x_A_r_r_a_y(&_faceVertValues[vOffset], vCount); │ │ │ │ │ -310} │ │ │ │ │ -311 │ │ │ │ │ -312inline FVarLevel::ConstSiblingArray │ │ │ │ │ -313FVarLevel::getVertexFaceSiblings(_I_n_d_e_x vIndex) const { │ │ │ │ │ -314 │ │ │ │ │ -315 int vCount = _level.getNumVertexFaces(vIndex); │ │ │ │ │ -316 int vOffset = _level.getOffsetOfVertexFaces(vIndex); │ │ │ │ │ -317 return ConstSiblingArray(&_vertFaceSiblings[vOffset], vCount); │ │ │ │ │ -318} │ │ │ │ │ -319inline FVarLevel::SiblingArray │ │ │ │ │ -320FVarLevel::getVertexFaceSiblings(_I_n_d_e_x vIndex) { │ │ │ │ │ -321 │ │ │ │ │ -322 int vCount = _level.getNumVertexFaces(vIndex); │ │ │ │ │ -323 int vOffset = _level.getOffsetOfVertexFaces(vIndex); │ │ │ │ │ -324 return SiblingArray(&_vertFaceSiblings[vOffset], vCount); │ │ │ │ │ -325} │ │ │ │ │ -326 │ │ │ │ │ -327inline _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y │ │ │ │ │ -328FVarLevel::getVertexValues(_I_n_d_e_x vIndex) const │ │ │ │ │ -329{ │ │ │ │ │ -330 int vCount = getNumVertexValues(vIndex); │ │ │ │ │ -331 int vOffset = getVertexValueOffset(vIndex); │ │ │ │ │ -332 return _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y(&_vertValueIndices[vOffset], vCount); │ │ │ │ │ -333} │ │ │ │ │ -334inline _I_n_d_e_x_A_r_r_a_y │ │ │ │ │ -335FVarLevel::getVertexValues(_I_n_d_e_x vIndex) │ │ │ │ │ -336{ │ │ │ │ │ -337 int vCount = getNumVertexValues(vIndex); │ │ │ │ │ -338 int vOffset = getVertexValueOffset(vIndex); │ │ │ │ │ -339 return _I_n_d_e_x_A_r_r_a_y(&_vertValueIndices[vOffset], vCount); │ │ │ │ │ -340} │ │ │ │ │ -341 │ │ │ │ │ -342inline FVarLevel::ConstValueTagArray │ │ │ │ │ -343FVarLevel::getVertexValueTags(_I_n_d_e_x vIndex) const │ │ │ │ │ -344{ │ │ │ │ │ -345 int vCount = getNumVertexValues(vIndex); │ │ │ │ │ -346 int vOffset = getVertexValueOffset(vIndex); │ │ │ │ │ -347 return ConstValueTagArray(&_vertValueTags[vOffset], vCount); │ │ │ │ │ -348} │ │ │ │ │ -349inline FVarLevel::ValueTagArray │ │ │ │ │ -350FVarLevel::getVertexValueTags(_I_n_d_e_x vIndex) │ │ │ │ │ -351{ │ │ │ │ │ -352 int vCount = getNumVertexValues(vIndex); │ │ │ │ │ -353 int vOffset = getVertexValueOffset(vIndex); │ │ │ │ │ -354 return ValueTagArray(&_vertValueTags[vOffset], vCount); │ │ │ │ │ -355} │ │ │ │ │ -356 │ │ │ │ │ -357inline FVarLevel::ConstCreaseEndPairArray │ │ │ │ │ -358FVarLevel::getVertexValueCreaseEnds(_I_n_d_e_x vIndex) const │ │ │ │ │ -359{ │ │ │ │ │ -360 int vCount = getNumVertexValues(vIndex); │ │ │ │ │ -361 int vOffset = getVertexValueOffset(vIndex); │ │ │ │ │ -362 return ConstCreaseEndPairArray(&_vertValueCreaseEnds[vOffset], vCount); │ │ │ │ │ -363} │ │ │ │ │ -364inline FVarLevel::CreaseEndPairArray │ │ │ │ │ -365FVarLevel::getVertexValueCreaseEnds(_I_n_d_e_x vIndex) │ │ │ │ │ -366{ │ │ │ │ │ -367 int vCount = getNumVertexValues(vIndex); │ │ │ │ │ -368 int vOffset = getVertexValueOffset(vIndex); │ │ │ │ │ -369 return CreaseEndPairArray(&_vertValueCreaseEnds[vOffset], vCount); │ │ │ │ │ -370} │ │ │ │ │ -371 │ │ │ │ │ -372inline _I_n_d_e_x │ │ │ │ │ -373FVarLevel::findVertexValueIndex(_I_n_d_e_x vertexIndex, _I_n_d_e_x valueIndex) const { │ │ │ │ │ -374 │ │ │ │ │ -375 if (_level.getDepth() > 0) return valueIndex; │ │ │ │ │ -376 │ │ │ │ │ -377 _I_n_d_e_x vvIndex = getVertexValueOffset(vertexIndex); │ │ │ │ │ -378 while (_vertValueIndices[vvIndex] != valueIndex) { │ │ │ │ │ -379 ++ vvIndex; │ │ │ │ │ -380 } │ │ │ │ │ -381 return vvIndex; │ │ │ │ │ -382} │ │ │ │ │ -383 │ │ │ │ │ -384// │ │ │ │ │ -385// Methods related to tagging: │ │ │ │ │ -386// │ │ │ │ │ -387inline Level::ETag │ │ │ │ │ -388FVarLevel::ETag::combineWithLevelETag(Level::ETag levelTag) const │ │ │ │ │ -389{ │ │ │ │ │ -390 if (this->_mismatch) { │ │ │ │ │ -391 levelTag._boundary = true; │ │ │ │ │ -392 levelTag._infSharp = true; │ │ │ │ │ -393 } │ │ │ │ │ -394 return levelTag; │ │ │ │ │ -395} │ │ │ │ │ -396inline Level::VTag │ │ │ │ │ -397FVarLevel::ValueTag::combineWithLevelVTag(Level::VTag levelTag) const │ │ │ │ │ -398{ │ │ │ │ │ -399 if (this->_mismatch) { │ │ │ │ │ -400 // │ │ │ │ │ -401 // Semi-sharp FVar values are always tagged and treated as corners │ │ │ │ │ -402 // (at least three sharp edges (two boundary edges and one interior │ │ │ │ │ -403 // semi-sharp) and/or vertex is semi-sharp) until the sharpness has │ │ │ │ │ -404 // decayed, but they ultimately lie on the inf-sharp crease of the │ │ │ │ │ -405 // FVar boundary. Consider this when tagging inf-sharp features. │ │ │ │ │ -406 // │ │ │ │ │ -407 if (this->isCorner()) { │ │ │ │ │ -408 levelTag._rule = (Level::VTag::VTagSize) _S_d_c_:_:_C_r_e_a_s_e_:_:_R_U_L_E___C_O_R_N_E_R; │ │ │ │ │ -409 } else { │ │ │ │ │ -410 levelTag._rule = (Level::VTag::VTagSize) _S_d_c_:_:_C_r_e_a_s_e_:_:_R_U_L_E___C_R_E_A_S_E; │ │ │ │ │ -411 } │ │ │ │ │ -412 if (this->isCrease() || this->isSemiSharp()) { │ │ │ │ │ -413 levelTag._infSharp = false; │ │ │ │ │ -414 levelTag._infSharpCrease = true; │ │ │ │ │ -415 levelTag._corner = false; │ │ │ │ │ -416 } else { │ │ │ │ │ -417 levelTag._infSharp = true; │ │ │ │ │ -418 levelTag._infSharpCrease = false; │ │ │ │ │ -419 levelTag._corner = !this->_infIrregular && !this->_infSharpEdges; │ │ │ │ │ -420 } │ │ │ │ │ -421 levelTag._infSharpEdges = true; │ │ │ │ │ -422 levelTag._infIrregular = this->_infIrregular; │ │ │ │ │ -423 │ │ │ │ │ -424 levelTag._boundary = true; │ │ │ │ │ -425 levelTag._xordinary = this->_xordinary; │ │ │ │ │ -426 │ │ │ │ │ -427 levelTag._nonManifold |= this->_nonManifold; │ │ │ │ │ -428 } │ │ │ │ │ -429 return levelTag; │ │ │ │ │ -430} │ │ │ │ │ -431 │ │ │ │ │ -432} // end namespace internal │ │ │ │ │ -433} // end namespace Vtr │ │ │ │ │ -434 │ │ │ │ │ -435} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ -436using namespace OPENSUBDIV_VERSION; │ │ │ │ │ -437} // end namespace OpenSubdiv │ │ │ │ │ -438 │ │ │ │ │ -439#endif /* OPENSUBDIV3_VTR_FVAR_LEVEL_H */ │ │ │ │ │ +124 float GetSharpness() const { return _parent->getVertexSharpness(_pIndex); } │ │ │ │ │ +125 float* GetSharpnessPerEdge(float pSharpness[]) const { │ │ │ │ │ +126 _C_o_n_s_t_I_n_d_e_x_A_r_r_a_y pEdges = _parent->getVertexEdges(_pIndex); │ │ │ │ │ +127 for (int i = 0; i < _eCount; ++i) { │ │ │ │ │ +128 pSharpness[i] = _parent->getEdgeSharpness(pEdges[i]); │ │ │ │ │ +129 } │ │ │ │ │ +130 return pSharpness; │ │ │ │ │ +131 } │ │ │ │ │ +132 │ │ │ │ │ +133 float GetChildSharpness(Sdc::Crease const&) const { return _child- │ │ │ │ │ +>getVertexSharpness(_cIndex); } │ │ │ │ │ +134 float* GetChildSharpnessPerEdge(Sdc::Crease const& crease, float cSharpness │ │ │ │ │ +[]) const { │ │ │ │ │ +135 internal::StackBuffer pSharpness(_eCount); │ │ │ │ │ +136 GetSharpnessPerEdge(pSharpness); │ │ │ │ │ +137 crease.SubdivideEdgeSharpnessesAroundVertex(_eCount, pSharpness, │ │ │ │ │ +cSharpness); │ │ │ │ │ +138 return cSharpness; │ │ │ │ │ +139 } │ │ │ │ │ +140 │ │ │ │ │ +141private: │ │ │ │ │ +142 const Level* _parent; │ │ │ │ │ +143 const Level* _child; │ │ │ │ │ +144 │ │ │ │ │ +145 int _pIndex; │ │ │ │ │ +146 int _cIndex; │ │ │ │ │ +147 int _eCount; │ │ │ │ │ +148 int _fCount; │ │ │ │ │ +149}; │ │ │ │ │ +150 │ │ │ │ │ +151} // end namespace internal │ │ │ │ │ +152} // end namespace Vtr │ │ │ │ │ +153 │ │ │ │ │ +154} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ +155using namespace OPENSUBDIV_VERSION; │ │ │ │ │ +156} // end namespace OpenSubdiv │ │ │ │ │ +157 │ │ │ │ │ +158#endif /* OPENSUBDIV3_VTR_COMPONENT_INTERFACES_H */ │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v │ │ │ │ │ DDeeffiinniittiioonn _l_i_m_i_t_s_._h_:_3_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_V_t_r_:_:_C_o_n_s_t_L_o_c_a_l_I_n_d_e_x_A_r_r_a_y │ │ │ │ │ -ConstArray< LocalIndex > ConstLocalIndexArray │ │ │ │ │ -DDeeffiinniittiioonn _t_y_p_e_s_._h_:_8_3 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_V_t_r_:_:_L_o_c_a_l_I_n_d_e_x_A_r_r_a_y │ │ │ │ │ -Array< LocalIndex > LocalIndexArray │ │ │ │ │ -DDeeffiinniittiioonn _t_y_p_e_s_._h_:_8_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_V_t_r_:_:_I_n_d_e_x │ │ │ │ │ -int Index │ │ │ │ │ -DDeeffiinniittiioonn _t_y_p_e_s_._h_:_5_4 │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_V_t_r_:_:_C_o_n_s_t_I_n_d_e_x_A_r_r_a_y │ │ │ │ │ ConstArray< Index > ConstIndexArray │ │ │ │ │ DDeeffiinniittiioonn _t_y_p_e_s_._h_:_8_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_V_t_r_:_:_L_o_c_a_l_I_n_d_e_x │ │ │ │ │ -unsigned short LocalIndex │ │ │ │ │ -DDeeffiinniittiioonn _t_y_p_e_s_._h_:_6_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_V_t_r_:_:_I_n_d_e_x_A_r_r_a_y │ │ │ │ │ -Array< Index > IndexArray │ │ │ │ │ -DDeeffiinniittiioonn _t_y_p_e_s_._h_:_7_9 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_C_r_e_a_s_e_:_:_R_U_L_E___C_O_R_N_E_R │ │ │ │ │ -@ RULE_CORNER │ │ │ │ │ -DDeeffiinniittiioonn _c_r_e_a_s_e_._h_:_8_7 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_C_r_e_a_s_e_:_:_R_U_L_E___C_R_E_A_S_E │ │ │ │ │ -@ RULE_CREASE │ │ │ │ │ -DDeeffiinniittiioonn _c_r_e_a_s_e_._h_:_8_6 │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _v_t_r │ │ │ │ │ - * _f_v_a_r_L_e_v_e_l_._h │ │ │ │ │ + * _c_o_m_p_o_n_e_n_t_I_n_t_e_r_f_a_c_e_s_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00782.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/sdc/bilinearScheme.h File Reference │ │ │ │ +OpenSubdiv: opensubdiv/sdc/catmarkScheme.h File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -89,19 +89,21 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Namespaces
│ │ │ │ -
bilinearScheme.h File Reference
│ │ │ │ +
catmarkScheme.h File Reference
│ │ │ │
│ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ #include "../sdc/scheme.h"
│ │ │ │ +#include <cassert>
│ │ │ │ +#include <cmath>
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -111,13 +113,13 @@ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  OpenSubdiv
 
 
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,20 +1,22 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -bilinearScheme.h File Reference │ │ │ │ │ +catmarkScheme.h File Reference │ │ │ │ │ #include "../version.h" │ │ │ │ │ #include "_._._/_s_d_c_/_s_c_h_e_m_e_._h" │ │ │ │ │ +#include │ │ │ │ │ +#include │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c │ │ │ │ │   │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _s_d_c │ │ │ │ │ - * _b_i_l_i_n_e_a_r_S_c_h_e_m_e_._h │ │ │ │ │ + * _c_a_t_m_a_r_k_S_c_h_e_m_e_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00782_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/sdc/bilinearScheme.h Source File │ │ │ │ +OpenSubdiv: opensubdiv/sdc/catmarkScheme.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -92,15 +92,15 @@ │ │ │ │
No Matches
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
bilinearScheme.h
│ │ │ │ +
catmarkScheme.h
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1//
│ │ │ │
2// Copyright 2014 DreamWorks Animation LLC.
│ │ │ │
3//
│ │ │ │
4// Licensed under the Apache License, Version 2.0 (the "Apache License")
│ │ │ │
5// with the following modification; you may not use this file except in
│ │ │ │ @@ -118,193 +118,566 @@ │ │ │ │
17//
│ │ │ │
18// Unless required by applicable law or agreed to in writing, software
│ │ │ │
19// distributed under the Apache License with the above modification is
│ │ │ │
20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
│ │ │ │
21// KIND, either express or implied. See the Apache License for the specific
│ │ │ │
22// language governing permissions and limitations under the Apache License.
│ │ │ │
23//
│ │ │ │ -
24#ifndef OPENSUBDIV3_SDC_BILINEAR_SCHEME_H
│ │ │ │ -
25#define OPENSUBDIV3_SDC_BILINEAR_SCHEME_H
│ │ │ │ +
24#ifndef OPENSUBDIV3_SDC_CATMARK_SCHEME_H
│ │ │ │ +
25#define OPENSUBDIV3_SDC_CATMARK_SCHEME_H
│ │ │ │
26
│ │ │ │
27#include "../version.h"
│ │ │ │
28
│ │ │ │
29#include "../sdc/scheme.h"
│ │ │ │
30
│ │ │ │ -
31namespace OpenSubdiv {
│ │ │ │ -
32namespace OPENSUBDIV_VERSION {
│ │ │ │ +
31#include <cassert>
│ │ │ │ +
32#include <cmath>
│ │ │ │
33
│ │ │ │ -
│ │ │ │ -
34namespace Sdc {
│ │ │ │ -
35
│ │ │ │ -
36//
│ │ │ │ -
37// Specializations for Scheme<SCHEME_BILINEAR>:
│ │ │ │ -
38//
│ │ │ │ -
39
│ │ │ │ -
40//
│ │ │ │ -
41// Bilinear traits:
│ │ │ │ -
42//
│ │ │ │ -
43template <>
│ │ │ │ - │ │ │ │ -
45
│ │ │ │ +
34namespace OpenSubdiv {
│ │ │ │ +
35namespace OPENSUBDIV_VERSION {
│ │ │ │ +
36
│ │ │ │ +
37namespace Sdc {
│ │ │ │ +
38
│ │ │ │ +
39//
│ │ │ │ +
40// Specializations for Scheme<SCHEME_CATMARK>:
│ │ │ │ +
41//
│ │ │ │ +
42
│ │ │ │ +
43//
│ │ │ │ +
44// Catmark traits:
│ │ │ │ +
45//
│ │ │ │
46template <>
│ │ │ │ - │ │ │ │ + │ │ │ │
48
│ │ │ │
49template <>
│ │ │ │ - │ │ │ │ + │ │ │ │
51
│ │ │ │
52template <>
│ │ │ │ - │ │ │ │ + │ │ │ │
54
│ │ │ │ -
55
│ │ │ │ -
56//
│ │ │ │ -
57// Refinement masks:
│ │ │ │ -
58//
│ │ │ │ -
59template <>
│ │ │ │ -
60template <typename EDGE, typename MASK>
│ │ │ │ -
61void
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ -
64 // This should be inline, otherwise trivially replicate it:
│ │ │ │ -
65 assignCreaseMaskForEdge(edge, mask);
│ │ │ │ -
66}
│ │ │ │ -
│ │ │ │ -
67
│ │ │ │ +
55template <>
│ │ │ │ + │ │ │ │ +
57
│ │ │ │ +
58
│ │ │ │ +
59//
│ │ │ │ +
60// Masks for edge-vertices: the hard Crease mask does not need to be specialized
│ │ │ │ +
61// (simply the midpoint), so all that is left is the Smooth case:
│ │ │ │ +
62//
│ │ │ │ +
63// The Smooth mask is complicated by the need to support the "triangle subdivision"
│ │ │ │ +
64// option, which applies different weighting in the presence of triangles. It is
│ │ │ │ +
65// up for debate as to whether this is useful or not -- we may be able to deprecate
│ │ │ │ +
66// this option.
│ │ │ │ +
67//
│ │ │ │
68template <>
│ │ │ │ -
69template <typename VERTEX, typename MASK>
│ │ │ │ -
70void
│ │ │ │ +
69template <typename EDGE, typename MASK>
│ │ │ │ +
70inline void
│ │ │ │
│ │ │ │ -
71Scheme<SCHEME_BILINEAR>::ComputeVertexVertexMask(VERTEX const& vertex, MASK& mask,
│ │ │ │ - │ │ │ │ -
73 // This should be inline, otherwise trivially replicate it:
│ │ │ │ -
74 assignCornerMaskForVertex(vertex, mask);
│ │ │ │ -
75}
│ │ │ │ -
│ │ │ │ +
71Scheme<SCHEME_CATMARK>::assignSmoothMaskForEdge(EDGE const& edge, MASK& mask) const {
│ │ │ │ +
72
│ │ │ │ +
73 typedef typename MASK::Weight Weight;
│ │ │ │ +
74
│ │ │ │ +
75 int faceCount = edge.GetNumFaces();
│ │ │ │
76
│ │ │ │ -
77
│ │ │ │ -
78//
│ │ │ │ -
79// Limit masks for position -- the limit position of all vertices is the refined vertex.
│ │ │ │ -
80//
│ │ │ │ -
81template <>
│ │ │ │ -
82template <typename VERTEX, typename MASK>
│ │ │ │ -
83inline void
│ │ │ │ -
│ │ │ │ -
84Scheme<SCHEME_BILINEAR>::assignCornerLimitMask(VERTEX const& /* vertex */, MASK& posMask) const {
│ │ │ │ -
85
│ │ │ │ -
86 posMask.SetNumVertexWeights(1);
│ │ │ │ -
87 posMask.SetNumEdgeWeights(0);
│ │ │ │ -
88 posMask.SetNumFaceWeights(0);
│ │ │ │ -
89 posMask.SetFaceWeightsForFaceCenters(false);
│ │ │ │ -
90
│ │ │ │ -
91 posMask.VertexWeight(0) = 1.0f;
│ │ │ │ -
92}
│ │ │ │ -
│ │ │ │ -
93
│ │ │ │ -
94template <>
│ │ │ │ -
95template <typename VERTEX, typename MASK>
│ │ │ │ -
96inline void
│ │ │ │ -
│ │ │ │ -
97Scheme<SCHEME_BILINEAR>::assignCreaseLimitMask(VERTEX const& vertex, MASK& posMask,
│ │ │ │ -
98 int const /* creaseEnds */[2]) const {
│ │ │ │ -
99
│ │ │ │ -
100 assignCornerLimitMask(vertex, posMask);
│ │ │ │ -
101}
│ │ │ │ -
│ │ │ │ -
102
│ │ │ │ -
103template <>
│ │ │ │ -
104template <typename VERTEX, typename MASK>
│ │ │ │ -
105inline void
│ │ │ │ -
│ │ │ │ -
106Scheme<SCHEME_BILINEAR>::assignSmoothLimitMask(VERTEX const& vertex, MASK& posMask) const {
│ │ │ │ -
107
│ │ │ │ -
108 assignCornerLimitMask(vertex, posMask);
│ │ │ │ -
109}
│ │ │ │ -
│ │ │ │ +
77 mask.SetNumVertexWeights(2);
│ │ │ │ +
78 mask.SetNumEdgeWeights(0);
│ │ │ │ +
79 mask.SetNumFaceWeights(faceCount);
│ │ │ │ +
80 mask.SetFaceWeightsForFaceCenters(true);
│ │ │ │ +
81
│ │ │ │ +
82 //
│ │ │ │ +
83 // Determine if we need to inspect incident faces and apply alternate weighting for
│ │ │ │ +
84 // triangles -- and if so, determine which of the two are triangles.
│ │ │ │ +
85 //
│ │ │ │ +
86 bool face0IsTri = false;
│ │ │ │ +
87 bool face1IsTri = false;
│ │ │ │ +
88 bool useTriangleOption = (_options.GetTriangleSubdivision() == Options::TRI_SUB_SMOOTH);
│ │ │ │ +
89 if (useTriangleOption) {
│ │ │ │ +
90 if (faceCount == 2) {
│ │ │ │ +
91 //
│ │ │ │ +
92 // Ideally we want to avoid this inspection when we have already subdivided at
│ │ │ │ +
93 // least once -- need something in the Edge interface to help avoid this, e.g.
│ │ │ │ +
94 // an IsRegular() query, the subdivision level...
│ │ │ │ +
95 //
│ │ │ │ +
96 int vertsPerFace[2];
│ │ │ │ +
97 edge.GetNumVerticesPerFace(vertsPerFace);
│ │ │ │ +
98
│ │ │ │ +
99 face0IsTri = (vertsPerFace[0] == 3);
│ │ │ │ +
100 face1IsTri = (vertsPerFace[1] == 3);
│ │ │ │ +
101 useTriangleOption = face0IsTri || face1IsTri;
│ │ │ │ +
102 } else {
│ │ │ │ +
103 useTriangleOption = false;
│ │ │ │ +
104 }
│ │ │ │ +
105 }
│ │ │ │ +
106
│ │ │ │ +
107 if (! useTriangleOption) {
│ │ │ │ +
108 mask.VertexWeight(0) = 0.25f;
│ │ │ │ +
109 mask.VertexWeight(1) = 0.25f;
│ │ │ │
110
│ │ │ │ -
111//
│ │ │ │ -
112// Limit masks for tangents -- these are ambiguous around all vertices. Provide
│ │ │ │ -
113// the tangents based on the incident edges of the first face.
│ │ │ │ -
114//
│ │ │ │ -
115template <>
│ │ │ │ -
116template <typename VERTEX, typename MASK>
│ │ │ │ -
117inline void
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
119 MASK& tan1Mask, MASK& tan2Mask) const {
│ │ │ │ -
120
│ │ │ │ -
121 tan1Mask.SetNumVertexWeights(1);
│ │ │ │ -
122 tan1Mask.SetNumEdgeWeights(2);
│ │ │ │ -
123 tan1Mask.SetNumFaceWeights(0);
│ │ │ │ -
124 tan1Mask.SetFaceWeightsForFaceCenters(false);
│ │ │ │ +
111 if (faceCount == 2) {
│ │ │ │ +
112 mask.FaceWeight(0) = 0.25f;
│ │ │ │ +
113 mask.FaceWeight(1) = 0.25f;
│ │ │ │ +
114 } else {
│ │ │ │ +
115 Weight fWeight = 0.5f / (Weight)faceCount;
│ │ │ │ +
116 for (int i = 0; i < faceCount; ++i) {
│ │ │ │ +
117 mask.FaceWeight(i) = fWeight;
│ │ │ │ +
118 }
│ │ │ │ +
119 }
│ │ │ │ +
120 } else {
│ │ │ │ +
121 //
│ │ │ │ +
122 // This mimics the implementation in Hbr in terms of order of operations.
│ │ │ │ +
123 //
│ │ │ │ +
124 const Weight CATMARK_SMOOTH_TRI_EDGE_WEIGHT = (Weight) 0.470;
│ │ │ │
125
│ │ │ │ -
126 tan2Mask.SetNumVertexWeights(1);
│ │ │ │ -
127 tan2Mask.SetNumEdgeWeights(2);
│ │ │ │ -
128 tan2Mask.SetNumFaceWeights(0);
│ │ │ │ -
129 tan2Mask.SetFaceWeightsForFaceCenters(false);
│ │ │ │ -
130
│ │ │ │ -
131 tan1Mask.VertexWeight(0) = -1.0f;
│ │ │ │ -
132 tan1Mask.EdgeWeight(0) = 1.0f;
│ │ │ │ -
133 tan1Mask.EdgeWeight(1) = 0.0f;
│ │ │ │ +
126 Weight f0Weight = face0IsTri ? CATMARK_SMOOTH_TRI_EDGE_WEIGHT : 0.25f;
│ │ │ │ +
127 Weight f1Weight = face1IsTri ? CATMARK_SMOOTH_TRI_EDGE_WEIGHT : 0.25f;
│ │ │ │ +
128
│ │ │ │ +
129 Weight fWeight = 0.5f * (f0Weight + f1Weight);
│ │ │ │ +
130 Weight vWeight = 0.5f * (1.0f - 2.0f * fWeight);
│ │ │ │ +
131
│ │ │ │ +
132 mask.VertexWeight(0) = vWeight;
│ │ │ │ +
133 mask.VertexWeight(1) = vWeight;
│ │ │ │
134
│ │ │ │ -
135 tan2Mask.VertexWeight(0) = -1.0f;
│ │ │ │ -
136 tan2Mask.EdgeWeight(0) = 0.0f;
│ │ │ │ -
137 tan2Mask.EdgeWeight(1) = 1.0f;
│ │ │ │ +
135 mask.FaceWeight(0) = fWeight;
│ │ │ │ +
136 mask.FaceWeight(1) = fWeight;
│ │ │ │ +
137 }
│ │ │ │
138}
│ │ │ │
│ │ │ │
139
│ │ │ │ -
140template <>
│ │ │ │ -
141template <typename VERTEX, typename MASK>
│ │ │ │ -
142inline void
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
144 MASK& tan1Mask, MASK& tan2Mask, int const /* creaseEnds */[2]) const {
│ │ │ │ -
145
│ │ │ │ -
146 assignCornerLimitTangentMasks(vertex, tan1Mask, tan2Mask);
│ │ │ │ -
147}
│ │ │ │ -
│ │ │ │ -
148
│ │ │ │ -
149template <>
│ │ │ │ -
150template <typename VERTEX, typename MASK>
│ │ │ │ -
151inline void
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
153 MASK& tan1Mask, MASK& tan2Mask) const {
│ │ │ │ -
154
│ │ │ │ -
155 assignCornerLimitTangentMasks(vertex, tan1Mask, tan2Mask);
│ │ │ │ -
156}
│ │ │ │ -
│ │ │ │ -
157
│ │ │ │ -
158} // end namespace sdc
│ │ │ │ -
│ │ │ │ -
159
│ │ │ │ -
160} // end namespace OPENSUBDIV_VERSION
│ │ │ │ -
161using namespace OPENSUBDIV_VERSION;
│ │ │ │ -
162} // end namespace OpenSubdiv
│ │ │ │ -
163
│ │ │ │ -
164#endif /* OPENSUBDIV3_SDC_BILINEAR_SCHEME_H */
│ │ │ │ +
140
│ │ │ │ +
141//
│ │ │ │ +
142// Masks for vertex-vertices: the hard Corner mask does not need to be specialized
│ │ │ │ +
143// (simply the vertex itself), leaving the Crease and Smooth cases (Dart is smooth):
│ │ │ │ +
144//
│ │ │ │ +
145template <>
│ │ │ │ +
146template <typename VERTEX, typename MASK>
│ │ │ │ +
147inline void
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
149 int const creaseEnds[2]) const {
│ │ │ │ +
150 typedef typename MASK::Weight Weight;
│ │ │ │ +
151
│ │ │ │ +
152 int valence = vertex.GetNumEdges();
│ │ │ │ +
153
│ │ │ │ +
154 mask.SetNumVertexWeights(1);
│ │ │ │ +
155 mask.SetNumEdgeWeights(valence);
│ │ │ │ +
156 mask.SetNumFaceWeights(0);
│ │ │ │ +
157 mask.SetFaceWeightsForFaceCenters(false);
│ │ │ │ +
158
│ │ │ │ +
159 Weight vWeight = 0.75f;
│ │ │ │ +
160 Weight eWeight = 0.125f;
│ │ │ │ +
161
│ │ │ │ +
162 mask.VertexWeight(0) = vWeight;
│ │ │ │ +
163 for (int i = 0; i < valence; ++i) {
│ │ │ │ +
164 mask.EdgeWeight(i) = 0.0f;
│ │ │ │ +
165 }
│ │ │ │ +
166 mask.EdgeWeight(creaseEnds[0]) = eWeight;
│ │ │ │ +
167 mask.EdgeWeight(creaseEnds[1]) = eWeight;
│ │ │ │ +
168}
│ │ │ │ +
│ │ │ │ +
169
│ │ │ │ +
170template <>
│ │ │ │ +
171template <typename VERTEX, typename MASK>
│ │ │ │ +
172inline void
│ │ │ │ +
│ │ │ │ +
173Scheme<SCHEME_CATMARK>::assignSmoothMaskForVertex(VERTEX const& vertex, MASK& mask) const {
│ │ │ │ +
174
│ │ │ │ +
175 typedef typename MASK::Weight Weight;
│ │ │ │ +
176
│ │ │ │ +
177 //
│ │ │ │ +
178 // A Smooth vertex must be manifold and interior -- manifold boundary vertices will be
│ │ │ │ +
179 // Creases and non-manifold vertices of any kind will be Corners or Creases. If smooth
│ │ │ │ +
180 // rules for non-manifold vertices are ever defined, this will need adjusting:
│ │ │ │ +
181 //
│ │ │ │ +
182 assert(vertex.GetNumFaces() == vertex.GetNumEdges());
│ │ │ │ +
183
│ │ │ │ +
184 int valence = vertex.GetNumFaces();
│ │ │ │ +
185
│ │ │ │ +
186 mask.SetNumVertexWeights(1);
│ │ │ │ +
187 mask.SetNumEdgeWeights(valence);
│ │ │ │ +
188 mask.SetNumFaceWeights(valence);
│ │ │ │ +
189 mask.SetFaceWeightsForFaceCenters(true);
│ │ │ │ +
190
│ │ │ │ +
191 Weight vWeight = (Weight)(valence - 2) / (Weight)valence;
│ │ │ │ +
192 Weight fWeight = 1.0f / (Weight)(valence * valence);
│ │ │ │ +
193 Weight eWeight = fWeight;
│ │ │ │ +
194
│ │ │ │ +
195 mask.VertexWeight(0) = vWeight;
│ │ │ │ +
196 for (int i = 0; i < valence; ++i) {
│ │ │ │ +
197 mask.EdgeWeight(i) = eWeight;
│ │ │ │ +
198 mask.FaceWeight(i) = fWeight;
│ │ │ │ +
199 }
│ │ │ │ +
200}
│ │ │ │ +
│ │ │ │ +
201
│ │ │ │ +
202//
│ │ │ │ +
203// Limit masks for position:
│ │ │ │ +
204//
│ │ │ │ +
205template <>
│ │ │ │ +
206template <typename VERTEX, typename MASK>
│ │ │ │ +
207inline void
│ │ │ │ +
│ │ │ │ +
208Scheme<SCHEME_CATMARK>::assignCornerLimitMask(VERTEX const& /* vertex */, MASK& posMask) const {
│ │ │ │ +
209
│ │ │ │ +
210 posMask.SetNumVertexWeights(1);
│ │ │ │ +
211 posMask.SetNumEdgeWeights(0);
│ │ │ │ +
212 posMask.SetNumFaceWeights(0);
│ │ │ │ +
213 posMask.SetFaceWeightsForFaceCenters(false);
│ │ │ │ +
214
│ │ │ │ +
215 posMask.VertexWeight(0) = 1.0f;
│ │ │ │ +
216}
│ │ │ │ +
│ │ │ │ +
217
│ │ │ │ +
218template <>
│ │ │ │ +
219template <typename VERTEX, typename MASK>
│ │ │ │ +
220inline void
│ │ │ │ +
│ │ │ │ +
221Scheme<SCHEME_CATMARK>::assignCreaseLimitMask(VERTEX const& vertex, MASK& posMask,
│ │ │ │ +
222 int const creaseEnds[2]) const {
│ │ │ │ +
223
│ │ │ │ +
224 typedef typename MASK::Weight Weight;
│ │ │ │ +
225
│ │ │ │ +
226 int valence = vertex.GetNumEdges();
│ │ │ │ +
227
│ │ │ │ +
228 posMask.SetNumVertexWeights(1);
│ │ │ │ +
229 posMask.SetNumEdgeWeights(valence);
│ │ │ │ +
230 posMask.SetNumFaceWeights(0);
│ │ │ │ +
231 posMask.SetFaceWeightsForFaceCenters(false);
│ │ │ │ +
232
│ │ │ │ +
233 Weight vWeight = (Weight)(2.0 / 3.0);
│ │ │ │ +
234 Weight eWeight = (Weight)(1.0 / 6.0);
│ │ │ │ +
235
│ │ │ │ +
236 posMask.VertexWeight(0) = vWeight;
│ │ │ │ +
237 for (int i = 0; i < valence; ++i) {
│ │ │ │ +
238 posMask.EdgeWeight(i) = 0.0f;
│ │ │ │ +
239 }
│ │ │ │ +
240 posMask.EdgeWeight(creaseEnds[0]) = eWeight;
│ │ │ │ +
241 posMask.EdgeWeight(creaseEnds[1]) = eWeight;
│ │ │ │ +
242}
│ │ │ │ +
│ │ │ │ +
243
│ │ │ │ +
244template <>
│ │ │ │ +
245template <typename VERTEX, typename MASK>
│ │ │ │ +
246inline void
│ │ │ │ +
│ │ │ │ +
247Scheme<SCHEME_CATMARK>::assignSmoothLimitMask(VERTEX const& vertex, MASK& posMask) const {
│ │ │ │ +
248
│ │ │ │ +
249 typedef typename MASK::Weight Weight;
│ │ │ │ +
250
│ │ │ │ +
251 int valence = vertex.GetNumFaces();
│ │ │ │ +
252 if (valence == 2) {
│ │ │ │ +
253 assignCornerLimitMask(vertex, posMask);
│ │ │ │ +
254 return;
│ │ │ │ +
255 }
│ │ │ │ +
256
│ │ │ │ +
257 posMask.SetNumVertexWeights(1);
│ │ │ │ +
258 posMask.SetNumEdgeWeights(valence);
│ │ │ │ +
259 posMask.SetNumFaceWeights(valence);
│ │ │ │ +
260 posMask.SetFaceWeightsForFaceCenters(false);
│ │ │ │ +
261
│ │ │ │ +
262 // Specialize for the regular case:
│ │ │ │ +
263 if (valence == 4) {
│ │ │ │ +
264 Weight fWeight = (Weight)(1.0 / 36.0);
│ │ │ │ +
265 Weight eWeight = (Weight)(1.0 / 9.0);
│ │ │ │ +
266 Weight vWeight = (Weight)(4.0 / 9.0);
│ │ │ │ +
267
│ │ │ │ +
268 posMask.VertexWeight(0) = vWeight;
│ │ │ │ +
269
│ │ │ │ +
270 posMask.EdgeWeight(0) = eWeight;
│ │ │ │ +
271 posMask.EdgeWeight(1) = eWeight;
│ │ │ │ +
272 posMask.EdgeWeight(2) = eWeight;
│ │ │ │ +
273 posMask.EdgeWeight(3) = eWeight;
│ │ │ │ +
274
│ │ │ │ +
275 posMask.FaceWeight(0) = fWeight;
│ │ │ │ +
276 posMask.FaceWeight(1) = fWeight;
│ │ │ │ +
277 posMask.FaceWeight(2) = fWeight;
│ │ │ │ +
278 posMask.FaceWeight(3) = fWeight;
│ │ │ │ +
279 } else {
│ │ │ │ +
280 Weight Valence = (Weight) valence;
│ │ │ │ +
281
│ │ │ │ +
282 Weight fWeight = 1.0f / (Valence * (Valence + 5.0f));
│ │ │ │ +
283 Weight eWeight = 4.0f * fWeight;
│ │ │ │ +
284 Weight vWeight = 1.0f - Valence * (eWeight + fWeight);
│ │ │ │ +
285
│ │ │ │ +
286 posMask.VertexWeight(0) = vWeight;
│ │ │ │ +
287 for (int i = 0; i < valence; ++i) {
│ │ │ │ +
288 posMask.EdgeWeight(i) = eWeight;
│ │ │ │ +
289 posMask.FaceWeight(i) = fWeight;
│ │ │ │ +
290 }
│ │ │ │ +
291 }
│ │ │ │ +
292}
│ │ │ │ +
│ │ │ │ +
293
│ │ │ │ +
294//
│ │ │ │ +
295// Limit masks for tangents -- these are stubs for now, or have a temporary
│ │ │ │ +
296// implementation
│ │ │ │ +
297//
│ │ │ │ +
298template <>
│ │ │ │ +
299template <typename VERTEX, typename MASK>
│ │ │ │ +
300inline void
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
302 MASK& tan1Mask, MASK& tan2Mask) const {
│ │ │ │ +
303
│ │ │ │ +
304 int valence = vertex.GetNumEdges();
│ │ │ │ +
305
│ │ │ │ +
306 tan1Mask.SetNumVertexWeights(1);
│ │ │ │ +
307 tan1Mask.SetNumEdgeWeights(valence);
│ │ │ │ +
308 tan1Mask.SetNumFaceWeights(0);
│ │ │ │ +
309 tan1Mask.SetFaceWeightsForFaceCenters(false);
│ │ │ │ +
310
│ │ │ │ +
311 tan2Mask.SetNumVertexWeights(1);
│ │ │ │ +
312 tan2Mask.SetNumEdgeWeights(valence);
│ │ │ │ +
313 tan2Mask.SetNumFaceWeights(0);
│ │ │ │ +
314 tan2Mask.SetFaceWeightsForFaceCenters(false);
│ │ │ │ +
315
│ │ │ │ +
316 // Should be at least 2 edges -- be sure to clear weights for any more:
│ │ │ │ +
317 tan1Mask.VertexWeight(0) = -1.0f;
│ │ │ │ +
318 tan1Mask.EdgeWeight(0) = 1.0f;
│ │ │ │ +
319 tan1Mask.EdgeWeight(1) = 0.0f;
│ │ │ │ +
320
│ │ │ │ +
321 tan2Mask.VertexWeight(0) = -1.0f;
│ │ │ │ +
322 tan2Mask.EdgeWeight(0) = 0.0f;
│ │ │ │ +
323 tan2Mask.EdgeWeight(1) = 1.0f;
│ │ │ │ +
324
│ │ │ │ +
325 for (int i = 2; i < valence; ++i) {
│ │ │ │ +
326 tan1Mask.EdgeWeight(i) = 0.0f;
│ │ │ │ +
327 tan2Mask.EdgeWeight(i) = 0.0f;
│ │ │ │ +
328 }
│ │ │ │ +
329}
│ │ │ │ +
│ │ │ │ +
330
│ │ │ │ +
331template <>
│ │ │ │ +
332template <typename VERTEX, typename MASK>
│ │ │ │ +
333inline void
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
335 MASK& tan1Mask, MASK& tan2Mask, int const creaseEnds[2]) const {
│ │ │ │ +
336
│ │ │ │ +
337 typedef typename MASK::Weight Weight;
│ │ │ │ +
338
│ │ │ │ +
339 //
│ │ │ │ +
340 // First, the tangent along the crease:
│ │ │ │ +
341 // The first crease edge is considered the "leading" edge of the span
│ │ │ │ +
342 // of surface for which we are evaluating tangents and the second edge the
│ │ │ │ +
343 // "trailing edge". By convention, the tangent along the crease is oriented
│ │ │ │ +
344 // in the direction of the leading edge.
│ │ │ │ +
345 //
│ │ │ │ +
346 int numEdges = vertex.GetNumEdges();
│ │ │ │ +
347 int numFaces = vertex.GetNumFaces();
│ │ │ │ +
348
│ │ │ │ +
349 tan1Mask.SetNumVertexWeights(1);
│ │ │ │ +
350 tan1Mask.SetNumEdgeWeights(numEdges);
│ │ │ │ +
351 tan1Mask.SetNumFaceWeights(numFaces);
│ │ │ │ +
352 tan1Mask.SetFaceWeightsForFaceCenters(false);
│ │ │ │ +
353
│ │ │ │ +
354 tan1Mask.VertexWeight(0) = 0.0f;
│ │ │ │ +
355 for (int i = 0; i < numEdges; ++i) {
│ │ │ │ +
356 tan1Mask.EdgeWeight(i) = 0.0f;
│ │ │ │ +
357 }
│ │ │ │ +
358 for (int i = 0; i < numFaces; ++i) {
│ │ │ │ +
359 tan1Mask.FaceWeight(i) = 0.0f;
│ │ │ │ +
360 }
│ │ │ │ +
361
│ │ │ │ +
362 tan1Mask.EdgeWeight(creaseEnds[0]) = 0.5f;
│ │ │ │ +
363 tan1Mask.EdgeWeight(creaseEnds[1]) = -0.5f;
│ │ │ │ +
364
│ │ │ │ +
365 //
│ │ │ │ +
366 // Second, the tangent across the interior faces:
│ │ │ │ +
367 // Note this is ambiguous for an interior vertex. We currently return
│ │ │ │ +
368 // the tangent for the surface in the counter-clockwise span between the
│ │ │ │ +
369 // leading and trailing edges that form the crease. Given the expected
│ │ │ │ +
370 // computation of a surface normal as Tan1 X Tan2, this tangent should be
│ │ │ │ +
371 // oriented "inward" from the crease/boundary -- across the surface rather
│ │ │ │ +
372 // than outward and away from it.
│ │ │ │ +
373 //
│ │ │ │ +
374 tan2Mask.SetNumVertexWeights(1);
│ │ │ │ +
375 tan2Mask.SetNumEdgeWeights(numEdges);
│ │ │ │ +
376 tan2Mask.SetNumFaceWeights(numFaces);
│ │ │ │ +
377 tan2Mask.SetFaceWeightsForFaceCenters(false);
│ │ │ │ +
378
│ │ │ │ +
379 // Prepend weights of 0 preceding the crease:
│ │ │ │ +
380 for (int i = 0; i < creaseEnds[0]; ++i) {
│ │ │ │ +
381 tan2Mask.EdgeWeight(i) = 0.0f;
│ │ │ │ +
382 tan2Mask.FaceWeight(i) = 0.0f;
│ │ │ │ +
383 }
│ │ │ │ +
384
│ │ │ │ +
385 // Assign weights to crease edge and interior points:
│ │ │ │ +
386 int interiorEdgeCount = creaseEnds[1] - creaseEnds[0] - 1;
│ │ │ │ +
387 if (interiorEdgeCount == 1) {
│ │ │ │ +
388 // The regular case -- uniform B-spline cross-tangent:
│ │ │ │ +
389
│ │ │ │ +
390 tan2Mask.VertexWeight(0) = (Weight)(-4.0 / 6.0);
│ │ │ │ +
391
│ │ │ │ +
392 tan2Mask.EdgeWeight(creaseEnds[0]) = (Weight)(-1.0 / 6.0);
│ │ │ │ +
393 tan2Mask.EdgeWeight(creaseEnds[0] + 1) = (Weight)( 4.0 / 6.0);
│ │ │ │ +
394 tan2Mask.EdgeWeight(creaseEnds[1]) = (Weight)(-1.0 / 6.0);
│ │ │ │ +
395
│ │ │ │ +
396 tan2Mask.FaceWeight(creaseEnds[0]) = (Weight)(1.0 / 6.0);
│ │ │ │ +
397 tan2Mask.FaceWeight(creaseEnds[0] + 1) = (Weight)(1.0 / 6.0);
│ │ │ │ +
398 } else if (interiorEdgeCount > 1) {
│ │ │ │ +
399 // The irregular case -- formulae from Biermann et al:
│ │ │ │ +
400
│ │ │ │ +
401 double k = (double) (interiorEdgeCount + 1);
│ │ │ │ +
402 double theta = M_PI / k;
│ │ │ │ +
403
│ │ │ │ +
404 double cosTheta = std::cos(theta);
│ │ │ │ +
405 double sinTheta = std::sin(theta);
│ │ │ │ +
406
│ │ │ │ +
407 // Loop/Schaefer use a different divisor here (3*k + cos(theta)):
│ │ │ │ +
408 double commonDenom = 1.0f / (k * (3.0f + cosTheta));
│ │ │ │ +
409 double R = (cosTheta + 1.0f) / sinTheta;
│ │ │ │ +
410
│ │ │ │ +
411 double vertexWeight = 4.0f * R * (cosTheta - 1.0f);
│ │ │ │ +
412 double creaseWeight = -R * (1.0f + 2.0f * cosTheta);
│ │ │ │ +
413
│ │ │ │ +
414 tan2Mask.VertexWeight(0) = (Weight) (vertexWeight * commonDenom);
│ │ │ │ +
415
│ │ │ │ +
416 tan2Mask.EdgeWeight(creaseEnds[0]) = (Weight) (creaseWeight * commonDenom);
│ │ │ │ +
417 tan2Mask.EdgeWeight(creaseEnds[1]) = (Weight) (creaseWeight * commonDenom);
│ │ │ │ +
418
│ │ │ │ +
419 tan2Mask.FaceWeight(creaseEnds[0]) = (Weight) (sinTheta * commonDenom);
│ │ │ │ +
420
│ │ │ │ +
421 double sinThetaI = 0.0f;
│ │ │ │ +
422 double sinThetaIplus1 = sinTheta;
│ │ │ │ +
423 for (int i = 1; i < k; ++i) {
│ │ │ │ +
424 sinThetaI = sinThetaIplus1;
│ │ │ │ +
425 sinThetaIplus1 = std::sin((i+1)*theta);
│ │ │ │ +
426
│ │ │ │ +
427 tan2Mask.EdgeWeight(creaseEnds[0] + i) = (Weight) ((4.0f * sinThetaI) * commonDenom);
│ │ │ │ +
428 tan2Mask.FaceWeight(creaseEnds[0] + i) = (Weight) ((sinThetaI + sinThetaIplus1) * commonDenom);
│ │ │ │ +
429 }
│ │ │ │ +
430 } else {
│ │ │ │ +
431 // Special case for a single face -- simple average of boundary edges:
│ │ │ │ +
432
│ │ │ │ +
433 tan2Mask.VertexWeight(0) = -6.0f;
│ │ │ │ +
434
│ │ │ │ +
435 tan2Mask.EdgeWeight(creaseEnds[0]) = 3.0f;
│ │ │ │ +
436 tan2Mask.EdgeWeight(creaseEnds[1]) = 3.0f;
│ │ │ │ +
437
│ │ │ │ +
438 tan2Mask.FaceWeight(creaseEnds[0]) = 0.0f;
│ │ │ │ +
439 }
│ │ │ │ +
440
│ │ │ │ +
441 // Append weights of 0 following the crease:
│ │ │ │ +
442 for (int i = creaseEnds[1]; i < numFaces; ++i) {
│ │ │ │ +
443 tan2Mask.FaceWeight(i) = 0.0f;
│ │ │ │ +
444 }
│ │ │ │ +
445 for (int i = creaseEnds[1] + 1; i < numEdges; ++i) {
│ │ │ │ +
446 tan2Mask.EdgeWeight(i) = 0.0f;
│ │ │ │ +
447 }
│ │ │ │ +
448}
│ │ │ │ +
│ │ │ │ +
449
│ │ │ │ +
450template <>
│ │ │ │ +
451template <typename VERTEX, typename MASK>
│ │ │ │ +
452inline void
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
454 MASK& tan1Mask, MASK& tan2Mask) const {
│ │ │ │ +
455
│ │ │ │ +
456 typedef typename MASK::Weight Weight;
│ │ │ │ +
457
│ │ │ │ +
458 int valence = vertex.GetNumFaces();
│ │ │ │ +
459 if (valence == 2) {
│ │ │ │ +
460 assignCornerLimitTangentMasks(vertex, tan1Mask, tan2Mask);
│ │ │ │ +
461 return;
│ │ │ │ +
462 }
│ │ │ │ +
463
│ │ │ │ +
464 // Compute tan1 initially -- tan2 is simply a rotation:
│ │ │ │ +
465 tan1Mask.SetNumVertexWeights(1);
│ │ │ │ +
466 tan1Mask.SetNumEdgeWeights(valence);
│ │ │ │ +
467 tan1Mask.SetNumFaceWeights(valence);
│ │ │ │ +
468 tan1Mask.SetFaceWeightsForFaceCenters(false);
│ │ │ │ +
469
│ │ │ │ +
470 tan1Mask.VertexWeight(0) = 0.0f;
│ │ │ │ +
471
│ │ │ │ +
472 if (valence == 4) {
│ │ │ │ +
473 tan1Mask.EdgeWeight(0) = 4.0f;
│ │ │ │ +
474 tan1Mask.EdgeWeight(1) = 0.0f;
│ │ │ │ +
475 tan1Mask.EdgeWeight(2) = -4.0f;
│ │ │ │ +
476 tan1Mask.EdgeWeight(3) = 0.0f;
│ │ │ │ +
477
│ │ │ │ +
478 tan1Mask.FaceWeight(0) = 1.0f;
│ │ │ │ +
479 tan1Mask.FaceWeight(1) = -1.0f;
│ │ │ │ +
480 tan1Mask.FaceWeight(2) = -1.0f;
│ │ │ │ +
481 tan1Mask.FaceWeight(3) = 1.0f;
│ │ │ │ +
482 } else {
│ │ │ │ +
483 double theta = 2.0f * M_PI / (double)valence;
│ │ │ │ +
484
│ │ │ │ +
485 double cosTheta = std::cos(theta);
│ │ │ │ +
486 double cosHalfTheta = std::cos(theta * 0.5f);
│ │ │ │ +
487
│ │ │ │ +
488 double lambda = (5.0 / 16.0) + (1.0 / 16.0) *
│ │ │ │ +
489 (cosTheta + cosHalfTheta * std::sqrt(2.0f * (9.0f + cosTheta)));
│ │ │ │ +
490
│ │ │ │ +
491 double edgeWeightScale = 4.0f;
│ │ │ │ +
492 double faceWeightScale = 1.0f / (4.0f * lambda - 1.0f);
│ │ │ │ +
493
│ │ │ │ +
494 for (int i = 0; i < valence; ++i) {
│ │ │ │ +
495 double cosThetaI = std::cos( i * theta);
│ │ │ │ +
496 double cosThetaIplus1 = std::cos((i+1)* theta);
│ │ │ │ +
497
│ │ │ │ +
498 tan1Mask.EdgeWeight(i) = (Weight) (edgeWeightScale * cosThetaI);
│ │ │ │ +
499 tan1Mask.FaceWeight(i) = (Weight) (faceWeightScale * (cosThetaI + cosThetaIplus1));
│ │ │ │ +
500 }
│ │ │ │ +
501 }
│ │ │ │ +
502
│ │ │ │ +
503 // Now rotate/copy tan1 weights to tan2:
│ │ │ │ +
504 tan2Mask.SetNumVertexWeights(1);
│ │ │ │ +
505 tan2Mask.SetNumEdgeWeights(valence);
│ │ │ │ +
506 tan2Mask.SetNumFaceWeights(valence);
│ │ │ │ +
507 tan2Mask.SetFaceWeightsForFaceCenters(false);
│ │ │ │ +
508
│ │ │ │ +
509 tan2Mask.VertexWeight(0) = 0.0f;
│ │ │ │ +
510 if (valence == 4) {
│ │ │ │ +
511 tan2Mask.EdgeWeight(0) = 0.0f;
│ │ │ │ +
512 tan2Mask.EdgeWeight(1) = 4.0f;
│ │ │ │ +
513 tan2Mask.EdgeWeight(2) = 0.0f;
│ │ │ │ +
514 tan2Mask.EdgeWeight(3) = -4.0f;
│ │ │ │ +
515
│ │ │ │ +
516 tan2Mask.FaceWeight(0) = 1.0f;
│ │ │ │ +
517 tan2Mask.FaceWeight(1) = 1.0f;
│ │ │ │ +
518 tan2Mask.FaceWeight(2) = -1.0f;
│ │ │ │ +
519 tan2Mask.FaceWeight(3) = -1.0f;
│ │ │ │ +
520 } else {
│ │ │ │ +
521 tan2Mask.EdgeWeight(0) = tan1Mask.EdgeWeight(valence-1);
│ │ │ │ +
522 tan2Mask.FaceWeight(0) = tan1Mask.FaceWeight(valence-1);
│ │ │ │ +
523 for (int i = 1; i < valence; ++i) {
│ │ │ │ +
524 tan2Mask.EdgeWeight(i) = tan1Mask.EdgeWeight(i-1);
│ │ │ │ +
525 tan2Mask.FaceWeight(i) = tan1Mask.FaceWeight(i-1);
│ │ │ │ +
526 }
│ │ │ │ +
527 }
│ │ │ │ +
528}
│ │ │ │ +
│ │ │ │ +
529
│ │ │ │ +
530} // end namespace sdc
│ │ │ │ +
531
│ │ │ │ +
532} // end namespace OPENSUBDIV_VERSION
│ │ │ │ +
533using namespace OPENSUBDIV_VERSION;
│ │ │ │ +
534} // end namespace OpenSubdiv
│ │ │ │ +
535
│ │ │ │ +
536#endif /* OPENSUBDIV3_SDC_CATMARK_SCHEME_H */
│ │ │ │ │ │ │ │
Split
Enumerated type for all face splitting schemes.
Definition types.h:47
│ │ │ │
@ SPLIT_TO_QUADS
Used by Catmark and Bilinear.
Definition types.h:48
│ │ │ │ - │ │ │ │ +
@ TRI_SUB_SMOOTH
"smooth triangle" weights (Catmark scheme only)
Definition options.h:74
│ │ │ │ +
void assignSmoothMaskForEdge(EDGE const &edge, MASK &mask) const
│ │ │ │ │ │ │ │ -
void ComputeVertexVertexMask(VERTEX const &vertexNeighborhood, MASK &vertexVertexMask, Crease::Rule parentRule=Crease::RULE_UNKNOWN, Crease::Rule childRule=Crease::RULE_UNKNOWN) const
Vertex-vertex masks If known, a single Rule or pair of Rules can be specified (indicating a crease tr...
Definition scheme.h:512
│ │ │ │ +
void assignCreaseMaskForVertex(VERTEX const &edge, MASK &mask, int const creaseEnds[2]) const
│ │ │ │
void assignCreaseLimitTangentMasks(VERTEX const &vertex, MASK &tan1, MASK &tan2, int const creaseEnds[2]) const
│ │ │ │ │ │ │ │ -
void ComputeEdgeVertexMask(EDGE const &edgeNeighborhood, MASK &edgeVertexMask, Crease::Rule parentRule=Crease::RULE_UNKNOWN, Crease::Rule childRule=Crease::RULE_UNKNOWN) const
Edge-vertex masks If known, the Rule for the edge and/or the derived vertex can be specified to accel...
Definition scheme.h:392
│ │ │ │
void assignSmoothLimitMask(VERTEX const &vertex, MASK &pos) const
│ │ │ │ │ │ │ │
void assignCreaseLimitMask(VERTEX const &vertex, MASK &pos, int const creaseEnds[2]) const
│ │ │ │ +
void assignSmoothMaskForVertex(VERTEX const &edge, MASK &mask) const
│ │ │ │ │ │ │ │
void assignSmoothLimitTangentMasks(VERTEX const &vertex, MASK &tan1, MASK &tan2) const
│ │ │ │
void assignCornerLimitMask(VERTEX const &vertex, MASK &pos) const
│ │ │ │
void assignCornerLimitTangentMasks(VERTEX const &vertex, MASK &tan1, MASK &tan2) const
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,12 +1,12 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ -bilinearScheme.h │ │ │ │ │ +catmarkScheme.h │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// │ │ │ │ │ 2// Copyright 2014 DreamWorks Animation LLC. │ │ │ │ │ 3// │ │ │ │ │ 4// Licensed under the Apache License, Version 2.0 (the "Apache License") │ │ │ │ │ 5// with the following modification; you may not use this file except in │ │ │ │ │ 6// compliance with the Apache License and the following modification to it: │ │ │ │ │ @@ -23,211 +23,592 @@ │ │ │ │ │ 17// │ │ │ │ │ 18// Unless required by applicable law or agreed to in writing, software │ │ │ │ │ 19// distributed under the Apache License with the above modification is │ │ │ │ │ 20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY │ │ │ │ │ 21// KIND, either express or implied. See the Apache License for the specific │ │ │ │ │ 22// language governing permissions and limitations under the Apache License. │ │ │ │ │ 23// │ │ │ │ │ -24#ifndef OPENSUBDIV3_SDC_BILINEAR_SCHEME_H │ │ │ │ │ -25#define OPENSUBDIV3_SDC_BILINEAR_SCHEME_H │ │ │ │ │ +24#ifndef OPENSUBDIV3_SDC_CATMARK_SCHEME_H │ │ │ │ │ +25#define OPENSUBDIV3_SDC_CATMARK_SCHEME_H │ │ │ │ │ 26 │ │ │ │ │ 27#include "../version.h" │ │ │ │ │ 28 │ │ │ │ │ 29#include "../sdc/scheme.h" │ │ │ │ │ 30 │ │ │ │ │ -31namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ -32namespace OPENSUBDIV_VERSION { │ │ │ │ │ +31#include │ │ │ │ │ +32#include │ │ │ │ │ 33 │ │ │ │ │ -_3_4namespace Sdc { │ │ │ │ │ -35 │ │ │ │ │ -36// │ │ │ │ │ -37// Specializations for Scheme: │ │ │ │ │ -38// │ │ │ │ │ -39 │ │ │ │ │ -40// │ │ │ │ │ -41// Bilinear traits: │ │ │ │ │ -42// │ │ │ │ │ -43template <> │ │ │ │ │ -_4_4inline _S_p_l_i_t _S_c_h_e_m_e_<_S_C_H_E_M_E___B_I_L_I_N_E_A_R_>_:_:_G_e_t_T_o_p_o_l_o_g_i_c_a_l_S_p_l_i_t_T_y_p_e() { return │ │ │ │ │ -_S_P_L_I_T___T_O___Q_U_A_D_S; } │ │ │ │ │ -45 │ │ │ │ │ +34namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ +35namespace OPENSUBDIV_VERSION { │ │ │ │ │ +36 │ │ │ │ │ +37namespace Sdc { │ │ │ │ │ +38 │ │ │ │ │ +39// │ │ │ │ │ +40// Specializations for Scheme: │ │ │ │ │ +41// │ │ │ │ │ +42 │ │ │ │ │ +43// │ │ │ │ │ +44// Catmark traits: │ │ │ │ │ +45// │ │ │ │ │ 46template <> │ │ │ │ │ -_4_7inline int _S_c_h_e_m_e_<_S_C_H_E_M_E___B_I_L_I_N_E_A_R_>_:_:_G_e_t_R_e_g_u_l_a_r_F_a_c_e_S_i_z_e() { return 4; } │ │ │ │ │ +_4_7inline _S_p_l_i_t _S_c_h_e_m_e_<_S_C_H_E_M_E___C_A_T_M_A_R_K_>_:_:_G_e_t_T_o_p_o_l_o_g_i_c_a_l_S_p_l_i_t_T_y_p_e() { return │ │ │ │ │ +_S_P_L_I_T___T_O___Q_U_A_D_S; } │ │ │ │ │ 48 │ │ │ │ │ 49template <> │ │ │ │ │ -_5_0inline int _S_c_h_e_m_e_<_S_C_H_E_M_E___B_I_L_I_N_E_A_R_>_:_:_G_e_t_R_e_g_u_l_a_r_V_e_r_t_e_x_V_a_l_e_n_c_e() { return 4; } │ │ │ │ │ +_5_0inline int _S_c_h_e_m_e_<_S_C_H_E_M_E___C_A_T_M_A_R_K_>_:_:_G_e_t_R_e_g_u_l_a_r_F_a_c_e_S_i_z_e() { return 4; } │ │ │ │ │ 51 │ │ │ │ │ 52template <> │ │ │ │ │ -_5_3inline int _S_c_h_e_m_e_<_S_C_H_E_M_E___B_I_L_I_N_E_A_R_>_:_:_G_e_t_L_o_c_a_l_N_e_i_g_h_b_o_r_h_o_o_d_S_i_z_e() { return 0; } │ │ │ │ │ +_5_3inline int _S_c_h_e_m_e_<_S_C_H_E_M_E___C_A_T_M_A_R_K_>_:_:_G_e_t_R_e_g_u_l_a_r_V_e_r_t_e_x_V_a_l_e_n_c_e() { return 4; } │ │ │ │ │ 54 │ │ │ │ │ -55 │ │ │ │ │ -56// │ │ │ │ │ -57// Refinement masks: │ │ │ │ │ -58// │ │ │ │ │ -59template <> │ │ │ │ │ -60template │ │ │ │ │ -61void │ │ │ │ │ -_6_2_S_c_h_e_m_e_<_S_C_H_E_M_E___B_I_L_I_N_E_A_R_>_:_:_C_o_m_p_u_t_e_E_d_g_e_V_e_r_t_e_x_M_a_s_k(EDGE const& edge, MASK& mask, │ │ │ │ │ -63 _C_r_e_a_s_e_:_:_R_u_l_e, _C_r_e_a_s_e_:_:_R_u_l_e) const { │ │ │ │ │ -64 // This should be inline, otherwise trivially replicate it: │ │ │ │ │ -65 assignCreaseMaskForEdge(edge, mask); │ │ │ │ │ -66} │ │ │ │ │ -67 │ │ │ │ │ +55template <> │ │ │ │ │ +_5_6inline int _S_c_h_e_m_e_<_S_C_H_E_M_E___C_A_T_M_A_R_K_>_:_:_G_e_t_L_o_c_a_l_N_e_i_g_h_b_o_r_h_o_o_d_S_i_z_e() { return 1; } │ │ │ │ │ +57 │ │ │ │ │ +58 │ │ │ │ │ +59// │ │ │ │ │ +60// Masks for edge-vertices: the hard Crease mask does not need to be │ │ │ │ │ +specialized │ │ │ │ │ +61// (simply the midpoint), so all that is left is the Smooth case: │ │ │ │ │ +62// │ │ │ │ │ +63// The Smooth mask is complicated by the need to support the "triangle │ │ │ │ │ +subdivision" │ │ │ │ │ +64// option, which applies different weighting in the presence of triangles. It │ │ │ │ │ +is │ │ │ │ │ +65// up for debate as to whether this is useful or not -- we may be able to │ │ │ │ │ +deprecate │ │ │ │ │ +66// this option. │ │ │ │ │ +67// │ │ │ │ │ 68template <> │ │ │ │ │ -69template │ │ │ │ │ -70void │ │ │ │ │ -_7_1_S_c_h_e_m_e_<_S_C_H_E_M_E___B_I_L_I_N_E_A_R_>_:_:_C_o_m_p_u_t_e_V_e_r_t_e_x_V_e_r_t_e_x_M_a_s_k(VERTEX const& vertex, MASK& │ │ │ │ │ -mask, │ │ │ │ │ -72 _C_r_e_a_s_e_:_:_R_u_l_e, _C_r_e_a_s_e_:_:_R_u_l_e) const { │ │ │ │ │ -73 // This should be inline, otherwise trivially replicate it: │ │ │ │ │ -74 assignCornerMaskForVertex(vertex, mask); │ │ │ │ │ -75} │ │ │ │ │ +69template │ │ │ │ │ +70inline void │ │ │ │ │ +_7_1_S_c_h_e_m_e_<_S_C_H_E_M_E___C_A_T_M_A_R_K_>_:_:_a_s_s_i_g_n_S_m_o_o_t_h_M_a_s_k_F_o_r_E_d_g_e(EDGE const& edge, MASK& mask) │ │ │ │ │ +const { │ │ │ │ │ +72 │ │ │ │ │ +73 typedef typename MASK::Weight Weight; │ │ │ │ │ +74 │ │ │ │ │ +75 int faceCount = edge.GetNumFaces(); │ │ │ │ │ 76 │ │ │ │ │ -77 │ │ │ │ │ -78// │ │ │ │ │ -79// Limit masks for position -- the limit position of all vertices is the │ │ │ │ │ -refined vertex. │ │ │ │ │ -80// │ │ │ │ │ -81template <> │ │ │ │ │ -82template │ │ │ │ │ -83inline void │ │ │ │ │ -_8_4_S_c_h_e_m_e_<_S_C_H_E_M_E___B_I_L_I_N_E_A_R_>_:_:_a_s_s_i_g_n_C_o_r_n_e_r_L_i_m_i_t_M_a_s_k(VERTEX const& /* vertex */, │ │ │ │ │ -MASK& posMask) const { │ │ │ │ │ -85 │ │ │ │ │ -86 posMask.SetNumVertexWeights(1); │ │ │ │ │ -87 posMask.SetNumEdgeWeights(0); │ │ │ │ │ -88 posMask.SetNumFaceWeights(0); │ │ │ │ │ -89 posMask.SetFaceWeightsForFaceCenters(false); │ │ │ │ │ -90 │ │ │ │ │ -91 posMask.VertexWeight(0) = 1.0f; │ │ │ │ │ -92} │ │ │ │ │ -93 │ │ │ │ │ -94template <> │ │ │ │ │ -95template │ │ │ │ │ -96inline void │ │ │ │ │ -_9_7_S_c_h_e_m_e_<_S_C_H_E_M_E___B_I_L_I_N_E_A_R_>_:_:_a_s_s_i_g_n_C_r_e_a_s_e_L_i_m_i_t_M_a_s_k(VERTEX const& vertex, MASK& │ │ │ │ │ -posMask, │ │ │ │ │ -98 int const /* creaseEnds */[2]) const { │ │ │ │ │ -99 │ │ │ │ │ -100 assignCornerLimitMask(vertex, posMask); │ │ │ │ │ -101} │ │ │ │ │ -102 │ │ │ │ │ -103template <> │ │ │ │ │ -104template │ │ │ │ │ -105inline void │ │ │ │ │ -_1_0_6_S_c_h_e_m_e_<_S_C_H_E_M_E___B_I_L_I_N_E_A_R_>_:_:_a_s_s_i_g_n_S_m_o_o_t_h_L_i_m_i_t_M_a_s_k(VERTEX const& vertex, MASK& │ │ │ │ │ -posMask) const { │ │ │ │ │ -107 │ │ │ │ │ -108 assignCornerLimitMask(vertex, posMask); │ │ │ │ │ -109} │ │ │ │ │ +77 mask.SetNumVertexWeights(2); │ │ │ │ │ +78 mask.SetNumEdgeWeights(0); │ │ │ │ │ +79 mask.SetNumFaceWeights(faceCount); │ │ │ │ │ +80 mask.SetFaceWeightsForFaceCenters(true); │ │ │ │ │ +81 │ │ │ │ │ +82 // │ │ │ │ │ +83 // Determine if we need to inspect incident faces and apply alternate │ │ │ │ │ +weighting for │ │ │ │ │ +84 // triangles -- and if so, determine which of the two are triangles. │ │ │ │ │ +85 // │ │ │ │ │ +86 bool face0IsTri = false; │ │ │ │ │ +87 bool face1IsTri = false; │ │ │ │ │ +88 bool useTriangleOption = (_options.GetTriangleSubdivision() == _O_p_t_i_o_n_s_:_: │ │ │ │ │ +_T_R_I___S_U_B___S_M_O_O_T_H); │ │ │ │ │ +89 if (useTriangleOption) { │ │ │ │ │ +90 if (faceCount == 2) { │ │ │ │ │ +91 // │ │ │ │ │ +92 // Ideally we want to avoid this inspection when we have already subdivided │ │ │ │ │ +at │ │ │ │ │ +93 // least once -- need something in the Edge interface to help avoid this, │ │ │ │ │ +e.g. │ │ │ │ │ +94 // an IsRegular() query, the subdivision level... │ │ │ │ │ +95 // │ │ │ │ │ +96 int vertsPerFace[2]; │ │ │ │ │ +97 edge.GetNumVerticesPerFace(vertsPerFace); │ │ │ │ │ +98 │ │ │ │ │ +99 face0IsTri = (vertsPerFace[0] == 3); │ │ │ │ │ +100 face1IsTri = (vertsPerFace[1] == 3); │ │ │ │ │ +101 useTriangleOption = face0IsTri || face1IsTri; │ │ │ │ │ +102 } else { │ │ │ │ │ +103 useTriangleOption = false; │ │ │ │ │ +104 } │ │ │ │ │ +105 } │ │ │ │ │ +106 │ │ │ │ │ +107 if (! useTriangleOption) { │ │ │ │ │ +108 mask.VertexWeight(0) = 0.25f; │ │ │ │ │ +109 mask.VertexWeight(1) = 0.25f; │ │ │ │ │ 110 │ │ │ │ │ -111// │ │ │ │ │ -112// Limit masks for tangents -- these are ambiguous around all vertices. │ │ │ │ │ -Provide │ │ │ │ │ -113// the tangents based on the incident edges of the first face. │ │ │ │ │ -114// │ │ │ │ │ -115template <> │ │ │ │ │ -116template │ │ │ │ │ -117inline void │ │ │ │ │ -_1_1_8_S_c_h_e_m_e_<_S_C_H_E_M_E___B_I_L_I_N_E_A_R_>_:_:_a_s_s_i_g_n_C_o_r_n_e_r_L_i_m_i_t_T_a_n_g_e_n_t_M_a_s_k_s(VERTEX const& / │ │ │ │ │ -* vertex */, │ │ │ │ │ -119 MASK& tan1Mask, MASK& tan2Mask) const { │ │ │ │ │ -120 │ │ │ │ │ -121 tan1Mask.SetNumVertexWeights(1); │ │ │ │ │ -122 tan1Mask.SetNumEdgeWeights(2); │ │ │ │ │ -123 tan1Mask.SetNumFaceWeights(0); │ │ │ │ │ -124 tan1Mask.SetFaceWeightsForFaceCenters(false); │ │ │ │ │ +111 if (faceCount == 2) { │ │ │ │ │ +112 mask.FaceWeight(0) = 0.25f; │ │ │ │ │ +113 mask.FaceWeight(1) = 0.25f; │ │ │ │ │ +114 } else { │ │ │ │ │ +115 Weight fWeight = 0.5f / (Weight)faceCount; │ │ │ │ │ +116 for (int i = 0; i < faceCount; ++i) { │ │ │ │ │ +117 mask.FaceWeight(i) = fWeight; │ │ │ │ │ +118 } │ │ │ │ │ +119 } │ │ │ │ │ +120 } else { │ │ │ │ │ +121 // │ │ │ │ │ +122 // This mimics the implementation in Hbr in terms of order of operations. │ │ │ │ │ +123 // │ │ │ │ │ +124 const Weight CATMARK_SMOOTH_TRI_EDGE_WEIGHT = (Weight) 0.470; │ │ │ │ │ 125 │ │ │ │ │ -126 tan2Mask.SetNumVertexWeights(1); │ │ │ │ │ -127 tan2Mask.SetNumEdgeWeights(2); │ │ │ │ │ -128 tan2Mask.SetNumFaceWeights(0); │ │ │ │ │ -129 tan2Mask.SetFaceWeightsForFaceCenters(false); │ │ │ │ │ -130 │ │ │ │ │ -131 tan1Mask.VertexWeight(0) = -1.0f; │ │ │ │ │ -132 tan1Mask.EdgeWeight(0) = 1.0f; │ │ │ │ │ -133 tan1Mask.EdgeWeight(1) = 0.0f; │ │ │ │ │ +126 Weight f0Weight = face0IsTri ? CATMARK_SMOOTH_TRI_EDGE_WEIGHT : 0.25f; │ │ │ │ │ +127 Weight f1Weight = face1IsTri ? CATMARK_SMOOTH_TRI_EDGE_WEIGHT : 0.25f; │ │ │ │ │ +128 │ │ │ │ │ +129 Weight fWeight = 0.5f * (f0Weight + f1Weight); │ │ │ │ │ +130 Weight vWeight = 0.5f * (1.0f - 2.0f * fWeight); │ │ │ │ │ +131 │ │ │ │ │ +132 mask.VertexWeight(0) = vWeight; │ │ │ │ │ +133 mask.VertexWeight(1) = vWeight; │ │ │ │ │ 134 │ │ │ │ │ -135 tan2Mask.VertexWeight(0) = -1.0f; │ │ │ │ │ -136 tan2Mask.EdgeWeight(0) = 0.0f; │ │ │ │ │ -137 tan2Mask.EdgeWeight(1) = 1.0f; │ │ │ │ │ +135 mask.FaceWeight(0) = fWeight; │ │ │ │ │ +136 mask.FaceWeight(1) = fWeight; │ │ │ │ │ +137 } │ │ │ │ │ 138} │ │ │ │ │ 139 │ │ │ │ │ -140template <> │ │ │ │ │ -141template │ │ │ │ │ -142inline void │ │ │ │ │ -_1_4_3_S_c_h_e_m_e_<_S_C_H_E_M_E___B_I_L_I_N_E_A_R_>_:_:_a_s_s_i_g_n_C_r_e_a_s_e_L_i_m_i_t_T_a_n_g_e_n_t_M_a_s_k_s(VERTEX const& vertex, │ │ │ │ │ -144 MASK& tan1Mask, MASK& tan2Mask, int const /* creaseEnds */[2]) const { │ │ │ │ │ -145 │ │ │ │ │ -146 assignCornerLimitTangentMasks(vertex, tan1Mask, tan2Mask); │ │ │ │ │ -147} │ │ │ │ │ -148 │ │ │ │ │ -149template <> │ │ │ │ │ -150template │ │ │ │ │ -151inline void │ │ │ │ │ -_1_5_2_S_c_h_e_m_e_<_S_C_H_E_M_E___B_I_L_I_N_E_A_R_>_:_:_a_s_s_i_g_n_S_m_o_o_t_h_L_i_m_i_t_T_a_n_g_e_n_t_M_a_s_k_s(VERTEX const& vertex, │ │ │ │ │ -153 MASK& tan1Mask, MASK& tan2Mask) const { │ │ │ │ │ -154 │ │ │ │ │ -155 assignCornerLimitTangentMasks(vertex, tan1Mask, tan2Mask); │ │ │ │ │ -156} │ │ │ │ │ -157 │ │ │ │ │ -158} // end namespace sdc │ │ │ │ │ -159 │ │ │ │ │ -160} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ -161using namespace OPENSUBDIV_VERSION; │ │ │ │ │ -162} // end namespace OpenSubdiv │ │ │ │ │ -163 │ │ │ │ │ -164#endif /* OPENSUBDIV3_SDC_BILINEAR_SCHEME_H */ │ │ │ │ │ +140 │ │ │ │ │ +141// │ │ │ │ │ +142// Masks for vertex-vertices: the hard Corner mask does not need to be │ │ │ │ │ +specialized │ │ │ │ │ +143// (simply the vertex itself), leaving the Crease and Smooth cases (Dart is │ │ │ │ │ +smooth): │ │ │ │ │ +144// │ │ │ │ │ +145template <> │ │ │ │ │ +146template │ │ │ │ │ +147inline void │ │ │ │ │ +_1_4_8_S_c_h_e_m_e_<_S_C_H_E_M_E___C_A_T_M_A_R_K_>_:_:_a_s_s_i_g_n_C_r_e_a_s_e_M_a_s_k_F_o_r_V_e_r_t_e_x(VERTEX const& vertex, │ │ │ │ │ +MASK& mask, │ │ │ │ │ +149 int const creaseEnds[2]) const { │ │ │ │ │ +150 typedef typename MASK::Weight Weight; │ │ │ │ │ +151 │ │ │ │ │ +152 int valence = vertex.GetNumEdges(); │ │ │ │ │ +153 │ │ │ │ │ +154 mask.SetNumVertexWeights(1); │ │ │ │ │ +155 mask.SetNumEdgeWeights(valence); │ │ │ │ │ +156 mask.SetNumFaceWeights(0); │ │ │ │ │ +157 mask.SetFaceWeightsForFaceCenters(false); │ │ │ │ │ +158 │ │ │ │ │ +159 Weight vWeight = 0.75f; │ │ │ │ │ +160 Weight eWeight = 0.125f; │ │ │ │ │ +161 │ │ │ │ │ +162 mask.VertexWeight(0) = vWeight; │ │ │ │ │ +163 for (int i = 0; i < valence; ++i) { │ │ │ │ │ +164 mask.EdgeWeight(i) = 0.0f; │ │ │ │ │ +165 } │ │ │ │ │ +166 mask.EdgeWeight(creaseEnds[0]) = eWeight; │ │ │ │ │ +167 mask.EdgeWeight(creaseEnds[1]) = eWeight; │ │ │ │ │ +168} │ │ │ │ │ +169 │ │ │ │ │ +170template <> │ │ │ │ │ +171template │ │ │ │ │ +172inline void │ │ │ │ │ +_1_7_3_S_c_h_e_m_e_<_S_C_H_E_M_E___C_A_T_M_A_R_K_>_:_:_a_s_s_i_g_n_S_m_o_o_t_h_M_a_s_k_F_o_r_V_e_r_t_e_x(VERTEX const& vertex, │ │ │ │ │ +MASK& mask) const { │ │ │ │ │ +174 │ │ │ │ │ +175 typedef typename MASK::Weight Weight; │ │ │ │ │ +176 │ │ │ │ │ +177 // │ │ │ │ │ +178 // A Smooth vertex must be manifold and interior -- manifold boundary │ │ │ │ │ +vertices will be │ │ │ │ │ +179 // Creases and non-manifold vertices of any kind will be Corners or │ │ │ │ │ +Creases. If smooth │ │ │ │ │ +180 // rules for non-manifold vertices are ever defined, this will need │ │ │ │ │ +adjusting: │ │ │ │ │ +181 // │ │ │ │ │ +182 assert(vertex.GetNumFaces() == vertex.GetNumEdges()); │ │ │ │ │ +183 │ │ │ │ │ +184 int valence = vertex.GetNumFaces(); │ │ │ │ │ +185 │ │ │ │ │ +186 mask.SetNumVertexWeights(1); │ │ │ │ │ +187 mask.SetNumEdgeWeights(valence); │ │ │ │ │ +188 mask.SetNumFaceWeights(valence); │ │ │ │ │ +189 mask.SetFaceWeightsForFaceCenters(true); │ │ │ │ │ +190 │ │ │ │ │ +191 Weight vWeight = (Weight)(valence - 2) / (Weight)valence; │ │ │ │ │ +192 Weight fWeight = 1.0f / (Weight)(valence * valence); │ │ │ │ │ +193 Weight eWeight = fWeight; │ │ │ │ │ +194 │ │ │ │ │ +195 mask.VertexWeight(0) = vWeight; │ │ │ │ │ +196 for (int i = 0; i < valence; ++i) { │ │ │ │ │ +197 mask.EdgeWeight(i) = eWeight; │ │ │ │ │ +198 mask.FaceWeight(i) = fWeight; │ │ │ │ │ +199 } │ │ │ │ │ +200} │ │ │ │ │ +201 │ │ │ │ │ +202// │ │ │ │ │ +203// Limit masks for position: │ │ │ │ │ +204// │ │ │ │ │ +205template <> │ │ │ │ │ +206template │ │ │ │ │ +207inline void │ │ │ │ │ +_2_0_8_S_c_h_e_m_e_<_S_C_H_E_M_E___C_A_T_M_A_R_K_>_:_:_a_s_s_i_g_n_C_o_r_n_e_r_L_i_m_i_t_M_a_s_k(VERTEX const& /* vertex */, │ │ │ │ │ +MASK& posMask) const { │ │ │ │ │ +209 │ │ │ │ │ +210 posMask.SetNumVertexWeights(1); │ │ │ │ │ +211 posMask.SetNumEdgeWeights(0); │ │ │ │ │ +212 posMask.SetNumFaceWeights(0); │ │ │ │ │ +213 posMask.SetFaceWeightsForFaceCenters(false); │ │ │ │ │ +214 │ │ │ │ │ +215 posMask.VertexWeight(0) = 1.0f; │ │ │ │ │ +216} │ │ │ │ │ +217 │ │ │ │ │ +218template <> │ │ │ │ │ +219template │ │ │ │ │ +220inline void │ │ │ │ │ +_2_2_1_S_c_h_e_m_e_<_S_C_H_E_M_E___C_A_T_M_A_R_K_>_:_:_a_s_s_i_g_n_C_r_e_a_s_e_L_i_m_i_t_M_a_s_k(VERTEX const& vertex, MASK& │ │ │ │ │ +posMask, │ │ │ │ │ +222 int const creaseEnds[2]) const { │ │ │ │ │ +223 │ │ │ │ │ +224 typedef typename MASK::Weight Weight; │ │ │ │ │ +225 │ │ │ │ │ +226 int valence = vertex.GetNumEdges(); │ │ │ │ │ +227 │ │ │ │ │ +228 posMask.SetNumVertexWeights(1); │ │ │ │ │ +229 posMask.SetNumEdgeWeights(valence); │ │ │ │ │ +230 posMask.SetNumFaceWeights(0); │ │ │ │ │ +231 posMask.SetFaceWeightsForFaceCenters(false); │ │ │ │ │ +232 │ │ │ │ │ +233 Weight vWeight = (Weight)(2.0 / 3.0); │ │ │ │ │ +234 Weight eWeight = (Weight)(1.0 / 6.0); │ │ │ │ │ +235 │ │ │ │ │ +236 posMask.VertexWeight(0) = vWeight; │ │ │ │ │ +237 for (int i = 0; i < valence; ++i) { │ │ │ │ │ +238 posMask.EdgeWeight(i) = 0.0f; │ │ │ │ │ +239 } │ │ │ │ │ +240 posMask.EdgeWeight(creaseEnds[0]) = eWeight; │ │ │ │ │ +241 posMask.EdgeWeight(creaseEnds[1]) = eWeight; │ │ │ │ │ +242} │ │ │ │ │ +243 │ │ │ │ │ +244template <> │ │ │ │ │ +245template │ │ │ │ │ +246inline void │ │ │ │ │ +_2_4_7_S_c_h_e_m_e_<_S_C_H_E_M_E___C_A_T_M_A_R_K_>_:_:_a_s_s_i_g_n_S_m_o_o_t_h_L_i_m_i_t_M_a_s_k(VERTEX const& vertex, MASK& │ │ │ │ │ +posMask) const { │ │ │ │ │ +248 │ │ │ │ │ +249 typedef typename MASK::Weight Weight; │ │ │ │ │ +250 │ │ │ │ │ +251 int valence = vertex.GetNumFaces(); │ │ │ │ │ +252 if (valence == 2) { │ │ │ │ │ +253 assignCornerLimitMask(vertex, posMask); │ │ │ │ │ +254 return; │ │ │ │ │ +255 } │ │ │ │ │ +256 │ │ │ │ │ +257 posMask.SetNumVertexWeights(1); │ │ │ │ │ +258 posMask.SetNumEdgeWeights(valence); │ │ │ │ │ +259 posMask.SetNumFaceWeights(valence); │ │ │ │ │ +260 posMask.SetFaceWeightsForFaceCenters(false); │ │ │ │ │ +261 │ │ │ │ │ +262 // Specialize for the regular case: │ │ │ │ │ +263 if (valence == 4) { │ │ │ │ │ +264 Weight fWeight = (Weight)(1.0 / 36.0); │ │ │ │ │ +265 Weight eWeight = (Weight)(1.0 / 9.0); │ │ │ │ │ +266 Weight vWeight = (Weight)(4.0 / 9.0); │ │ │ │ │ +267 │ │ │ │ │ +268 posMask.VertexWeight(0) = vWeight; │ │ │ │ │ +269 │ │ │ │ │ +270 posMask.EdgeWeight(0) = eWeight; │ │ │ │ │ +271 posMask.EdgeWeight(1) = eWeight; │ │ │ │ │ +272 posMask.EdgeWeight(2) = eWeight; │ │ │ │ │ +273 posMask.EdgeWeight(3) = eWeight; │ │ │ │ │ +274 │ │ │ │ │ +275 posMask.FaceWeight(0) = fWeight; │ │ │ │ │ +276 posMask.FaceWeight(1) = fWeight; │ │ │ │ │ +277 posMask.FaceWeight(2) = fWeight; │ │ │ │ │ +278 posMask.FaceWeight(3) = fWeight; │ │ │ │ │ +279 } else { │ │ │ │ │ +280 Weight Valence = (Weight) valence; │ │ │ │ │ +281 │ │ │ │ │ +282 Weight fWeight = 1.0f / (Valence * (Valence + 5.0f)); │ │ │ │ │ +283 Weight eWeight = 4.0f * fWeight; │ │ │ │ │ +284 Weight vWeight = 1.0f - Valence * (eWeight + fWeight); │ │ │ │ │ +285 │ │ │ │ │ +286 posMask.VertexWeight(0) = vWeight; │ │ │ │ │ +287 for (int i = 0; i < valence; ++i) { │ │ │ │ │ +288 posMask.EdgeWeight(i) = eWeight; │ │ │ │ │ +289 posMask.FaceWeight(i) = fWeight; │ │ │ │ │ +290 } │ │ │ │ │ +291 } │ │ │ │ │ +292} │ │ │ │ │ +293 │ │ │ │ │ +294// │ │ │ │ │ +295// Limit masks for tangents -- these are stubs for now, or have a temporary │ │ │ │ │ +296// implementation │ │ │ │ │ +297// │ │ │ │ │ +298template <> │ │ │ │ │ +299template │ │ │ │ │ +300inline void │ │ │ │ │ +_3_0_1_S_c_h_e_m_e_<_S_C_H_E_M_E___C_A_T_M_A_R_K_>_:_:_a_s_s_i_g_n_C_o_r_n_e_r_L_i_m_i_t_T_a_n_g_e_n_t_M_a_s_k_s(VERTEX const& vertex, │ │ │ │ │ +302 MASK& tan1Mask, MASK& tan2Mask) const { │ │ │ │ │ +303 │ │ │ │ │ +304 int valence = vertex.GetNumEdges(); │ │ │ │ │ +305 │ │ │ │ │ +306 tan1Mask.SetNumVertexWeights(1); │ │ │ │ │ +307 tan1Mask.SetNumEdgeWeights(valence); │ │ │ │ │ +308 tan1Mask.SetNumFaceWeights(0); │ │ │ │ │ +309 tan1Mask.SetFaceWeightsForFaceCenters(false); │ │ │ │ │ +310 │ │ │ │ │ +311 tan2Mask.SetNumVertexWeights(1); │ │ │ │ │ +312 tan2Mask.SetNumEdgeWeights(valence); │ │ │ │ │ +313 tan2Mask.SetNumFaceWeights(0); │ │ │ │ │ +314 tan2Mask.SetFaceWeightsForFaceCenters(false); │ │ │ │ │ +315 │ │ │ │ │ +316 // Should be at least 2 edges -- be sure to clear weights for any more: │ │ │ │ │ +317 tan1Mask.VertexWeight(0) = -1.0f; │ │ │ │ │ +318 tan1Mask.EdgeWeight(0) = 1.0f; │ │ │ │ │ +319 tan1Mask.EdgeWeight(1) = 0.0f; │ │ │ │ │ +320 │ │ │ │ │ +321 tan2Mask.VertexWeight(0) = -1.0f; │ │ │ │ │ +322 tan2Mask.EdgeWeight(0) = 0.0f; │ │ │ │ │ +323 tan2Mask.EdgeWeight(1) = 1.0f; │ │ │ │ │ +324 │ │ │ │ │ +325 for (int i = 2; i < valence; ++i) { │ │ │ │ │ +326 tan1Mask.EdgeWeight(i) = 0.0f; │ │ │ │ │ +327 tan2Mask.EdgeWeight(i) = 0.0f; │ │ │ │ │ +328 } │ │ │ │ │ +329} │ │ │ │ │ +330 │ │ │ │ │ +331template <> │ │ │ │ │ +332template │ │ │ │ │ +333inline void │ │ │ │ │ +_3_3_4_S_c_h_e_m_e_<_S_C_H_E_M_E___C_A_T_M_A_R_K_>_:_:_a_s_s_i_g_n_C_r_e_a_s_e_L_i_m_i_t_T_a_n_g_e_n_t_M_a_s_k_s(VERTEX const& vertex, │ │ │ │ │ +335 MASK& tan1Mask, MASK& tan2Mask, int const creaseEnds[2]) const { │ │ │ │ │ +336 │ │ │ │ │ +337 typedef typename MASK::Weight Weight; │ │ │ │ │ +338 │ │ │ │ │ +339 // │ │ │ │ │ +340 // First, the tangent along the crease: │ │ │ │ │ +341 // The first crease edge is considered the "leading" edge of the span │ │ │ │ │ +342 // of surface for which we are evaluating tangents and the second edge the │ │ │ │ │ +343 // "trailing edge". By convention, the tangent along the crease is oriented │ │ │ │ │ +344 // in the direction of the leading edge. │ │ │ │ │ +345 // │ │ │ │ │ +346 int numEdges = vertex.GetNumEdges(); │ │ │ │ │ +347 int numFaces = vertex.GetNumFaces(); │ │ │ │ │ +348 │ │ │ │ │ +349 tan1Mask.SetNumVertexWeights(1); │ │ │ │ │ +350 tan1Mask.SetNumEdgeWeights(numEdges); │ │ │ │ │ +351 tan1Mask.SetNumFaceWeights(numFaces); │ │ │ │ │ +352 tan1Mask.SetFaceWeightsForFaceCenters(false); │ │ │ │ │ +353 │ │ │ │ │ +354 tan1Mask.VertexWeight(0) = 0.0f; │ │ │ │ │ +355 for (int i = 0; i < numEdges; ++i) { │ │ │ │ │ +356 tan1Mask.EdgeWeight(i) = 0.0f; │ │ │ │ │ +357 } │ │ │ │ │ +358 for (int i = 0; i < numFaces; ++i) { │ │ │ │ │ +359 tan1Mask.FaceWeight(i) = 0.0f; │ │ │ │ │ +360 } │ │ │ │ │ +361 │ │ │ │ │ +362 tan1Mask.EdgeWeight(creaseEnds[0]) = 0.5f; │ │ │ │ │ +363 tan1Mask.EdgeWeight(creaseEnds[1]) = -0.5f; │ │ │ │ │ +364 │ │ │ │ │ +365 // │ │ │ │ │ +366 // Second, the tangent across the interior faces: │ │ │ │ │ +367 // Note this is ambiguous for an interior vertex. We currently return │ │ │ │ │ +368 // the tangent for the surface in the counter-clockwise span between the │ │ │ │ │ +369 // leading and trailing edges that form the crease. Given the expected │ │ │ │ │ +370 // computation of a surface normal as Tan1 X Tan2, this tangent should be │ │ │ │ │ +371 // oriented "inward" from the crease/boundary -- across the surface rather │ │ │ │ │ +372 // than outward and away from it. │ │ │ │ │ +373 // │ │ │ │ │ +374 tan2Mask.SetNumVertexWeights(1); │ │ │ │ │ +375 tan2Mask.SetNumEdgeWeights(numEdges); │ │ │ │ │ +376 tan2Mask.SetNumFaceWeights(numFaces); │ │ │ │ │ +377 tan2Mask.SetFaceWeightsForFaceCenters(false); │ │ │ │ │ +378 │ │ │ │ │ +379 // Prepend weights of 0 preceding the crease: │ │ │ │ │ +380 for (int i = 0; i < creaseEnds[0]; ++i) { │ │ │ │ │ +381 tan2Mask.EdgeWeight(i) = 0.0f; │ │ │ │ │ +382 tan2Mask.FaceWeight(i) = 0.0f; │ │ │ │ │ +383 } │ │ │ │ │ +384 │ │ │ │ │ +385 // Assign weights to crease edge and interior points: │ │ │ │ │ +386 int interiorEdgeCount = creaseEnds[1] - creaseEnds[0] - 1; │ │ │ │ │ +387 if (interiorEdgeCount == 1) { │ │ │ │ │ +388 // The regular case -- uniform B-spline cross-tangent: │ │ │ │ │ +389 │ │ │ │ │ +390 tan2Mask.VertexWeight(0) = (Weight)(-4.0 / 6.0); │ │ │ │ │ +391 │ │ │ │ │ +392 tan2Mask.EdgeWeight(creaseEnds[0]) = (Weight)(-1.0 / 6.0); │ │ │ │ │ +393 tan2Mask.EdgeWeight(creaseEnds[0] + 1) = (Weight)( 4.0 / 6.0); │ │ │ │ │ +394 tan2Mask.EdgeWeight(creaseEnds[1]) = (Weight)(-1.0 / 6.0); │ │ │ │ │ +395 │ │ │ │ │ +396 tan2Mask.FaceWeight(creaseEnds[0]) = (Weight)(1.0 / 6.0); │ │ │ │ │ +397 tan2Mask.FaceWeight(creaseEnds[0] + 1) = (Weight)(1.0 / 6.0); │ │ │ │ │ +398 } else if (interiorEdgeCount > 1) { │ │ │ │ │ +399 // The irregular case -- formulae from Biermann et al: │ │ │ │ │ +400 │ │ │ │ │ +401 double k = (double) (interiorEdgeCount + 1); │ │ │ │ │ +402 double theta = M_PI / k; │ │ │ │ │ +403 │ │ │ │ │ +404 double cosTheta = std::cos(theta); │ │ │ │ │ +405 double sinTheta = std::sin(theta); │ │ │ │ │ +406 │ │ │ │ │ +407 // Loop/Schaefer use a different divisor here (3*k + cos(theta)): │ │ │ │ │ +408 double commonDenom = 1.0f / (k * (3.0f + cosTheta)); │ │ │ │ │ +409 double R = (cosTheta + 1.0f) / sinTheta; │ │ │ │ │ +410 │ │ │ │ │ +411 double vertexWeight = 4.0f * R * (cosTheta - 1.0f); │ │ │ │ │ +412 double creaseWeight = -R * (1.0f + 2.0f * cosTheta); │ │ │ │ │ +413 │ │ │ │ │ +414 tan2Mask.VertexWeight(0) = (Weight) (vertexWeight * commonDenom); │ │ │ │ │ +415 │ │ │ │ │ +416 tan2Mask.EdgeWeight(creaseEnds[0]) = (Weight) (creaseWeight * commonDenom); │ │ │ │ │ +417 tan2Mask.EdgeWeight(creaseEnds[1]) = (Weight) (creaseWeight * commonDenom); │ │ │ │ │ +418 │ │ │ │ │ +419 tan2Mask.FaceWeight(creaseEnds[0]) = (Weight) (sinTheta * commonDenom); │ │ │ │ │ +420 │ │ │ │ │ +421 double sinThetaI = 0.0f; │ │ │ │ │ +422 double sinThetaIplus1 = sinTheta; │ │ │ │ │ +423 for (int i = 1; i < k; ++i) { │ │ │ │ │ +424 sinThetaI = sinThetaIplus1; │ │ │ │ │ +425 sinThetaIplus1 = std::sin((i+1)*theta); │ │ │ │ │ +426 │ │ │ │ │ +427 tan2Mask.EdgeWeight(creaseEnds[0] + i) = (Weight) ((4.0f * sinThetaI) * │ │ │ │ │ +commonDenom); │ │ │ │ │ +428 tan2Mask.FaceWeight(creaseEnds[0] + i) = (Weight) ((sinThetaI + │ │ │ │ │ +sinThetaIplus1) * commonDenom); │ │ │ │ │ +429 } │ │ │ │ │ +430 } else { │ │ │ │ │ +431 // Special case for a single face -- simple average of boundary edges: │ │ │ │ │ +432 │ │ │ │ │ +433 tan2Mask.VertexWeight(0) = -6.0f; │ │ │ │ │ +434 │ │ │ │ │ +435 tan2Mask.EdgeWeight(creaseEnds[0]) = 3.0f; │ │ │ │ │ +436 tan2Mask.EdgeWeight(creaseEnds[1]) = 3.0f; │ │ │ │ │ +437 │ │ │ │ │ +438 tan2Mask.FaceWeight(creaseEnds[0]) = 0.0f; │ │ │ │ │ +439 } │ │ │ │ │ +440 │ │ │ │ │ +441 // Append weights of 0 following the crease: │ │ │ │ │ +442 for (int i = creaseEnds[1]; i < numFaces; ++i) { │ │ │ │ │ +443 tan2Mask.FaceWeight(i) = 0.0f; │ │ │ │ │ +444 } │ │ │ │ │ +445 for (int i = creaseEnds[1] + 1; i < numEdges; ++i) { │ │ │ │ │ +446 tan2Mask.EdgeWeight(i) = 0.0f; │ │ │ │ │ +447 } │ │ │ │ │ +448} │ │ │ │ │ +449 │ │ │ │ │ +450template <> │ │ │ │ │ +451template │ │ │ │ │ +452inline void │ │ │ │ │ +_4_5_3_S_c_h_e_m_e_<_S_C_H_E_M_E___C_A_T_M_A_R_K_>_:_:_a_s_s_i_g_n_S_m_o_o_t_h_L_i_m_i_t_T_a_n_g_e_n_t_M_a_s_k_s(VERTEX const& vertex, │ │ │ │ │ +454 MASK& tan1Mask, MASK& tan2Mask) const { │ │ │ │ │ +455 │ │ │ │ │ +456 typedef typename MASK::Weight Weight; │ │ │ │ │ +457 │ │ │ │ │ +458 int valence = vertex.GetNumFaces(); │ │ │ │ │ +459 if (valence == 2) { │ │ │ │ │ +460 assignCornerLimitTangentMasks(vertex, tan1Mask, tan2Mask); │ │ │ │ │ +461 return; │ │ │ │ │ +462 } │ │ │ │ │ +463 │ │ │ │ │ +464 // Compute tan1 initially -- tan2 is simply a rotation: │ │ │ │ │ +465 tan1Mask.SetNumVertexWeights(1); │ │ │ │ │ +466 tan1Mask.SetNumEdgeWeights(valence); │ │ │ │ │ +467 tan1Mask.SetNumFaceWeights(valence); │ │ │ │ │ +468 tan1Mask.SetFaceWeightsForFaceCenters(false); │ │ │ │ │ +469 │ │ │ │ │ +470 tan1Mask.VertexWeight(0) = 0.0f; │ │ │ │ │ +471 │ │ │ │ │ +472 if (valence == 4) { │ │ │ │ │ +473 tan1Mask.EdgeWeight(0) = 4.0f; │ │ │ │ │ +474 tan1Mask.EdgeWeight(1) = 0.0f; │ │ │ │ │ +475 tan1Mask.EdgeWeight(2) = -4.0f; │ │ │ │ │ +476 tan1Mask.EdgeWeight(3) = 0.0f; │ │ │ │ │ +477 │ │ │ │ │ +478 tan1Mask.FaceWeight(0) = 1.0f; │ │ │ │ │ +479 tan1Mask.FaceWeight(1) = -1.0f; │ │ │ │ │ +480 tan1Mask.FaceWeight(2) = -1.0f; │ │ │ │ │ +481 tan1Mask.FaceWeight(3) = 1.0f; │ │ │ │ │ +482 } else { │ │ │ │ │ +483 double theta = 2.0f * M_PI / (double)valence; │ │ │ │ │ +484 │ │ │ │ │ +485 double cosTheta = std::cos(theta); │ │ │ │ │ +486 double cosHalfTheta = std::cos(theta * 0.5f); │ │ │ │ │ +487 │ │ │ │ │ +488 double lambda = (5.0 / 16.0) + (1.0 / 16.0) * │ │ │ │ │ +489 (cosTheta + cosHalfTheta * std::sqrt(2.0f * (9.0f + cosTheta))); │ │ │ │ │ +490 │ │ │ │ │ +491 double edgeWeightScale = 4.0f; │ │ │ │ │ +492 double faceWeightScale = 1.0f / (4.0f * lambda - 1.0f); │ │ │ │ │ +493 │ │ │ │ │ +494 for (int i = 0; i < valence; ++i) { │ │ │ │ │ +495 double cosThetaI = std::cos( i * theta); │ │ │ │ │ +496 double cosThetaIplus1 = std::cos((i+1)* theta); │ │ │ │ │ +497 │ │ │ │ │ +498 tan1Mask.EdgeWeight(i) = (Weight) (edgeWeightScale * cosThetaI); │ │ │ │ │ +499 tan1Mask.FaceWeight(i) = (Weight) (faceWeightScale * (cosThetaI + │ │ │ │ │ +cosThetaIplus1)); │ │ │ │ │ +500 } │ │ │ │ │ +501 } │ │ │ │ │ +502 │ │ │ │ │ +503 // Now rotate/copy tan1 weights to tan2: │ │ │ │ │ +504 tan2Mask.SetNumVertexWeights(1); │ │ │ │ │ +505 tan2Mask.SetNumEdgeWeights(valence); │ │ │ │ │ +506 tan2Mask.SetNumFaceWeights(valence); │ │ │ │ │ +507 tan2Mask.SetFaceWeightsForFaceCenters(false); │ │ │ │ │ +508 │ │ │ │ │ +509 tan2Mask.VertexWeight(0) = 0.0f; │ │ │ │ │ +510 if (valence == 4) { │ │ │ │ │ +511 tan2Mask.EdgeWeight(0) = 0.0f; │ │ │ │ │ +512 tan2Mask.EdgeWeight(1) = 4.0f; │ │ │ │ │ +513 tan2Mask.EdgeWeight(2) = 0.0f; │ │ │ │ │ +514 tan2Mask.EdgeWeight(3) = -4.0f; │ │ │ │ │ +515 │ │ │ │ │ +516 tan2Mask.FaceWeight(0) = 1.0f; │ │ │ │ │ +517 tan2Mask.FaceWeight(1) = 1.0f; │ │ │ │ │ +518 tan2Mask.FaceWeight(2) = -1.0f; │ │ │ │ │ +519 tan2Mask.FaceWeight(3) = -1.0f; │ │ │ │ │ +520 } else { │ │ │ │ │ +521 tan2Mask.EdgeWeight(0) = tan1Mask.EdgeWeight(valence-1); │ │ │ │ │ +522 tan2Mask.FaceWeight(0) = tan1Mask.FaceWeight(valence-1); │ │ │ │ │ +523 for (int i = 1; i < valence; ++i) { │ │ │ │ │ +524 tan2Mask.EdgeWeight(i) = tan1Mask.EdgeWeight(i-1); │ │ │ │ │ +525 tan2Mask.FaceWeight(i) = tan1Mask.FaceWeight(i-1); │ │ │ │ │ +526 } │ │ │ │ │ +527 } │ │ │ │ │ +528} │ │ │ │ │ +529 │ │ │ │ │ +530} // end namespace sdc │ │ │ │ │ +531 │ │ │ │ │ +532} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ +533using namespace OPENSUBDIV_VERSION; │ │ │ │ │ +534} // end namespace OpenSubdiv │ │ │ │ │ +535 │ │ │ │ │ +536#endif /* OPENSUBDIV3_SDC_CATMARK_SCHEME_H */ │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v │ │ │ │ │ DDeeffiinniittiioonn _l_i_m_i_t_s_._h_:_3_2 │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_S_p_l_i_t │ │ │ │ │ Split │ │ │ │ │ Enumerated type for all face splitting schemes. │ │ │ │ │ DDeeffiinniittiioonn _t_y_p_e_s_._h_:_4_7 │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_S_P_L_I_T___T_O___Q_U_A_D_S │ │ │ │ │ @ SPLIT_TO_QUADS │ │ │ │ │ Used by Catmark and Bilinear. │ │ │ │ │ DDeeffiinniittiioonn _t_y_p_e_s_._h_:_4_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_C_r_e_a_s_e_:_:_R_u_l_e │ │ │ │ │ -Rule │ │ │ │ │ -DDeeffiinniittiioonn _c_r_e_a_s_e_._h_:_8_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_O_p_t_i_o_n_s_:_:_T_R_I___S_U_B___S_M_O_O_T_H │ │ │ │ │ +@ TRI_SUB_SMOOTH │ │ │ │ │ +"smooth triangle" weights (Catmark scheme only) │ │ │ │ │ +DDeeffiinniittiioonn _o_p_t_i_o_n_s_._h_:_7_4 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_S_c_h_e_m_e_:_:_a_s_s_i_g_n_S_m_o_o_t_h_M_a_s_k_F_o_r_E_d_g_e │ │ │ │ │ +void assignSmoothMaskForEdge(EDGE const &edge, MASK &mask) const │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_S_c_h_e_m_e_:_:_G_e_t_T_o_p_o_l_o_g_i_c_a_l_S_p_l_i_t_T_y_p_e │ │ │ │ │ static Split GetTopologicalSplitType() │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_S_c_h_e_m_e_:_:_C_o_m_p_u_t_e_V_e_r_t_e_x_V_e_r_t_e_x_M_a_s_k │ │ │ │ │ -void ComputeVertexVertexMask(VERTEX const &vertexNeighborhood, MASK │ │ │ │ │ -&vertexVertexMask, Crease::Rule parentRule=Crease::RULE_UNKNOWN, Crease::Rule │ │ │ │ │ -childRule=Crease::RULE_UNKNOWN) const │ │ │ │ │ -Vertex-vertex masks If known, a single Rule or pair of Rules can be specified │ │ │ │ │ -(indicating a crease tr... │ │ │ │ │ -DDeeffiinniittiioonn _s_c_h_e_m_e_._h_:_5_1_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_S_c_h_e_m_e_:_:_a_s_s_i_g_n_C_r_e_a_s_e_M_a_s_k_F_o_r_V_e_r_t_e_x │ │ │ │ │ +void assignCreaseMaskForVertex(VERTEX const &edge, MASK &mask, int const │ │ │ │ │ +creaseEnds[2]) const │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_S_c_h_e_m_e_:_:_a_s_s_i_g_n_C_r_e_a_s_e_L_i_m_i_t_T_a_n_g_e_n_t_M_a_s_k_s │ │ │ │ │ void assignCreaseLimitTangentMasks(VERTEX const &vertex, MASK &tan1, MASK │ │ │ │ │ &tan2, int const creaseEnds[2]) const │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_S_c_h_e_m_e_:_:_G_e_t_R_e_g_u_l_a_r_F_a_c_e_S_i_z_e │ │ │ │ │ static int GetRegularFaceSize() │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_S_c_h_e_m_e_:_:_C_o_m_p_u_t_e_E_d_g_e_V_e_r_t_e_x_M_a_s_k │ │ │ │ │ -void ComputeEdgeVertexMask(EDGE const &edgeNeighborhood, MASK &edgeVertexMask, │ │ │ │ │ -Crease::Rule parentRule=Crease::RULE_UNKNOWN, Crease::Rule childRule=Crease:: │ │ │ │ │ -RULE_UNKNOWN) const │ │ │ │ │ -Edge-vertex masks If known, the Rule for the edge and/or the derived vertex can │ │ │ │ │ -be specified to accel... │ │ │ │ │ -DDeeffiinniittiioonn _s_c_h_e_m_e_._h_:_3_9_2 │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_S_c_h_e_m_e_:_:_a_s_s_i_g_n_S_m_o_o_t_h_L_i_m_i_t_M_a_s_k │ │ │ │ │ void assignSmoothLimitMask(VERTEX const &vertex, MASK &pos) const │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_S_c_h_e_m_e_:_:_G_e_t_L_o_c_a_l_N_e_i_g_h_b_o_r_h_o_o_d_S_i_z_e │ │ │ │ │ static int GetLocalNeighborhoodSize() │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_S_c_h_e_m_e_:_:_a_s_s_i_g_n_C_r_e_a_s_e_L_i_m_i_t_M_a_s_k │ │ │ │ │ void assignCreaseLimitMask(VERTEX const &vertex, MASK &pos, int const │ │ │ │ │ creaseEnds[2]) const │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_S_c_h_e_m_e_:_:_a_s_s_i_g_n_S_m_o_o_t_h_M_a_s_k_F_o_r_V_e_r_t_e_x │ │ │ │ │ +void assignSmoothMaskForVertex(VERTEX const &edge, MASK &mask) const │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_S_c_h_e_m_e_:_:_G_e_t_R_e_g_u_l_a_r_V_e_r_t_e_x_V_a_l_e_n_c_e │ │ │ │ │ static int GetRegularVertexValence() │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_S_c_h_e_m_e_:_:_a_s_s_i_g_n_S_m_o_o_t_h_L_i_m_i_t_T_a_n_g_e_n_t_M_a_s_k_s │ │ │ │ │ void assignSmoothLimitTangentMasks(VERTEX const &vertex, MASK &tan1, MASK │ │ │ │ │ &tan2) const │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_S_c_h_e_m_e_:_:_a_s_s_i_g_n_C_o_r_n_e_r_L_i_m_i_t_M_a_s_k │ │ │ │ │ void assignCornerLimitMask(VERTEX const &vertex, MASK &pos) const │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_S_c_h_e_m_e_:_:_a_s_s_i_g_n_C_o_r_n_e_r_L_i_m_i_t_T_a_n_g_e_n_t_M_a_s_k_s │ │ │ │ │ void assignCornerLimitTangentMasks(VERTEX const &vertex, MASK &tan1, MASK │ │ │ │ │ &tan2) const │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _s_d_c │ │ │ │ │ - * _b_i_l_i_n_e_a_r_S_c_h_e_m_e_._h │ │ │ │ │ + * _c_a_t_m_a_r_k_S_c_h_e_m_e_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00785.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/sdc/catmarkScheme.h File Reference │ │ │ │ +OpenSubdiv: opensubdiv/sdc/bilinearScheme.h File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -89,21 +89,19 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Namespaces
│ │ │ │ -
catmarkScheme.h File Reference
│ │ │ │ +
bilinearScheme.h File Reference
│ │ │ │
│ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ #include "../sdc/scheme.h"
│ │ │ │ -#include <cassert>
│ │ │ │ -#include <cmath>
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -113,13 +111,13 @@ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  OpenSubdiv
 
 
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,22 +1,20 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -catmarkScheme.h File Reference │ │ │ │ │ +bilinearScheme.h File Reference │ │ │ │ │ #include "../version.h" │ │ │ │ │ #include "_._._/_s_d_c_/_s_c_h_e_m_e_._h" │ │ │ │ │ -#include │ │ │ │ │ -#include │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c │ │ │ │ │   │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _s_d_c │ │ │ │ │ - * _c_a_t_m_a_r_k_S_c_h_e_m_e_._h │ │ │ │ │ + * _b_i_l_i_n_e_a_r_S_c_h_e_m_e_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00785_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/sdc/catmarkScheme.h Source File │ │ │ │ +OpenSubdiv: opensubdiv/sdc/bilinearScheme.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -92,15 +92,15 @@ │ │ │ │
No Matches
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
catmarkScheme.h
│ │ │ │ +
bilinearScheme.h
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1//
│ │ │ │
2// Copyright 2014 DreamWorks Animation LLC.
│ │ │ │
3//
│ │ │ │
4// Licensed under the Apache License, Version 2.0 (the "Apache License")
│ │ │ │
5// with the following modification; you may not use this file except in
│ │ │ │ @@ -118,566 +118,193 @@ │ │ │ │
17//
│ │ │ │
18// Unless required by applicable law or agreed to in writing, software
│ │ │ │
19// distributed under the Apache License with the above modification is
│ │ │ │
20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
│ │ │ │
21// KIND, either express or implied. See the Apache License for the specific
│ │ │ │
22// language governing permissions and limitations under the Apache License.
│ │ │ │
23//
│ │ │ │ -
24#ifndef OPENSUBDIV3_SDC_CATMARK_SCHEME_H
│ │ │ │ -
25#define OPENSUBDIV3_SDC_CATMARK_SCHEME_H
│ │ │ │ +
24#ifndef OPENSUBDIV3_SDC_BILINEAR_SCHEME_H
│ │ │ │ +
25#define OPENSUBDIV3_SDC_BILINEAR_SCHEME_H
│ │ │ │
26
│ │ │ │
27#include "../version.h"
│ │ │ │
28
│ │ │ │
29#include "../sdc/scheme.h"
│ │ │ │
30
│ │ │ │ -
31#include <cassert>
│ │ │ │ -
32#include <cmath>
│ │ │ │ +
31namespace OpenSubdiv {
│ │ │ │ +
32namespace OPENSUBDIV_VERSION {
│ │ │ │
33
│ │ │ │ -
34namespace OpenSubdiv {
│ │ │ │ -
35namespace OPENSUBDIV_VERSION {
│ │ │ │ -
36
│ │ │ │ -
37namespace Sdc {
│ │ │ │ -
38
│ │ │ │ -
39//
│ │ │ │ -
40// Specializations for Scheme<SCHEME_CATMARK>:
│ │ │ │ -
41//
│ │ │ │ -
42
│ │ │ │ -
43//
│ │ │ │ -
44// Catmark traits:
│ │ │ │ -
45//
│ │ │ │ +
│ │ │ │ +
34namespace Sdc {
│ │ │ │ +
35
│ │ │ │ +
36//
│ │ │ │ +
37// Specializations for Scheme<SCHEME_BILINEAR>:
│ │ │ │ +
38//
│ │ │ │ +
39
│ │ │ │ +
40//
│ │ │ │ +
41// Bilinear traits:
│ │ │ │ +
42//
│ │ │ │ +
43template <>
│ │ │ │ + │ │ │ │ +
45
│ │ │ │
46template <>
│ │ │ │ - │ │ │ │ + │ │ │ │
48
│ │ │ │
49template <>
│ │ │ │ - │ │ │ │ + │ │ │ │
51
│ │ │ │
52template <>
│ │ │ │ - │ │ │ │ + │ │ │ │
54
│ │ │ │ -
55template <>
│ │ │ │ - │ │ │ │ -
57
│ │ │ │ -
58
│ │ │ │ -
59//
│ │ │ │ -
60// Masks for edge-vertices: the hard Crease mask does not need to be specialized
│ │ │ │ -
61// (simply the midpoint), so all that is left is the Smooth case:
│ │ │ │ -
62//
│ │ │ │ -
63// The Smooth mask is complicated by the need to support the "triangle subdivision"
│ │ │ │ -
64// option, which applies different weighting in the presence of triangles. It is
│ │ │ │ -
65// up for debate as to whether this is useful or not -- we may be able to deprecate
│ │ │ │ -
66// this option.
│ │ │ │ -
67//
│ │ │ │ +
55
│ │ │ │ +
56//
│ │ │ │ +
57// Refinement masks:
│ │ │ │ +
58//
│ │ │ │ +
59template <>
│ │ │ │ +
60template <typename EDGE, typename MASK>
│ │ │ │ +
61void
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ +
64 // This should be inline, otherwise trivially replicate it:
│ │ │ │ +
65 assignCreaseMaskForEdge(edge, mask);
│ │ │ │ +
66}
│ │ │ │ +
│ │ │ │ +
67
│ │ │ │
68template <>
│ │ │ │ -
69template <typename EDGE, typename MASK>
│ │ │ │ -
70inline void
│ │ │ │ +
69template <typename VERTEX, typename MASK>
│ │ │ │ +
70void
│ │ │ │
│ │ │ │ -
71Scheme<SCHEME_CATMARK>::assignSmoothMaskForEdge(EDGE const& edge, MASK& mask) const {
│ │ │ │ -
72
│ │ │ │ -
73 typedef typename MASK::Weight Weight;
│ │ │ │ -
74
│ │ │ │ -
75 int faceCount = edge.GetNumFaces();
│ │ │ │ +
71Scheme<SCHEME_BILINEAR>::ComputeVertexVertexMask(VERTEX const& vertex, MASK& mask,
│ │ │ │ + │ │ │ │ +
73 // This should be inline, otherwise trivially replicate it:
│ │ │ │ +
74 assignCornerMaskForVertex(vertex, mask);
│ │ │ │ +
75}
│ │ │ │ +
│ │ │ │
76
│ │ │ │ -
77 mask.SetNumVertexWeights(2);
│ │ │ │ -
78 mask.SetNumEdgeWeights(0);
│ │ │ │ -
79 mask.SetNumFaceWeights(faceCount);
│ │ │ │ -
80 mask.SetFaceWeightsForFaceCenters(true);
│ │ │ │ -
81
│ │ │ │ -
82 //
│ │ │ │ -
83 // Determine if we need to inspect incident faces and apply alternate weighting for
│ │ │ │ -
84 // triangles -- and if so, determine which of the two are triangles.
│ │ │ │ -
85 //
│ │ │ │ -
86 bool face0IsTri = false;
│ │ │ │ -
87 bool face1IsTri = false;
│ │ │ │ -
88 bool useTriangleOption = (_options.GetTriangleSubdivision() == Options::TRI_SUB_SMOOTH);
│ │ │ │ -
89 if (useTriangleOption) {
│ │ │ │ -
90 if (faceCount == 2) {
│ │ │ │ -
91 //
│ │ │ │ -
92 // Ideally we want to avoid this inspection when we have already subdivided at
│ │ │ │ -
93 // least once -- need something in the Edge interface to help avoid this, e.g.
│ │ │ │ -
94 // an IsRegular() query, the subdivision level...
│ │ │ │ -
95 //
│ │ │ │ -
96 int vertsPerFace[2];
│ │ │ │ -
97 edge.GetNumVerticesPerFace(vertsPerFace);
│ │ │ │ -
98
│ │ │ │ -
99 face0IsTri = (vertsPerFace[0] == 3);
│ │ │ │ -
100 face1IsTri = (vertsPerFace[1] == 3);
│ │ │ │ -
101 useTriangleOption = face0IsTri || face1IsTri;
│ │ │ │ -
102 } else {
│ │ │ │ -
103 useTriangleOption = false;
│ │ │ │ -
104 }
│ │ │ │ -
105 }
│ │ │ │ -
106
│ │ │ │ -
107 if (! useTriangleOption) {
│ │ │ │ -
108 mask.VertexWeight(0) = 0.25f;
│ │ │ │ -
109 mask.VertexWeight(1) = 0.25f;
│ │ │ │ +
77
│ │ │ │ +
78//
│ │ │ │ +
79// Limit masks for position -- the limit position of all vertices is the refined vertex.
│ │ │ │ +
80//
│ │ │ │ +
81template <>
│ │ │ │ +
82template <typename VERTEX, typename MASK>
│ │ │ │ +
83inline void
│ │ │ │ +
│ │ │ │ +
84Scheme<SCHEME_BILINEAR>::assignCornerLimitMask(VERTEX const& /* vertex */, MASK& posMask) const {
│ │ │ │ +
85
│ │ │ │ +
86 posMask.SetNumVertexWeights(1);
│ │ │ │ +
87 posMask.SetNumEdgeWeights(0);
│ │ │ │ +
88 posMask.SetNumFaceWeights(0);
│ │ │ │ +
89 posMask.SetFaceWeightsForFaceCenters(false);
│ │ │ │ +
90
│ │ │ │ +
91 posMask.VertexWeight(0) = 1.0f;
│ │ │ │ +
92}
│ │ │ │ +
│ │ │ │ +
93
│ │ │ │ +
94template <>
│ │ │ │ +
95template <typename VERTEX, typename MASK>
│ │ │ │ +
96inline void
│ │ │ │ +
│ │ │ │ +
97Scheme<SCHEME_BILINEAR>::assignCreaseLimitMask(VERTEX const& vertex, MASK& posMask,
│ │ │ │ +
98 int const /* creaseEnds */[2]) const {
│ │ │ │ +
99
│ │ │ │ +
100 assignCornerLimitMask(vertex, posMask);
│ │ │ │ +
101}
│ │ │ │ +
│ │ │ │ +
102
│ │ │ │ +
103template <>
│ │ │ │ +
104template <typename VERTEX, typename MASK>
│ │ │ │ +
105inline void
│ │ │ │ +
│ │ │ │ +
106Scheme<SCHEME_BILINEAR>::assignSmoothLimitMask(VERTEX const& vertex, MASK& posMask) const {
│ │ │ │ +
107
│ │ │ │ +
108 assignCornerLimitMask(vertex, posMask);
│ │ │ │ +
109}
│ │ │ │ +
│ │ │ │
110
│ │ │ │ -
111 if (faceCount == 2) {
│ │ │ │ -
112 mask.FaceWeight(0) = 0.25f;
│ │ │ │ -
113 mask.FaceWeight(1) = 0.25f;
│ │ │ │ -
114 } else {
│ │ │ │ -
115 Weight fWeight = 0.5f / (Weight)faceCount;
│ │ │ │ -
116 for (int i = 0; i < faceCount; ++i) {
│ │ │ │ -
117 mask.FaceWeight(i) = fWeight;
│ │ │ │ -
118 }
│ │ │ │ -
119 }
│ │ │ │ -
120 } else {
│ │ │ │ -
121 //
│ │ │ │ -
122 // This mimics the implementation in Hbr in terms of order of operations.
│ │ │ │ -
123 //
│ │ │ │ -
124 const Weight CATMARK_SMOOTH_TRI_EDGE_WEIGHT = (Weight) 0.470;
│ │ │ │ +
111//
│ │ │ │ +
112// Limit masks for tangents -- these are ambiguous around all vertices. Provide
│ │ │ │ +
113// the tangents based on the incident edges of the first face.
│ │ │ │ +
114//
│ │ │ │ +
115template <>
│ │ │ │ +
116template <typename VERTEX, typename MASK>
│ │ │ │ +
117inline void
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
119 MASK& tan1Mask, MASK& tan2Mask) const {
│ │ │ │ +
120
│ │ │ │ +
121 tan1Mask.SetNumVertexWeights(1);
│ │ │ │ +
122 tan1Mask.SetNumEdgeWeights(2);
│ │ │ │ +
123 tan1Mask.SetNumFaceWeights(0);
│ │ │ │ +
124 tan1Mask.SetFaceWeightsForFaceCenters(false);
│ │ │ │
125
│ │ │ │ -
126 Weight f0Weight = face0IsTri ? CATMARK_SMOOTH_TRI_EDGE_WEIGHT : 0.25f;
│ │ │ │ -
127 Weight f1Weight = face1IsTri ? CATMARK_SMOOTH_TRI_EDGE_WEIGHT : 0.25f;
│ │ │ │ -
128
│ │ │ │ -
129 Weight fWeight = 0.5f * (f0Weight + f1Weight);
│ │ │ │ -
130 Weight vWeight = 0.5f * (1.0f - 2.0f * fWeight);
│ │ │ │ -
131
│ │ │ │ -
132 mask.VertexWeight(0) = vWeight;
│ │ │ │ -
133 mask.VertexWeight(1) = vWeight;
│ │ │ │ +
126 tan2Mask.SetNumVertexWeights(1);
│ │ │ │ +
127 tan2Mask.SetNumEdgeWeights(2);
│ │ │ │ +
128 tan2Mask.SetNumFaceWeights(0);
│ │ │ │ +
129 tan2Mask.SetFaceWeightsForFaceCenters(false);
│ │ │ │ +
130
│ │ │ │ +
131 tan1Mask.VertexWeight(0) = -1.0f;
│ │ │ │ +
132 tan1Mask.EdgeWeight(0) = 1.0f;
│ │ │ │ +
133 tan1Mask.EdgeWeight(1) = 0.0f;
│ │ │ │
134
│ │ │ │ -
135 mask.FaceWeight(0) = fWeight;
│ │ │ │ -
136 mask.FaceWeight(1) = fWeight;
│ │ │ │ -
137 }
│ │ │ │ +
135 tan2Mask.VertexWeight(0) = -1.0f;
│ │ │ │ +
136 tan2Mask.EdgeWeight(0) = 0.0f;
│ │ │ │ +
137 tan2Mask.EdgeWeight(1) = 1.0f;
│ │ │ │
138}
│ │ │ │
│ │ │ │
139
│ │ │ │ -
140
│ │ │ │ -
141//
│ │ │ │ -
142// Masks for vertex-vertices: the hard Corner mask does not need to be specialized
│ │ │ │ -
143// (simply the vertex itself), leaving the Crease and Smooth cases (Dart is smooth):
│ │ │ │ -
144//
│ │ │ │ -
145template <>
│ │ │ │ -
146template <typename VERTEX, typename MASK>
│ │ │ │ -
147inline void
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
149 int const creaseEnds[2]) const {
│ │ │ │ -
150 typedef typename MASK::Weight Weight;
│ │ │ │ -
151
│ │ │ │ -
152 int valence = vertex.GetNumEdges();
│ │ │ │ -
153
│ │ │ │ -
154 mask.SetNumVertexWeights(1);
│ │ │ │ -
155 mask.SetNumEdgeWeights(valence);
│ │ │ │ -
156 mask.SetNumFaceWeights(0);
│ │ │ │ -
157 mask.SetFaceWeightsForFaceCenters(false);
│ │ │ │ -
158
│ │ │ │ -
159 Weight vWeight = 0.75f;
│ │ │ │ -
160 Weight eWeight = 0.125f;
│ │ │ │ -
161
│ │ │ │ -
162 mask.VertexWeight(0) = vWeight;
│ │ │ │ -
163 for (int i = 0; i < valence; ++i) {
│ │ │ │ -
164 mask.EdgeWeight(i) = 0.0f;
│ │ │ │ -
165 }
│ │ │ │ -
166 mask.EdgeWeight(creaseEnds[0]) = eWeight;
│ │ │ │ -
167 mask.EdgeWeight(creaseEnds[1]) = eWeight;
│ │ │ │ -
168}
│ │ │ │ -
│ │ │ │ -
169
│ │ │ │ -
170template <>
│ │ │ │ -
171template <typename VERTEX, typename MASK>
│ │ │ │ -
172inline void
│ │ │ │ -
│ │ │ │ -
173Scheme<SCHEME_CATMARK>::assignSmoothMaskForVertex(VERTEX const& vertex, MASK& mask) const {
│ │ │ │ -
174
│ │ │ │ -
175 typedef typename MASK::Weight Weight;
│ │ │ │ -
176
│ │ │ │ -
177 //
│ │ │ │ -
178 // A Smooth vertex must be manifold and interior -- manifold boundary vertices will be
│ │ │ │ -
179 // Creases and non-manifold vertices of any kind will be Corners or Creases. If smooth
│ │ │ │ -
180 // rules for non-manifold vertices are ever defined, this will need adjusting:
│ │ │ │ -
181 //
│ │ │ │ -
182 assert(vertex.GetNumFaces() == vertex.GetNumEdges());
│ │ │ │ -
183
│ │ │ │ -
184 int valence = vertex.GetNumFaces();
│ │ │ │ -
185
│ │ │ │ -
186 mask.SetNumVertexWeights(1);
│ │ │ │ -
187 mask.SetNumEdgeWeights(valence);
│ │ │ │ -
188 mask.SetNumFaceWeights(valence);
│ │ │ │ -
189 mask.SetFaceWeightsForFaceCenters(true);
│ │ │ │ -
190
│ │ │ │ -
191 Weight vWeight = (Weight)(valence - 2) / (Weight)valence;
│ │ │ │ -
192 Weight fWeight = 1.0f / (Weight)(valence * valence);
│ │ │ │ -
193 Weight eWeight = fWeight;
│ │ │ │ -
194
│ │ │ │ -
195 mask.VertexWeight(0) = vWeight;
│ │ │ │ -
196 for (int i = 0; i < valence; ++i) {
│ │ │ │ -
197 mask.EdgeWeight(i) = eWeight;
│ │ │ │ -
198 mask.FaceWeight(i) = fWeight;
│ │ │ │ -
199 }
│ │ │ │ -
200}
│ │ │ │ -
│ │ │ │ -
201
│ │ │ │ -
202//
│ │ │ │ -
203// Limit masks for position:
│ │ │ │ -
204//
│ │ │ │ -
205template <>
│ │ │ │ -
206template <typename VERTEX, typename MASK>
│ │ │ │ -
207inline void
│ │ │ │ -
│ │ │ │ -
208Scheme<SCHEME_CATMARK>::assignCornerLimitMask(VERTEX const& /* vertex */, MASK& posMask) const {
│ │ │ │ -
209
│ │ │ │ -
210 posMask.SetNumVertexWeights(1);
│ │ │ │ -
211 posMask.SetNumEdgeWeights(0);
│ │ │ │ -
212 posMask.SetNumFaceWeights(0);
│ │ │ │ -
213 posMask.SetFaceWeightsForFaceCenters(false);
│ │ │ │ -
214
│ │ │ │ -
215 posMask.VertexWeight(0) = 1.0f;
│ │ │ │ -
216}
│ │ │ │ -
│ │ │ │ -
217
│ │ │ │ -
218template <>
│ │ │ │ -
219template <typename VERTEX, typename MASK>
│ │ │ │ -
220inline void
│ │ │ │ -
│ │ │ │ -
221Scheme<SCHEME_CATMARK>::assignCreaseLimitMask(VERTEX const& vertex, MASK& posMask,
│ │ │ │ -
222 int const creaseEnds[2]) const {
│ │ │ │ -
223
│ │ │ │ -
224 typedef typename MASK::Weight Weight;
│ │ │ │ -
225
│ │ │ │ -
226 int valence = vertex.GetNumEdges();
│ │ │ │ -
227
│ │ │ │ -
228 posMask.SetNumVertexWeights(1);
│ │ │ │ -
229 posMask.SetNumEdgeWeights(valence);
│ │ │ │ -
230 posMask.SetNumFaceWeights(0);
│ │ │ │ -
231 posMask.SetFaceWeightsForFaceCenters(false);
│ │ │ │ -
232
│ │ │ │ -
233 Weight vWeight = (Weight)(2.0 / 3.0);
│ │ │ │ -
234 Weight eWeight = (Weight)(1.0 / 6.0);
│ │ │ │ -
235
│ │ │ │ -
236 posMask.VertexWeight(0) = vWeight;
│ │ │ │ -
237 for (int i = 0; i < valence; ++i) {
│ │ │ │ -
238 posMask.EdgeWeight(i) = 0.0f;
│ │ │ │ -
239 }
│ │ │ │ -
240 posMask.EdgeWeight(creaseEnds[0]) = eWeight;
│ │ │ │ -
241 posMask.EdgeWeight(creaseEnds[1]) = eWeight;
│ │ │ │ -
242}
│ │ │ │ -
│ │ │ │ -
243
│ │ │ │ -
244template <>
│ │ │ │ -
245template <typename VERTEX, typename MASK>
│ │ │ │ -
246inline void
│ │ │ │ -
│ │ │ │ -
247Scheme<SCHEME_CATMARK>::assignSmoothLimitMask(VERTEX const& vertex, MASK& posMask) const {
│ │ │ │ -
248
│ │ │ │ -
249 typedef typename MASK::Weight Weight;
│ │ │ │ -
250
│ │ │ │ -
251 int valence = vertex.GetNumFaces();
│ │ │ │ -
252 if (valence == 2) {
│ │ │ │ -
253 assignCornerLimitMask(vertex, posMask);
│ │ │ │ -
254 return;
│ │ │ │ -
255 }
│ │ │ │ -
256
│ │ │ │ -
257 posMask.SetNumVertexWeights(1);
│ │ │ │ -
258 posMask.SetNumEdgeWeights(valence);
│ │ │ │ -
259 posMask.SetNumFaceWeights(valence);
│ │ │ │ -
260 posMask.SetFaceWeightsForFaceCenters(false);
│ │ │ │ -
261
│ │ │ │ -
262 // Specialize for the regular case:
│ │ │ │ -
263 if (valence == 4) {
│ │ │ │ -
264 Weight fWeight = (Weight)(1.0 / 36.0);
│ │ │ │ -
265 Weight eWeight = (Weight)(1.0 / 9.0);
│ │ │ │ -
266 Weight vWeight = (Weight)(4.0 / 9.0);
│ │ │ │ -
267
│ │ │ │ -
268 posMask.VertexWeight(0) = vWeight;
│ │ │ │ -
269
│ │ │ │ -
270 posMask.EdgeWeight(0) = eWeight;
│ │ │ │ -
271 posMask.EdgeWeight(1) = eWeight;
│ │ │ │ -
272 posMask.EdgeWeight(2) = eWeight;
│ │ │ │ -
273 posMask.EdgeWeight(3) = eWeight;
│ │ │ │ -
274
│ │ │ │ -
275 posMask.FaceWeight(0) = fWeight;
│ │ │ │ -
276 posMask.FaceWeight(1) = fWeight;
│ │ │ │ -
277 posMask.FaceWeight(2) = fWeight;
│ │ │ │ -
278 posMask.FaceWeight(3) = fWeight;
│ │ │ │ -
279 } else {
│ │ │ │ -
280 Weight Valence = (Weight) valence;
│ │ │ │ -
281
│ │ │ │ -
282 Weight fWeight = 1.0f / (Valence * (Valence + 5.0f));
│ │ │ │ -
283 Weight eWeight = 4.0f * fWeight;
│ │ │ │ -
284 Weight vWeight = 1.0f - Valence * (eWeight + fWeight);
│ │ │ │ -
285
│ │ │ │ -
286 posMask.VertexWeight(0) = vWeight;
│ │ │ │ -
287 for (int i = 0; i < valence; ++i) {
│ │ │ │ -
288 posMask.EdgeWeight(i) = eWeight;
│ │ │ │ -
289 posMask.FaceWeight(i) = fWeight;
│ │ │ │ -
290 }
│ │ │ │ -
291 }
│ │ │ │ -
292}
│ │ │ │ -
│ │ │ │ -
293
│ │ │ │ -
294//
│ │ │ │ -
295// Limit masks for tangents -- these are stubs for now, or have a temporary
│ │ │ │ -
296// implementation
│ │ │ │ -
297//
│ │ │ │ -
298template <>
│ │ │ │ -
299template <typename VERTEX, typename MASK>
│ │ │ │ -
300inline void
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
302 MASK& tan1Mask, MASK& tan2Mask) const {
│ │ │ │ -
303
│ │ │ │ -
304 int valence = vertex.GetNumEdges();
│ │ │ │ -
305
│ │ │ │ -
306 tan1Mask.SetNumVertexWeights(1);
│ │ │ │ -
307 tan1Mask.SetNumEdgeWeights(valence);
│ │ │ │ -
308 tan1Mask.SetNumFaceWeights(0);
│ │ │ │ -
309 tan1Mask.SetFaceWeightsForFaceCenters(false);
│ │ │ │ -
310
│ │ │ │ -
311 tan2Mask.SetNumVertexWeights(1);
│ │ │ │ -
312 tan2Mask.SetNumEdgeWeights(valence);
│ │ │ │ -
313 tan2Mask.SetNumFaceWeights(0);
│ │ │ │ -
314 tan2Mask.SetFaceWeightsForFaceCenters(false);
│ │ │ │ -
315
│ │ │ │ -
316 // Should be at least 2 edges -- be sure to clear weights for any more:
│ │ │ │ -
317 tan1Mask.VertexWeight(0) = -1.0f;
│ │ │ │ -
318 tan1Mask.EdgeWeight(0) = 1.0f;
│ │ │ │ -
319 tan1Mask.EdgeWeight(1) = 0.0f;
│ │ │ │ -
320
│ │ │ │ -
321 tan2Mask.VertexWeight(0) = -1.0f;
│ │ │ │ -
322 tan2Mask.EdgeWeight(0) = 0.0f;
│ │ │ │ -
323 tan2Mask.EdgeWeight(1) = 1.0f;
│ │ │ │ -
324
│ │ │ │ -
325 for (int i = 2; i < valence; ++i) {
│ │ │ │ -
326 tan1Mask.EdgeWeight(i) = 0.0f;
│ │ │ │ -
327 tan2Mask.EdgeWeight(i) = 0.0f;
│ │ │ │ -
328 }
│ │ │ │ -
329}
│ │ │ │ -
│ │ │ │ -
330
│ │ │ │ -
331template <>
│ │ │ │ -
332template <typename VERTEX, typename MASK>
│ │ │ │ -
333inline void
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
335 MASK& tan1Mask, MASK& tan2Mask, int const creaseEnds[2]) const {
│ │ │ │ -
336
│ │ │ │ -
337 typedef typename MASK::Weight Weight;
│ │ │ │ -
338
│ │ │ │ -
339 //
│ │ │ │ -
340 // First, the tangent along the crease:
│ │ │ │ -
341 // The first crease edge is considered the "leading" edge of the span
│ │ │ │ -
342 // of surface for which we are evaluating tangents and the second edge the
│ │ │ │ -
343 // "trailing edge". By convention, the tangent along the crease is oriented
│ │ │ │ -
344 // in the direction of the leading edge.
│ │ │ │ -
345 //
│ │ │ │ -
346 int numEdges = vertex.GetNumEdges();
│ │ │ │ -
347 int numFaces = vertex.GetNumFaces();
│ │ │ │ -
348
│ │ │ │ -
349 tan1Mask.SetNumVertexWeights(1);
│ │ │ │ -
350 tan1Mask.SetNumEdgeWeights(numEdges);
│ │ │ │ -
351 tan1Mask.SetNumFaceWeights(numFaces);
│ │ │ │ -
352 tan1Mask.SetFaceWeightsForFaceCenters(false);
│ │ │ │ -
353
│ │ │ │ -
354 tan1Mask.VertexWeight(0) = 0.0f;
│ │ │ │ -
355 for (int i = 0; i < numEdges; ++i) {
│ │ │ │ -
356 tan1Mask.EdgeWeight(i) = 0.0f;
│ │ │ │ -
357 }
│ │ │ │ -
358 for (int i = 0; i < numFaces; ++i) {
│ │ │ │ -
359 tan1Mask.FaceWeight(i) = 0.0f;
│ │ │ │ -
360 }
│ │ │ │ -
361
│ │ │ │ -
362 tan1Mask.EdgeWeight(creaseEnds[0]) = 0.5f;
│ │ │ │ -
363 tan1Mask.EdgeWeight(creaseEnds[1]) = -0.5f;
│ │ │ │ -
364
│ │ │ │ -
365 //
│ │ │ │ -
366 // Second, the tangent across the interior faces:
│ │ │ │ -
367 // Note this is ambiguous for an interior vertex. We currently return
│ │ │ │ -
368 // the tangent for the surface in the counter-clockwise span between the
│ │ │ │ -
369 // leading and trailing edges that form the crease. Given the expected
│ │ │ │ -
370 // computation of a surface normal as Tan1 X Tan2, this tangent should be
│ │ │ │ -
371 // oriented "inward" from the crease/boundary -- across the surface rather
│ │ │ │ -
372 // than outward and away from it.
│ │ │ │ -
373 //
│ │ │ │ -
374 tan2Mask.SetNumVertexWeights(1);
│ │ │ │ -
375 tan2Mask.SetNumEdgeWeights(numEdges);
│ │ │ │ -
376 tan2Mask.SetNumFaceWeights(numFaces);
│ │ │ │ -
377 tan2Mask.SetFaceWeightsForFaceCenters(false);
│ │ │ │ -
378
│ │ │ │ -
379 // Prepend weights of 0 preceding the crease:
│ │ │ │ -
380 for (int i = 0; i < creaseEnds[0]; ++i) {
│ │ │ │ -
381 tan2Mask.EdgeWeight(i) = 0.0f;
│ │ │ │ -
382 tan2Mask.FaceWeight(i) = 0.0f;
│ │ │ │ -
383 }
│ │ │ │ -
384
│ │ │ │ -
385 // Assign weights to crease edge and interior points:
│ │ │ │ -
386 int interiorEdgeCount = creaseEnds[1] - creaseEnds[0] - 1;
│ │ │ │ -
387 if (interiorEdgeCount == 1) {
│ │ │ │ -
388 // The regular case -- uniform B-spline cross-tangent:
│ │ │ │ -
389
│ │ │ │ -
390 tan2Mask.VertexWeight(0) = (Weight)(-4.0 / 6.0);
│ │ │ │ -
391
│ │ │ │ -
392 tan2Mask.EdgeWeight(creaseEnds[0]) = (Weight)(-1.0 / 6.0);
│ │ │ │ -
393 tan2Mask.EdgeWeight(creaseEnds[0] + 1) = (Weight)( 4.0 / 6.0);
│ │ │ │ -
394 tan2Mask.EdgeWeight(creaseEnds[1]) = (Weight)(-1.0 / 6.0);
│ │ │ │ -
395
│ │ │ │ -
396 tan2Mask.FaceWeight(creaseEnds[0]) = (Weight)(1.0 / 6.0);
│ │ │ │ -
397 tan2Mask.FaceWeight(creaseEnds[0] + 1) = (Weight)(1.0 / 6.0);
│ │ │ │ -
398 } else if (interiorEdgeCount > 1) {
│ │ │ │ -
399 // The irregular case -- formulae from Biermann et al:
│ │ │ │ -
400
│ │ │ │ -
401 double k = (double) (interiorEdgeCount + 1);
│ │ │ │ -
402 double theta = M_PI / k;
│ │ │ │ -
403
│ │ │ │ -
404 double cosTheta = std::cos(theta);
│ │ │ │ -
405 double sinTheta = std::sin(theta);
│ │ │ │ -
406
│ │ │ │ -
407 // Loop/Schaefer use a different divisor here (3*k + cos(theta)):
│ │ │ │ -
408 double commonDenom = 1.0f / (k * (3.0f + cosTheta));
│ │ │ │ -
409 double R = (cosTheta + 1.0f) / sinTheta;
│ │ │ │ -
410
│ │ │ │ -
411 double vertexWeight = 4.0f * R * (cosTheta - 1.0f);
│ │ │ │ -
412 double creaseWeight = -R * (1.0f + 2.0f * cosTheta);
│ │ │ │ -
413
│ │ │ │ -
414 tan2Mask.VertexWeight(0) = (Weight) (vertexWeight * commonDenom);
│ │ │ │ -
415
│ │ │ │ -
416 tan2Mask.EdgeWeight(creaseEnds[0]) = (Weight) (creaseWeight * commonDenom);
│ │ │ │ -
417 tan2Mask.EdgeWeight(creaseEnds[1]) = (Weight) (creaseWeight * commonDenom);
│ │ │ │ -
418
│ │ │ │ -
419 tan2Mask.FaceWeight(creaseEnds[0]) = (Weight) (sinTheta * commonDenom);
│ │ │ │ -
420
│ │ │ │ -
421 double sinThetaI = 0.0f;
│ │ │ │ -
422 double sinThetaIplus1 = sinTheta;
│ │ │ │ -
423 for (int i = 1; i < k; ++i) {
│ │ │ │ -
424 sinThetaI = sinThetaIplus1;
│ │ │ │ -
425 sinThetaIplus1 = std::sin((i+1)*theta);
│ │ │ │ -
426
│ │ │ │ -
427 tan2Mask.EdgeWeight(creaseEnds[0] + i) = (Weight) ((4.0f * sinThetaI) * commonDenom);
│ │ │ │ -
428 tan2Mask.FaceWeight(creaseEnds[0] + i) = (Weight) ((sinThetaI + sinThetaIplus1) * commonDenom);
│ │ │ │ -
429 }
│ │ │ │ -
430 } else {
│ │ │ │ -
431 // Special case for a single face -- simple average of boundary edges:
│ │ │ │ -
432
│ │ │ │ -
433 tan2Mask.VertexWeight(0) = -6.0f;
│ │ │ │ -
434
│ │ │ │ -
435 tan2Mask.EdgeWeight(creaseEnds[0]) = 3.0f;
│ │ │ │ -
436 tan2Mask.EdgeWeight(creaseEnds[1]) = 3.0f;
│ │ │ │ -
437
│ │ │ │ -
438 tan2Mask.FaceWeight(creaseEnds[0]) = 0.0f;
│ │ │ │ -
439 }
│ │ │ │ -
440
│ │ │ │ -
441 // Append weights of 0 following the crease:
│ │ │ │ -
442 for (int i = creaseEnds[1]; i < numFaces; ++i) {
│ │ │ │ -
443 tan2Mask.FaceWeight(i) = 0.0f;
│ │ │ │ -
444 }
│ │ │ │ -
445 for (int i = creaseEnds[1] + 1; i < numEdges; ++i) {
│ │ │ │ -
446 tan2Mask.EdgeWeight(i) = 0.0f;
│ │ │ │ -
447 }
│ │ │ │ -
448}
│ │ │ │ -
│ │ │ │ -
449
│ │ │ │ -
450template <>
│ │ │ │ -
451template <typename VERTEX, typename MASK>
│ │ │ │ -
452inline void
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
454 MASK& tan1Mask, MASK& tan2Mask) const {
│ │ │ │ -
455
│ │ │ │ -
456 typedef typename MASK::Weight Weight;
│ │ │ │ -
457
│ │ │ │ -
458 int valence = vertex.GetNumFaces();
│ │ │ │ -
459 if (valence == 2) {
│ │ │ │ -
460 assignCornerLimitTangentMasks(vertex, tan1Mask, tan2Mask);
│ │ │ │ -
461 return;
│ │ │ │ -
462 }
│ │ │ │ -
463
│ │ │ │ -
464 // Compute tan1 initially -- tan2 is simply a rotation:
│ │ │ │ -
465 tan1Mask.SetNumVertexWeights(1);
│ │ │ │ -
466 tan1Mask.SetNumEdgeWeights(valence);
│ │ │ │ -
467 tan1Mask.SetNumFaceWeights(valence);
│ │ │ │ -
468 tan1Mask.SetFaceWeightsForFaceCenters(false);
│ │ │ │ -
469
│ │ │ │ -
470 tan1Mask.VertexWeight(0) = 0.0f;
│ │ │ │ -
471
│ │ │ │ -
472 if (valence == 4) {
│ │ │ │ -
473 tan1Mask.EdgeWeight(0) = 4.0f;
│ │ │ │ -
474 tan1Mask.EdgeWeight(1) = 0.0f;
│ │ │ │ -
475 tan1Mask.EdgeWeight(2) = -4.0f;
│ │ │ │ -
476 tan1Mask.EdgeWeight(3) = 0.0f;
│ │ │ │ -
477
│ │ │ │ -
478 tan1Mask.FaceWeight(0) = 1.0f;
│ │ │ │ -
479 tan1Mask.FaceWeight(1) = -1.0f;
│ │ │ │ -
480 tan1Mask.FaceWeight(2) = -1.0f;
│ │ │ │ -
481 tan1Mask.FaceWeight(3) = 1.0f;
│ │ │ │ -
482 } else {
│ │ │ │ -
483 double theta = 2.0f * M_PI / (double)valence;
│ │ │ │ -
484
│ │ │ │ -
485 double cosTheta = std::cos(theta);
│ │ │ │ -
486 double cosHalfTheta = std::cos(theta * 0.5f);
│ │ │ │ -
487
│ │ │ │ -
488 double lambda = (5.0 / 16.0) + (1.0 / 16.0) *
│ │ │ │ -
489 (cosTheta + cosHalfTheta * std::sqrt(2.0f * (9.0f + cosTheta)));
│ │ │ │ -
490
│ │ │ │ -
491 double edgeWeightScale = 4.0f;
│ │ │ │ -
492 double faceWeightScale = 1.0f / (4.0f * lambda - 1.0f);
│ │ │ │ -
493
│ │ │ │ -
494 for (int i = 0; i < valence; ++i) {
│ │ │ │ -
495 double cosThetaI = std::cos( i * theta);
│ │ │ │ -
496 double cosThetaIplus1 = std::cos((i+1)* theta);
│ │ │ │ -
497
│ │ │ │ -
498 tan1Mask.EdgeWeight(i) = (Weight) (edgeWeightScale * cosThetaI);
│ │ │ │ -
499 tan1Mask.FaceWeight(i) = (Weight) (faceWeightScale * (cosThetaI + cosThetaIplus1));
│ │ │ │ -
500 }
│ │ │ │ -
501 }
│ │ │ │ -
502
│ │ │ │ -
503 // Now rotate/copy tan1 weights to tan2:
│ │ │ │ -
504 tan2Mask.SetNumVertexWeights(1);
│ │ │ │ -
505 tan2Mask.SetNumEdgeWeights(valence);
│ │ │ │ -
506 tan2Mask.SetNumFaceWeights(valence);
│ │ │ │ -
507 tan2Mask.SetFaceWeightsForFaceCenters(false);
│ │ │ │ -
508
│ │ │ │ -
509 tan2Mask.VertexWeight(0) = 0.0f;
│ │ │ │ -
510 if (valence == 4) {
│ │ │ │ -
511 tan2Mask.EdgeWeight(0) = 0.0f;
│ │ │ │ -
512 tan2Mask.EdgeWeight(1) = 4.0f;
│ │ │ │ -
513 tan2Mask.EdgeWeight(2) = 0.0f;
│ │ │ │ -
514 tan2Mask.EdgeWeight(3) = -4.0f;
│ │ │ │ -
515
│ │ │ │ -
516 tan2Mask.FaceWeight(0) = 1.0f;
│ │ │ │ -
517 tan2Mask.FaceWeight(1) = 1.0f;
│ │ │ │ -
518 tan2Mask.FaceWeight(2) = -1.0f;
│ │ │ │ -
519 tan2Mask.FaceWeight(3) = -1.0f;
│ │ │ │ -
520 } else {
│ │ │ │ -
521 tan2Mask.EdgeWeight(0) = tan1Mask.EdgeWeight(valence-1);
│ │ │ │ -
522 tan2Mask.FaceWeight(0) = tan1Mask.FaceWeight(valence-1);
│ │ │ │ -
523 for (int i = 1; i < valence; ++i) {
│ │ │ │ -
524 tan2Mask.EdgeWeight(i) = tan1Mask.EdgeWeight(i-1);
│ │ │ │ -
525 tan2Mask.FaceWeight(i) = tan1Mask.FaceWeight(i-1);
│ │ │ │ -
526 }
│ │ │ │ -
527 }
│ │ │ │ -
528}
│ │ │ │ -
│ │ │ │ -
529
│ │ │ │ -
530} // end namespace sdc
│ │ │ │ -
531
│ │ │ │ -
532} // end namespace OPENSUBDIV_VERSION
│ │ │ │ -
533using namespace OPENSUBDIV_VERSION;
│ │ │ │ -
534} // end namespace OpenSubdiv
│ │ │ │ -
535
│ │ │ │ -
536#endif /* OPENSUBDIV3_SDC_CATMARK_SCHEME_H */
│ │ │ │ +
140template <>
│ │ │ │ +
141template <typename VERTEX, typename MASK>
│ │ │ │ +
142inline void
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
144 MASK& tan1Mask, MASK& tan2Mask, int const /* creaseEnds */[2]) const {
│ │ │ │ +
145
│ │ │ │ +
146 assignCornerLimitTangentMasks(vertex, tan1Mask, tan2Mask);
│ │ │ │ +
147}
│ │ │ │ +
│ │ │ │ +
148
│ │ │ │ +
149template <>
│ │ │ │ +
150template <typename VERTEX, typename MASK>
│ │ │ │ +
151inline void
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
153 MASK& tan1Mask, MASK& tan2Mask) const {
│ │ │ │ +
154
│ │ │ │ +
155 assignCornerLimitTangentMasks(vertex, tan1Mask, tan2Mask);
│ │ │ │ +
156}
│ │ │ │ +
│ │ │ │ +
157
│ │ │ │ +
158} // end namespace sdc
│ │ │ │ +
│ │ │ │ +
159
│ │ │ │ +
160} // end namespace OPENSUBDIV_VERSION
│ │ │ │ +
161using namespace OPENSUBDIV_VERSION;
│ │ │ │ +
162} // end namespace OpenSubdiv
│ │ │ │ +
163
│ │ │ │ +
164#endif /* OPENSUBDIV3_SDC_BILINEAR_SCHEME_H */
│ │ │ │ │ │ │ │
Split
Enumerated type for all face splitting schemes.
Definition types.h:47
│ │ │ │
@ SPLIT_TO_QUADS
Used by Catmark and Bilinear.
Definition types.h:48
│ │ │ │ -
@ TRI_SUB_SMOOTH
"smooth triangle" weights (Catmark scheme only)
Definition options.h:74
│ │ │ │ -
void assignSmoothMaskForEdge(EDGE const &edge, MASK &mask) const
│ │ │ │ + │ │ │ │ │ │ │ │ -
void assignCreaseMaskForVertex(VERTEX const &edge, MASK &mask, int const creaseEnds[2]) const
│ │ │ │ +
void ComputeVertexVertexMask(VERTEX const &vertexNeighborhood, MASK &vertexVertexMask, Crease::Rule parentRule=Crease::RULE_UNKNOWN, Crease::Rule childRule=Crease::RULE_UNKNOWN) const
Vertex-vertex masks If known, a single Rule or pair of Rules can be specified (indicating a crease tr...
Definition scheme.h:512
│ │ │ │
void assignCreaseLimitTangentMasks(VERTEX const &vertex, MASK &tan1, MASK &tan2, int const creaseEnds[2]) const
│ │ │ │ │ │ │ │ +
void ComputeEdgeVertexMask(EDGE const &edgeNeighborhood, MASK &edgeVertexMask, Crease::Rule parentRule=Crease::RULE_UNKNOWN, Crease::Rule childRule=Crease::RULE_UNKNOWN) const
Edge-vertex masks If known, the Rule for the edge and/or the derived vertex can be specified to accel...
Definition scheme.h:392
│ │ │ │
void assignSmoothLimitMask(VERTEX const &vertex, MASK &pos) const
│ │ │ │ │ │ │ │
void assignCreaseLimitMask(VERTEX const &vertex, MASK &pos, int const creaseEnds[2]) const
│ │ │ │ -
void assignSmoothMaskForVertex(VERTEX const &edge, MASK &mask) const
│ │ │ │ │ │ │ │
void assignSmoothLimitTangentMasks(VERTEX const &vertex, MASK &tan1, MASK &tan2) const
│ │ │ │
void assignCornerLimitMask(VERTEX const &vertex, MASK &pos) const
│ │ │ │
void assignCornerLimitTangentMasks(VERTEX const &vertex, MASK &tan1, MASK &tan2) const
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,12 +1,12 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ -catmarkScheme.h │ │ │ │ │ +bilinearScheme.h │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// │ │ │ │ │ 2// Copyright 2014 DreamWorks Animation LLC. │ │ │ │ │ 3// │ │ │ │ │ 4// Licensed under the Apache License, Version 2.0 (the "Apache License") │ │ │ │ │ 5// with the following modification; you may not use this file except in │ │ │ │ │ 6// compliance with the Apache License and the following modification to it: │ │ │ │ │ @@ -23,592 +23,211 @@ │ │ │ │ │ 17// │ │ │ │ │ 18// Unless required by applicable law or agreed to in writing, software │ │ │ │ │ 19// distributed under the Apache License with the above modification is │ │ │ │ │ 20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY │ │ │ │ │ 21// KIND, either express or implied. See the Apache License for the specific │ │ │ │ │ 22// language governing permissions and limitations under the Apache License. │ │ │ │ │ 23// │ │ │ │ │ -24#ifndef OPENSUBDIV3_SDC_CATMARK_SCHEME_H │ │ │ │ │ -25#define OPENSUBDIV3_SDC_CATMARK_SCHEME_H │ │ │ │ │ +24#ifndef OPENSUBDIV3_SDC_BILINEAR_SCHEME_H │ │ │ │ │ +25#define OPENSUBDIV3_SDC_BILINEAR_SCHEME_H │ │ │ │ │ 26 │ │ │ │ │ 27#include "../version.h" │ │ │ │ │ 28 │ │ │ │ │ 29#include "../sdc/scheme.h" │ │ │ │ │ 30 │ │ │ │ │ -31#include │ │ │ │ │ -32#include │ │ │ │ │ +31namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ +32namespace OPENSUBDIV_VERSION { │ │ │ │ │ 33 │ │ │ │ │ -34namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ -35namespace OPENSUBDIV_VERSION { │ │ │ │ │ -36 │ │ │ │ │ -37namespace Sdc { │ │ │ │ │ -38 │ │ │ │ │ -39// │ │ │ │ │ -40// Specializations for Scheme: │ │ │ │ │ -41// │ │ │ │ │ -42 │ │ │ │ │ -43// │ │ │ │ │ -44// Catmark traits: │ │ │ │ │ -45// │ │ │ │ │ -46template <> │ │ │ │ │ -_4_7inline _S_p_l_i_t _S_c_h_e_m_e_<_S_C_H_E_M_E___C_A_T_M_A_R_K_>_:_:_G_e_t_T_o_p_o_l_o_g_i_c_a_l_S_p_l_i_t_T_y_p_e() { return │ │ │ │ │ +_3_4namespace Sdc { │ │ │ │ │ +35 │ │ │ │ │ +36// │ │ │ │ │ +37// Specializations for Scheme: │ │ │ │ │ +38// │ │ │ │ │ +39 │ │ │ │ │ +40// │ │ │ │ │ +41// Bilinear traits: │ │ │ │ │ +42// │ │ │ │ │ +43template <> │ │ │ │ │ +_4_4inline _S_p_l_i_t _S_c_h_e_m_e_<_S_C_H_E_M_E___B_I_L_I_N_E_A_R_>_:_:_G_e_t_T_o_p_o_l_o_g_i_c_a_l_S_p_l_i_t_T_y_p_e() { return │ │ │ │ │ _S_P_L_I_T___T_O___Q_U_A_D_S; } │ │ │ │ │ +45 │ │ │ │ │ +46template <> │ │ │ │ │ +_4_7inline int _S_c_h_e_m_e_<_S_C_H_E_M_E___B_I_L_I_N_E_A_R_>_:_:_G_e_t_R_e_g_u_l_a_r_F_a_c_e_S_i_z_e() { return 4; } │ │ │ │ │ 48 │ │ │ │ │ 49template <> │ │ │ │ │ -_5_0inline int _S_c_h_e_m_e_<_S_C_H_E_M_E___C_A_T_M_A_R_K_>_:_:_G_e_t_R_e_g_u_l_a_r_F_a_c_e_S_i_z_e() { return 4; } │ │ │ │ │ +_5_0inline int _S_c_h_e_m_e_<_S_C_H_E_M_E___B_I_L_I_N_E_A_R_>_:_:_G_e_t_R_e_g_u_l_a_r_V_e_r_t_e_x_V_a_l_e_n_c_e() { return 4; } │ │ │ │ │ 51 │ │ │ │ │ 52template <> │ │ │ │ │ -_5_3inline int _S_c_h_e_m_e_<_S_C_H_E_M_E___C_A_T_M_A_R_K_>_:_:_G_e_t_R_e_g_u_l_a_r_V_e_r_t_e_x_V_a_l_e_n_c_e() { return 4; } │ │ │ │ │ +_5_3inline int _S_c_h_e_m_e_<_S_C_H_E_M_E___B_I_L_I_N_E_A_R_>_:_:_G_e_t_L_o_c_a_l_N_e_i_g_h_b_o_r_h_o_o_d_S_i_z_e() { return 0; } │ │ │ │ │ 54 │ │ │ │ │ -55template <> │ │ │ │ │ -_5_6inline int _S_c_h_e_m_e_<_S_C_H_E_M_E___C_A_T_M_A_R_K_>_:_:_G_e_t_L_o_c_a_l_N_e_i_g_h_b_o_r_h_o_o_d_S_i_z_e() { return 1; } │ │ │ │ │ -57 │ │ │ │ │ -58 │ │ │ │ │ -59// │ │ │ │ │ -60// Masks for edge-vertices: the hard Crease mask does not need to be │ │ │ │ │ -specialized │ │ │ │ │ -61// (simply the midpoint), so all that is left is the Smooth case: │ │ │ │ │ -62// │ │ │ │ │ -63// The Smooth mask is complicated by the need to support the "triangle │ │ │ │ │ -subdivision" │ │ │ │ │ -64// option, which applies different weighting in the presence of triangles. It │ │ │ │ │ -is │ │ │ │ │ -65// up for debate as to whether this is useful or not -- we may be able to │ │ │ │ │ -deprecate │ │ │ │ │ -66// this option. │ │ │ │ │ -67// │ │ │ │ │ +55 │ │ │ │ │ +56// │ │ │ │ │ +57// Refinement masks: │ │ │ │ │ +58// │ │ │ │ │ +59template <> │ │ │ │ │ +60template │ │ │ │ │ +61void │ │ │ │ │ +_6_2_S_c_h_e_m_e_<_S_C_H_E_M_E___B_I_L_I_N_E_A_R_>_:_:_C_o_m_p_u_t_e_E_d_g_e_V_e_r_t_e_x_M_a_s_k(EDGE const& edge, MASK& mask, │ │ │ │ │ +63 _C_r_e_a_s_e_:_:_R_u_l_e, _C_r_e_a_s_e_:_:_R_u_l_e) const { │ │ │ │ │ +64 // This should be inline, otherwise trivially replicate it: │ │ │ │ │ +65 assignCreaseMaskForEdge(edge, mask); │ │ │ │ │ +66} │ │ │ │ │ +67 │ │ │ │ │ 68template <> │ │ │ │ │ -69template │ │ │ │ │ -70inline void │ │ │ │ │ -_7_1_S_c_h_e_m_e_<_S_C_H_E_M_E___C_A_T_M_A_R_K_>_:_:_a_s_s_i_g_n_S_m_o_o_t_h_M_a_s_k_F_o_r_E_d_g_e(EDGE const& edge, MASK& mask) │ │ │ │ │ -const { │ │ │ │ │ -72 │ │ │ │ │ -73 typedef typename MASK::Weight Weight; │ │ │ │ │ -74 │ │ │ │ │ -75 int faceCount = edge.GetNumFaces(); │ │ │ │ │ +69template │ │ │ │ │ +70void │ │ │ │ │ +_7_1_S_c_h_e_m_e_<_S_C_H_E_M_E___B_I_L_I_N_E_A_R_>_:_:_C_o_m_p_u_t_e_V_e_r_t_e_x_V_e_r_t_e_x_M_a_s_k(VERTEX const& vertex, MASK& │ │ │ │ │ +mask, │ │ │ │ │ +72 _C_r_e_a_s_e_:_:_R_u_l_e, _C_r_e_a_s_e_:_:_R_u_l_e) const { │ │ │ │ │ +73 // This should be inline, otherwise trivially replicate it: │ │ │ │ │ +74 assignCornerMaskForVertex(vertex, mask); │ │ │ │ │ +75} │ │ │ │ │ 76 │ │ │ │ │ -77 mask.SetNumVertexWeights(2); │ │ │ │ │ -78 mask.SetNumEdgeWeights(0); │ │ │ │ │ -79 mask.SetNumFaceWeights(faceCount); │ │ │ │ │ -80 mask.SetFaceWeightsForFaceCenters(true); │ │ │ │ │ -81 │ │ │ │ │ -82 // │ │ │ │ │ -83 // Determine if we need to inspect incident faces and apply alternate │ │ │ │ │ -weighting for │ │ │ │ │ -84 // triangles -- and if so, determine which of the two are triangles. │ │ │ │ │ -85 // │ │ │ │ │ -86 bool face0IsTri = false; │ │ │ │ │ -87 bool face1IsTri = false; │ │ │ │ │ -88 bool useTriangleOption = (_options.GetTriangleSubdivision() == _O_p_t_i_o_n_s_:_: │ │ │ │ │ -_T_R_I___S_U_B___S_M_O_O_T_H); │ │ │ │ │ -89 if (useTriangleOption) { │ │ │ │ │ -90 if (faceCount == 2) { │ │ │ │ │ -91 // │ │ │ │ │ -92 // Ideally we want to avoid this inspection when we have already subdivided │ │ │ │ │ -at │ │ │ │ │ -93 // least once -- need something in the Edge interface to help avoid this, │ │ │ │ │ -e.g. │ │ │ │ │ -94 // an IsRegular() query, the subdivision level... │ │ │ │ │ -95 // │ │ │ │ │ -96 int vertsPerFace[2]; │ │ │ │ │ -97 edge.GetNumVerticesPerFace(vertsPerFace); │ │ │ │ │ -98 │ │ │ │ │ -99 face0IsTri = (vertsPerFace[0] == 3); │ │ │ │ │ -100 face1IsTri = (vertsPerFace[1] == 3); │ │ │ │ │ -101 useTriangleOption = face0IsTri || face1IsTri; │ │ │ │ │ -102 } else { │ │ │ │ │ -103 useTriangleOption = false; │ │ │ │ │ -104 } │ │ │ │ │ -105 } │ │ │ │ │ -106 │ │ │ │ │ -107 if (! useTriangleOption) { │ │ │ │ │ -108 mask.VertexWeight(0) = 0.25f; │ │ │ │ │ -109 mask.VertexWeight(1) = 0.25f; │ │ │ │ │ +77 │ │ │ │ │ +78// │ │ │ │ │ +79// Limit masks for position -- the limit position of all vertices is the │ │ │ │ │ +refined vertex. │ │ │ │ │ +80// │ │ │ │ │ +81template <> │ │ │ │ │ +82template │ │ │ │ │ +83inline void │ │ │ │ │ +_8_4_S_c_h_e_m_e_<_S_C_H_E_M_E___B_I_L_I_N_E_A_R_>_:_:_a_s_s_i_g_n_C_o_r_n_e_r_L_i_m_i_t_M_a_s_k(VERTEX const& /* vertex */, │ │ │ │ │ +MASK& posMask) const { │ │ │ │ │ +85 │ │ │ │ │ +86 posMask.SetNumVertexWeights(1); │ │ │ │ │ +87 posMask.SetNumEdgeWeights(0); │ │ │ │ │ +88 posMask.SetNumFaceWeights(0); │ │ │ │ │ +89 posMask.SetFaceWeightsForFaceCenters(false); │ │ │ │ │ +90 │ │ │ │ │ +91 posMask.VertexWeight(0) = 1.0f; │ │ │ │ │ +92} │ │ │ │ │ +93 │ │ │ │ │ +94template <> │ │ │ │ │ +95template │ │ │ │ │ +96inline void │ │ │ │ │ +_9_7_S_c_h_e_m_e_<_S_C_H_E_M_E___B_I_L_I_N_E_A_R_>_:_:_a_s_s_i_g_n_C_r_e_a_s_e_L_i_m_i_t_M_a_s_k(VERTEX const& vertex, MASK& │ │ │ │ │ +posMask, │ │ │ │ │ +98 int const /* creaseEnds */[2]) const { │ │ │ │ │ +99 │ │ │ │ │ +100 assignCornerLimitMask(vertex, posMask); │ │ │ │ │ +101} │ │ │ │ │ +102 │ │ │ │ │ +103template <> │ │ │ │ │ +104template │ │ │ │ │ +105inline void │ │ │ │ │ +_1_0_6_S_c_h_e_m_e_<_S_C_H_E_M_E___B_I_L_I_N_E_A_R_>_:_:_a_s_s_i_g_n_S_m_o_o_t_h_L_i_m_i_t_M_a_s_k(VERTEX const& vertex, MASK& │ │ │ │ │ +posMask) const { │ │ │ │ │ +107 │ │ │ │ │ +108 assignCornerLimitMask(vertex, posMask); │ │ │ │ │ +109} │ │ │ │ │ 110 │ │ │ │ │ -111 if (faceCount == 2) { │ │ │ │ │ -112 mask.FaceWeight(0) = 0.25f; │ │ │ │ │ -113 mask.FaceWeight(1) = 0.25f; │ │ │ │ │ -114 } else { │ │ │ │ │ -115 Weight fWeight = 0.5f / (Weight)faceCount; │ │ │ │ │ -116 for (int i = 0; i < faceCount; ++i) { │ │ │ │ │ -117 mask.FaceWeight(i) = fWeight; │ │ │ │ │ -118 } │ │ │ │ │ -119 } │ │ │ │ │ -120 } else { │ │ │ │ │ -121 // │ │ │ │ │ -122 // This mimics the implementation in Hbr in terms of order of operations. │ │ │ │ │ -123 // │ │ │ │ │ -124 const Weight CATMARK_SMOOTH_TRI_EDGE_WEIGHT = (Weight) 0.470; │ │ │ │ │ +111// │ │ │ │ │ +112// Limit masks for tangents -- these are ambiguous around all vertices. │ │ │ │ │ +Provide │ │ │ │ │ +113// the tangents based on the incident edges of the first face. │ │ │ │ │ +114// │ │ │ │ │ +115template <> │ │ │ │ │ +116template │ │ │ │ │ +117inline void │ │ │ │ │ +_1_1_8_S_c_h_e_m_e_<_S_C_H_E_M_E___B_I_L_I_N_E_A_R_>_:_:_a_s_s_i_g_n_C_o_r_n_e_r_L_i_m_i_t_T_a_n_g_e_n_t_M_a_s_k_s(VERTEX const& / │ │ │ │ │ +* vertex */, │ │ │ │ │ +119 MASK& tan1Mask, MASK& tan2Mask) const { │ │ │ │ │ +120 │ │ │ │ │ +121 tan1Mask.SetNumVertexWeights(1); │ │ │ │ │ +122 tan1Mask.SetNumEdgeWeights(2); │ │ │ │ │ +123 tan1Mask.SetNumFaceWeights(0); │ │ │ │ │ +124 tan1Mask.SetFaceWeightsForFaceCenters(false); │ │ │ │ │ 125 │ │ │ │ │ -126 Weight f0Weight = face0IsTri ? CATMARK_SMOOTH_TRI_EDGE_WEIGHT : 0.25f; │ │ │ │ │ -127 Weight f1Weight = face1IsTri ? CATMARK_SMOOTH_TRI_EDGE_WEIGHT : 0.25f; │ │ │ │ │ -128 │ │ │ │ │ -129 Weight fWeight = 0.5f * (f0Weight + f1Weight); │ │ │ │ │ -130 Weight vWeight = 0.5f * (1.0f - 2.0f * fWeight); │ │ │ │ │ -131 │ │ │ │ │ -132 mask.VertexWeight(0) = vWeight; │ │ │ │ │ -133 mask.VertexWeight(1) = vWeight; │ │ │ │ │ +126 tan2Mask.SetNumVertexWeights(1); │ │ │ │ │ +127 tan2Mask.SetNumEdgeWeights(2); │ │ │ │ │ +128 tan2Mask.SetNumFaceWeights(0); │ │ │ │ │ +129 tan2Mask.SetFaceWeightsForFaceCenters(false); │ │ │ │ │ +130 │ │ │ │ │ +131 tan1Mask.VertexWeight(0) = -1.0f; │ │ │ │ │ +132 tan1Mask.EdgeWeight(0) = 1.0f; │ │ │ │ │ +133 tan1Mask.EdgeWeight(1) = 0.0f; │ │ │ │ │ 134 │ │ │ │ │ -135 mask.FaceWeight(0) = fWeight; │ │ │ │ │ -136 mask.FaceWeight(1) = fWeight; │ │ │ │ │ -137 } │ │ │ │ │ +135 tan2Mask.VertexWeight(0) = -1.0f; │ │ │ │ │ +136 tan2Mask.EdgeWeight(0) = 0.0f; │ │ │ │ │ +137 tan2Mask.EdgeWeight(1) = 1.0f; │ │ │ │ │ 138} │ │ │ │ │ 139 │ │ │ │ │ -140 │ │ │ │ │ -141// │ │ │ │ │ -142// Masks for vertex-vertices: the hard Corner mask does not need to be │ │ │ │ │ -specialized │ │ │ │ │ -143// (simply the vertex itself), leaving the Crease and Smooth cases (Dart is │ │ │ │ │ -smooth): │ │ │ │ │ -144// │ │ │ │ │ -145template <> │ │ │ │ │ -146template │ │ │ │ │ -147inline void │ │ │ │ │ -_1_4_8_S_c_h_e_m_e_<_S_C_H_E_M_E___C_A_T_M_A_R_K_>_:_:_a_s_s_i_g_n_C_r_e_a_s_e_M_a_s_k_F_o_r_V_e_r_t_e_x(VERTEX const& vertex, │ │ │ │ │ -MASK& mask, │ │ │ │ │ -149 int const creaseEnds[2]) const { │ │ │ │ │ -150 typedef typename MASK::Weight Weight; │ │ │ │ │ -151 │ │ │ │ │ -152 int valence = vertex.GetNumEdges(); │ │ │ │ │ -153 │ │ │ │ │ -154 mask.SetNumVertexWeights(1); │ │ │ │ │ -155 mask.SetNumEdgeWeights(valence); │ │ │ │ │ -156 mask.SetNumFaceWeights(0); │ │ │ │ │ -157 mask.SetFaceWeightsForFaceCenters(false); │ │ │ │ │ -158 │ │ │ │ │ -159 Weight vWeight = 0.75f; │ │ │ │ │ -160 Weight eWeight = 0.125f; │ │ │ │ │ -161 │ │ │ │ │ -162 mask.VertexWeight(0) = vWeight; │ │ │ │ │ -163 for (int i = 0; i < valence; ++i) { │ │ │ │ │ -164 mask.EdgeWeight(i) = 0.0f; │ │ │ │ │ -165 } │ │ │ │ │ -166 mask.EdgeWeight(creaseEnds[0]) = eWeight; │ │ │ │ │ -167 mask.EdgeWeight(creaseEnds[1]) = eWeight; │ │ │ │ │ -168} │ │ │ │ │ -169 │ │ │ │ │ -170template <> │ │ │ │ │ -171template │ │ │ │ │ -172inline void │ │ │ │ │ -_1_7_3_S_c_h_e_m_e_<_S_C_H_E_M_E___C_A_T_M_A_R_K_>_:_:_a_s_s_i_g_n_S_m_o_o_t_h_M_a_s_k_F_o_r_V_e_r_t_e_x(VERTEX const& vertex, │ │ │ │ │ -MASK& mask) const { │ │ │ │ │ -174 │ │ │ │ │ -175 typedef typename MASK::Weight Weight; │ │ │ │ │ -176 │ │ │ │ │ -177 // │ │ │ │ │ -178 // A Smooth vertex must be manifold and interior -- manifold boundary │ │ │ │ │ -vertices will be │ │ │ │ │ -179 // Creases and non-manifold vertices of any kind will be Corners or │ │ │ │ │ -Creases. If smooth │ │ │ │ │ -180 // rules for non-manifold vertices are ever defined, this will need │ │ │ │ │ -adjusting: │ │ │ │ │ -181 // │ │ │ │ │ -182 assert(vertex.GetNumFaces() == vertex.GetNumEdges()); │ │ │ │ │ -183 │ │ │ │ │ -184 int valence = vertex.GetNumFaces(); │ │ │ │ │ -185 │ │ │ │ │ -186 mask.SetNumVertexWeights(1); │ │ │ │ │ -187 mask.SetNumEdgeWeights(valence); │ │ │ │ │ -188 mask.SetNumFaceWeights(valence); │ │ │ │ │ -189 mask.SetFaceWeightsForFaceCenters(true); │ │ │ │ │ -190 │ │ │ │ │ -191 Weight vWeight = (Weight)(valence - 2) / (Weight)valence; │ │ │ │ │ -192 Weight fWeight = 1.0f / (Weight)(valence * valence); │ │ │ │ │ -193 Weight eWeight = fWeight; │ │ │ │ │ -194 │ │ │ │ │ -195 mask.VertexWeight(0) = vWeight; │ │ │ │ │ -196 for (int i = 0; i < valence; ++i) { │ │ │ │ │ -197 mask.EdgeWeight(i) = eWeight; │ │ │ │ │ -198 mask.FaceWeight(i) = fWeight; │ │ │ │ │ -199 } │ │ │ │ │ -200} │ │ │ │ │ -201 │ │ │ │ │ -202// │ │ │ │ │ -203// Limit masks for position: │ │ │ │ │ -204// │ │ │ │ │ -205template <> │ │ │ │ │ -206template │ │ │ │ │ -207inline void │ │ │ │ │ -_2_0_8_S_c_h_e_m_e_<_S_C_H_E_M_E___C_A_T_M_A_R_K_>_:_:_a_s_s_i_g_n_C_o_r_n_e_r_L_i_m_i_t_M_a_s_k(VERTEX const& /* vertex */, │ │ │ │ │ -MASK& posMask) const { │ │ │ │ │ -209 │ │ │ │ │ -210 posMask.SetNumVertexWeights(1); │ │ │ │ │ -211 posMask.SetNumEdgeWeights(0); │ │ │ │ │ -212 posMask.SetNumFaceWeights(0); │ │ │ │ │ -213 posMask.SetFaceWeightsForFaceCenters(false); │ │ │ │ │ -214 │ │ │ │ │ -215 posMask.VertexWeight(0) = 1.0f; │ │ │ │ │ -216} │ │ │ │ │ -217 │ │ │ │ │ -218template <> │ │ │ │ │ -219template │ │ │ │ │ -220inline void │ │ │ │ │ -_2_2_1_S_c_h_e_m_e_<_S_C_H_E_M_E___C_A_T_M_A_R_K_>_:_:_a_s_s_i_g_n_C_r_e_a_s_e_L_i_m_i_t_M_a_s_k(VERTEX const& vertex, MASK& │ │ │ │ │ -posMask, │ │ │ │ │ -222 int const creaseEnds[2]) const { │ │ │ │ │ -223 │ │ │ │ │ -224 typedef typename MASK::Weight Weight; │ │ │ │ │ -225 │ │ │ │ │ -226 int valence = vertex.GetNumEdges(); │ │ │ │ │ -227 │ │ │ │ │ -228 posMask.SetNumVertexWeights(1); │ │ │ │ │ -229 posMask.SetNumEdgeWeights(valence); │ │ │ │ │ -230 posMask.SetNumFaceWeights(0); │ │ │ │ │ -231 posMask.SetFaceWeightsForFaceCenters(false); │ │ │ │ │ -232 │ │ │ │ │ -233 Weight vWeight = (Weight)(2.0 / 3.0); │ │ │ │ │ -234 Weight eWeight = (Weight)(1.0 / 6.0); │ │ │ │ │ -235 │ │ │ │ │ -236 posMask.VertexWeight(0) = vWeight; │ │ │ │ │ -237 for (int i = 0; i < valence; ++i) { │ │ │ │ │ -238 posMask.EdgeWeight(i) = 0.0f; │ │ │ │ │ -239 } │ │ │ │ │ -240 posMask.EdgeWeight(creaseEnds[0]) = eWeight; │ │ │ │ │ -241 posMask.EdgeWeight(creaseEnds[1]) = eWeight; │ │ │ │ │ -242} │ │ │ │ │ -243 │ │ │ │ │ -244template <> │ │ │ │ │ -245template │ │ │ │ │ -246inline void │ │ │ │ │ -_2_4_7_S_c_h_e_m_e_<_S_C_H_E_M_E___C_A_T_M_A_R_K_>_:_:_a_s_s_i_g_n_S_m_o_o_t_h_L_i_m_i_t_M_a_s_k(VERTEX const& vertex, MASK& │ │ │ │ │ -posMask) const { │ │ │ │ │ -248 │ │ │ │ │ -249 typedef typename MASK::Weight Weight; │ │ │ │ │ -250 │ │ │ │ │ -251 int valence = vertex.GetNumFaces(); │ │ │ │ │ -252 if (valence == 2) { │ │ │ │ │ -253 assignCornerLimitMask(vertex, posMask); │ │ │ │ │ -254 return; │ │ │ │ │ -255 } │ │ │ │ │ -256 │ │ │ │ │ -257 posMask.SetNumVertexWeights(1); │ │ │ │ │ -258 posMask.SetNumEdgeWeights(valence); │ │ │ │ │ -259 posMask.SetNumFaceWeights(valence); │ │ │ │ │ -260 posMask.SetFaceWeightsForFaceCenters(false); │ │ │ │ │ -261 │ │ │ │ │ -262 // Specialize for the regular case: │ │ │ │ │ -263 if (valence == 4) { │ │ │ │ │ -264 Weight fWeight = (Weight)(1.0 / 36.0); │ │ │ │ │ -265 Weight eWeight = (Weight)(1.0 / 9.0); │ │ │ │ │ -266 Weight vWeight = (Weight)(4.0 / 9.0); │ │ │ │ │ -267 │ │ │ │ │ -268 posMask.VertexWeight(0) = vWeight; │ │ │ │ │ -269 │ │ │ │ │ -270 posMask.EdgeWeight(0) = eWeight; │ │ │ │ │ -271 posMask.EdgeWeight(1) = eWeight; │ │ │ │ │ -272 posMask.EdgeWeight(2) = eWeight; │ │ │ │ │ -273 posMask.EdgeWeight(3) = eWeight; │ │ │ │ │ -274 │ │ │ │ │ -275 posMask.FaceWeight(0) = fWeight; │ │ │ │ │ -276 posMask.FaceWeight(1) = fWeight; │ │ │ │ │ -277 posMask.FaceWeight(2) = fWeight; │ │ │ │ │ -278 posMask.FaceWeight(3) = fWeight; │ │ │ │ │ -279 } else { │ │ │ │ │ -280 Weight Valence = (Weight) valence; │ │ │ │ │ -281 │ │ │ │ │ -282 Weight fWeight = 1.0f / (Valence * (Valence + 5.0f)); │ │ │ │ │ -283 Weight eWeight = 4.0f * fWeight; │ │ │ │ │ -284 Weight vWeight = 1.0f - Valence * (eWeight + fWeight); │ │ │ │ │ -285 │ │ │ │ │ -286 posMask.VertexWeight(0) = vWeight; │ │ │ │ │ -287 for (int i = 0; i < valence; ++i) { │ │ │ │ │ -288 posMask.EdgeWeight(i) = eWeight; │ │ │ │ │ -289 posMask.FaceWeight(i) = fWeight; │ │ │ │ │ -290 } │ │ │ │ │ -291 } │ │ │ │ │ -292} │ │ │ │ │ -293 │ │ │ │ │ -294// │ │ │ │ │ -295// Limit masks for tangents -- these are stubs for now, or have a temporary │ │ │ │ │ -296// implementation │ │ │ │ │ -297// │ │ │ │ │ -298template <> │ │ │ │ │ -299template │ │ │ │ │ -300inline void │ │ │ │ │ -_3_0_1_S_c_h_e_m_e_<_S_C_H_E_M_E___C_A_T_M_A_R_K_>_:_:_a_s_s_i_g_n_C_o_r_n_e_r_L_i_m_i_t_T_a_n_g_e_n_t_M_a_s_k_s(VERTEX const& vertex, │ │ │ │ │ -302 MASK& tan1Mask, MASK& tan2Mask) const { │ │ │ │ │ -303 │ │ │ │ │ -304 int valence = vertex.GetNumEdges(); │ │ │ │ │ -305 │ │ │ │ │ -306 tan1Mask.SetNumVertexWeights(1); │ │ │ │ │ -307 tan1Mask.SetNumEdgeWeights(valence); │ │ │ │ │ -308 tan1Mask.SetNumFaceWeights(0); │ │ │ │ │ -309 tan1Mask.SetFaceWeightsForFaceCenters(false); │ │ │ │ │ -310 │ │ │ │ │ -311 tan2Mask.SetNumVertexWeights(1); │ │ │ │ │ -312 tan2Mask.SetNumEdgeWeights(valence); │ │ │ │ │ -313 tan2Mask.SetNumFaceWeights(0); │ │ │ │ │ -314 tan2Mask.SetFaceWeightsForFaceCenters(false); │ │ │ │ │ -315 │ │ │ │ │ -316 // Should be at least 2 edges -- be sure to clear weights for any more: │ │ │ │ │ -317 tan1Mask.VertexWeight(0) = -1.0f; │ │ │ │ │ -318 tan1Mask.EdgeWeight(0) = 1.0f; │ │ │ │ │ -319 tan1Mask.EdgeWeight(1) = 0.0f; │ │ │ │ │ -320 │ │ │ │ │ -321 tan2Mask.VertexWeight(0) = -1.0f; │ │ │ │ │ -322 tan2Mask.EdgeWeight(0) = 0.0f; │ │ │ │ │ -323 tan2Mask.EdgeWeight(1) = 1.0f; │ │ │ │ │ -324 │ │ │ │ │ -325 for (int i = 2; i < valence; ++i) { │ │ │ │ │ -326 tan1Mask.EdgeWeight(i) = 0.0f; │ │ │ │ │ -327 tan2Mask.EdgeWeight(i) = 0.0f; │ │ │ │ │ -328 } │ │ │ │ │ -329} │ │ │ │ │ -330 │ │ │ │ │ -331template <> │ │ │ │ │ -332template │ │ │ │ │ -333inline void │ │ │ │ │ -_3_3_4_S_c_h_e_m_e_<_S_C_H_E_M_E___C_A_T_M_A_R_K_>_:_:_a_s_s_i_g_n_C_r_e_a_s_e_L_i_m_i_t_T_a_n_g_e_n_t_M_a_s_k_s(VERTEX const& vertex, │ │ │ │ │ -335 MASK& tan1Mask, MASK& tan2Mask, int const creaseEnds[2]) const { │ │ │ │ │ -336 │ │ │ │ │ -337 typedef typename MASK::Weight Weight; │ │ │ │ │ -338 │ │ │ │ │ -339 // │ │ │ │ │ -340 // First, the tangent along the crease: │ │ │ │ │ -341 // The first crease edge is considered the "leading" edge of the span │ │ │ │ │ -342 // of surface for which we are evaluating tangents and the second edge the │ │ │ │ │ -343 // "trailing edge". By convention, the tangent along the crease is oriented │ │ │ │ │ -344 // in the direction of the leading edge. │ │ │ │ │ -345 // │ │ │ │ │ -346 int numEdges = vertex.GetNumEdges(); │ │ │ │ │ -347 int numFaces = vertex.GetNumFaces(); │ │ │ │ │ -348 │ │ │ │ │ -349 tan1Mask.SetNumVertexWeights(1); │ │ │ │ │ -350 tan1Mask.SetNumEdgeWeights(numEdges); │ │ │ │ │ -351 tan1Mask.SetNumFaceWeights(numFaces); │ │ │ │ │ -352 tan1Mask.SetFaceWeightsForFaceCenters(false); │ │ │ │ │ -353 │ │ │ │ │ -354 tan1Mask.VertexWeight(0) = 0.0f; │ │ │ │ │ -355 for (int i = 0; i < numEdges; ++i) { │ │ │ │ │ -356 tan1Mask.EdgeWeight(i) = 0.0f; │ │ │ │ │ -357 } │ │ │ │ │ -358 for (int i = 0; i < numFaces; ++i) { │ │ │ │ │ -359 tan1Mask.FaceWeight(i) = 0.0f; │ │ │ │ │ -360 } │ │ │ │ │ -361 │ │ │ │ │ -362 tan1Mask.EdgeWeight(creaseEnds[0]) = 0.5f; │ │ │ │ │ -363 tan1Mask.EdgeWeight(creaseEnds[1]) = -0.5f; │ │ │ │ │ -364 │ │ │ │ │ -365 // │ │ │ │ │ -366 // Second, the tangent across the interior faces: │ │ │ │ │ -367 // Note this is ambiguous for an interior vertex. We currently return │ │ │ │ │ -368 // the tangent for the surface in the counter-clockwise span between the │ │ │ │ │ -369 // leading and trailing edges that form the crease. Given the expected │ │ │ │ │ -370 // computation of a surface normal as Tan1 X Tan2, this tangent should be │ │ │ │ │ -371 // oriented "inward" from the crease/boundary -- across the surface rather │ │ │ │ │ -372 // than outward and away from it. │ │ │ │ │ -373 // │ │ │ │ │ -374 tan2Mask.SetNumVertexWeights(1); │ │ │ │ │ -375 tan2Mask.SetNumEdgeWeights(numEdges); │ │ │ │ │ -376 tan2Mask.SetNumFaceWeights(numFaces); │ │ │ │ │ -377 tan2Mask.SetFaceWeightsForFaceCenters(false); │ │ │ │ │ -378 │ │ │ │ │ -379 // Prepend weights of 0 preceding the crease: │ │ │ │ │ -380 for (int i = 0; i < creaseEnds[0]; ++i) { │ │ │ │ │ -381 tan2Mask.EdgeWeight(i) = 0.0f; │ │ │ │ │ -382 tan2Mask.FaceWeight(i) = 0.0f; │ │ │ │ │ -383 } │ │ │ │ │ -384 │ │ │ │ │ -385 // Assign weights to crease edge and interior points: │ │ │ │ │ -386 int interiorEdgeCount = creaseEnds[1] - creaseEnds[0] - 1; │ │ │ │ │ -387 if (interiorEdgeCount == 1) { │ │ │ │ │ -388 // The regular case -- uniform B-spline cross-tangent: │ │ │ │ │ -389 │ │ │ │ │ -390 tan2Mask.VertexWeight(0) = (Weight)(-4.0 / 6.0); │ │ │ │ │ -391 │ │ │ │ │ -392 tan2Mask.EdgeWeight(creaseEnds[0]) = (Weight)(-1.0 / 6.0); │ │ │ │ │ -393 tan2Mask.EdgeWeight(creaseEnds[0] + 1) = (Weight)( 4.0 / 6.0); │ │ │ │ │ -394 tan2Mask.EdgeWeight(creaseEnds[1]) = (Weight)(-1.0 / 6.0); │ │ │ │ │ -395 │ │ │ │ │ -396 tan2Mask.FaceWeight(creaseEnds[0]) = (Weight)(1.0 / 6.0); │ │ │ │ │ -397 tan2Mask.FaceWeight(creaseEnds[0] + 1) = (Weight)(1.0 / 6.0); │ │ │ │ │ -398 } else if (interiorEdgeCount > 1) { │ │ │ │ │ -399 // The irregular case -- formulae from Biermann et al: │ │ │ │ │ -400 │ │ │ │ │ -401 double k = (double) (interiorEdgeCount + 1); │ │ │ │ │ -402 double theta = M_PI / k; │ │ │ │ │ -403 │ │ │ │ │ -404 double cosTheta = std::cos(theta); │ │ │ │ │ -405 double sinTheta = std::sin(theta); │ │ │ │ │ -406 │ │ │ │ │ -407 // Loop/Schaefer use a different divisor here (3*k + cos(theta)): │ │ │ │ │ -408 double commonDenom = 1.0f / (k * (3.0f + cosTheta)); │ │ │ │ │ -409 double R = (cosTheta + 1.0f) / sinTheta; │ │ │ │ │ -410 │ │ │ │ │ -411 double vertexWeight = 4.0f * R * (cosTheta - 1.0f); │ │ │ │ │ -412 double creaseWeight = -R * (1.0f + 2.0f * cosTheta); │ │ │ │ │ -413 │ │ │ │ │ -414 tan2Mask.VertexWeight(0) = (Weight) (vertexWeight * commonDenom); │ │ │ │ │ -415 │ │ │ │ │ -416 tan2Mask.EdgeWeight(creaseEnds[0]) = (Weight) (creaseWeight * commonDenom); │ │ │ │ │ -417 tan2Mask.EdgeWeight(creaseEnds[1]) = (Weight) (creaseWeight * commonDenom); │ │ │ │ │ -418 │ │ │ │ │ -419 tan2Mask.FaceWeight(creaseEnds[0]) = (Weight) (sinTheta * commonDenom); │ │ │ │ │ -420 │ │ │ │ │ -421 double sinThetaI = 0.0f; │ │ │ │ │ -422 double sinThetaIplus1 = sinTheta; │ │ │ │ │ -423 for (int i = 1; i < k; ++i) { │ │ │ │ │ -424 sinThetaI = sinThetaIplus1; │ │ │ │ │ -425 sinThetaIplus1 = std::sin((i+1)*theta); │ │ │ │ │ -426 │ │ │ │ │ -427 tan2Mask.EdgeWeight(creaseEnds[0] + i) = (Weight) ((4.0f * sinThetaI) * │ │ │ │ │ -commonDenom); │ │ │ │ │ -428 tan2Mask.FaceWeight(creaseEnds[0] + i) = (Weight) ((sinThetaI + │ │ │ │ │ -sinThetaIplus1) * commonDenom); │ │ │ │ │ -429 } │ │ │ │ │ -430 } else { │ │ │ │ │ -431 // Special case for a single face -- simple average of boundary edges: │ │ │ │ │ -432 │ │ │ │ │ -433 tan2Mask.VertexWeight(0) = -6.0f; │ │ │ │ │ -434 │ │ │ │ │ -435 tan2Mask.EdgeWeight(creaseEnds[0]) = 3.0f; │ │ │ │ │ -436 tan2Mask.EdgeWeight(creaseEnds[1]) = 3.0f; │ │ │ │ │ -437 │ │ │ │ │ -438 tan2Mask.FaceWeight(creaseEnds[0]) = 0.0f; │ │ │ │ │ -439 } │ │ │ │ │ -440 │ │ │ │ │ -441 // Append weights of 0 following the crease: │ │ │ │ │ -442 for (int i = creaseEnds[1]; i < numFaces; ++i) { │ │ │ │ │ -443 tan2Mask.FaceWeight(i) = 0.0f; │ │ │ │ │ -444 } │ │ │ │ │ -445 for (int i = creaseEnds[1] + 1; i < numEdges; ++i) { │ │ │ │ │ -446 tan2Mask.EdgeWeight(i) = 0.0f; │ │ │ │ │ -447 } │ │ │ │ │ -448} │ │ │ │ │ -449 │ │ │ │ │ -450template <> │ │ │ │ │ -451template │ │ │ │ │ -452inline void │ │ │ │ │ -_4_5_3_S_c_h_e_m_e_<_S_C_H_E_M_E___C_A_T_M_A_R_K_>_:_:_a_s_s_i_g_n_S_m_o_o_t_h_L_i_m_i_t_T_a_n_g_e_n_t_M_a_s_k_s(VERTEX const& vertex, │ │ │ │ │ -454 MASK& tan1Mask, MASK& tan2Mask) const { │ │ │ │ │ -455 │ │ │ │ │ -456 typedef typename MASK::Weight Weight; │ │ │ │ │ -457 │ │ │ │ │ -458 int valence = vertex.GetNumFaces(); │ │ │ │ │ -459 if (valence == 2) { │ │ │ │ │ -460 assignCornerLimitTangentMasks(vertex, tan1Mask, tan2Mask); │ │ │ │ │ -461 return; │ │ │ │ │ -462 } │ │ │ │ │ -463 │ │ │ │ │ -464 // Compute tan1 initially -- tan2 is simply a rotation: │ │ │ │ │ -465 tan1Mask.SetNumVertexWeights(1); │ │ │ │ │ -466 tan1Mask.SetNumEdgeWeights(valence); │ │ │ │ │ -467 tan1Mask.SetNumFaceWeights(valence); │ │ │ │ │ -468 tan1Mask.SetFaceWeightsForFaceCenters(false); │ │ │ │ │ -469 │ │ │ │ │ -470 tan1Mask.VertexWeight(0) = 0.0f; │ │ │ │ │ -471 │ │ │ │ │ -472 if (valence == 4) { │ │ │ │ │ -473 tan1Mask.EdgeWeight(0) = 4.0f; │ │ │ │ │ -474 tan1Mask.EdgeWeight(1) = 0.0f; │ │ │ │ │ -475 tan1Mask.EdgeWeight(2) = -4.0f; │ │ │ │ │ -476 tan1Mask.EdgeWeight(3) = 0.0f; │ │ │ │ │ -477 │ │ │ │ │ -478 tan1Mask.FaceWeight(0) = 1.0f; │ │ │ │ │ -479 tan1Mask.FaceWeight(1) = -1.0f; │ │ │ │ │ -480 tan1Mask.FaceWeight(2) = -1.0f; │ │ │ │ │ -481 tan1Mask.FaceWeight(3) = 1.0f; │ │ │ │ │ -482 } else { │ │ │ │ │ -483 double theta = 2.0f * M_PI / (double)valence; │ │ │ │ │ -484 │ │ │ │ │ -485 double cosTheta = std::cos(theta); │ │ │ │ │ -486 double cosHalfTheta = std::cos(theta * 0.5f); │ │ │ │ │ -487 │ │ │ │ │ -488 double lambda = (5.0 / 16.0) + (1.0 / 16.0) * │ │ │ │ │ -489 (cosTheta + cosHalfTheta * std::sqrt(2.0f * (9.0f + cosTheta))); │ │ │ │ │ -490 │ │ │ │ │ -491 double edgeWeightScale = 4.0f; │ │ │ │ │ -492 double faceWeightScale = 1.0f / (4.0f * lambda - 1.0f); │ │ │ │ │ -493 │ │ │ │ │ -494 for (int i = 0; i < valence; ++i) { │ │ │ │ │ -495 double cosThetaI = std::cos( i * theta); │ │ │ │ │ -496 double cosThetaIplus1 = std::cos((i+1)* theta); │ │ │ │ │ -497 │ │ │ │ │ -498 tan1Mask.EdgeWeight(i) = (Weight) (edgeWeightScale * cosThetaI); │ │ │ │ │ -499 tan1Mask.FaceWeight(i) = (Weight) (faceWeightScale * (cosThetaI + │ │ │ │ │ -cosThetaIplus1)); │ │ │ │ │ -500 } │ │ │ │ │ -501 } │ │ │ │ │ -502 │ │ │ │ │ -503 // Now rotate/copy tan1 weights to tan2: │ │ │ │ │ -504 tan2Mask.SetNumVertexWeights(1); │ │ │ │ │ -505 tan2Mask.SetNumEdgeWeights(valence); │ │ │ │ │ -506 tan2Mask.SetNumFaceWeights(valence); │ │ │ │ │ -507 tan2Mask.SetFaceWeightsForFaceCenters(false); │ │ │ │ │ -508 │ │ │ │ │ -509 tan2Mask.VertexWeight(0) = 0.0f; │ │ │ │ │ -510 if (valence == 4) { │ │ │ │ │ -511 tan2Mask.EdgeWeight(0) = 0.0f; │ │ │ │ │ -512 tan2Mask.EdgeWeight(1) = 4.0f; │ │ │ │ │ -513 tan2Mask.EdgeWeight(2) = 0.0f; │ │ │ │ │ -514 tan2Mask.EdgeWeight(3) = -4.0f; │ │ │ │ │ -515 │ │ │ │ │ -516 tan2Mask.FaceWeight(0) = 1.0f; │ │ │ │ │ -517 tan2Mask.FaceWeight(1) = 1.0f; │ │ │ │ │ -518 tan2Mask.FaceWeight(2) = -1.0f; │ │ │ │ │ -519 tan2Mask.FaceWeight(3) = -1.0f; │ │ │ │ │ -520 } else { │ │ │ │ │ -521 tan2Mask.EdgeWeight(0) = tan1Mask.EdgeWeight(valence-1); │ │ │ │ │ -522 tan2Mask.FaceWeight(0) = tan1Mask.FaceWeight(valence-1); │ │ │ │ │ -523 for (int i = 1; i < valence; ++i) { │ │ │ │ │ -524 tan2Mask.EdgeWeight(i) = tan1Mask.EdgeWeight(i-1); │ │ │ │ │ -525 tan2Mask.FaceWeight(i) = tan1Mask.FaceWeight(i-1); │ │ │ │ │ -526 } │ │ │ │ │ -527 } │ │ │ │ │ -528} │ │ │ │ │ -529 │ │ │ │ │ -530} // end namespace sdc │ │ │ │ │ -531 │ │ │ │ │ -532} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ -533using namespace OPENSUBDIV_VERSION; │ │ │ │ │ -534} // end namespace OpenSubdiv │ │ │ │ │ -535 │ │ │ │ │ -536#endif /* OPENSUBDIV3_SDC_CATMARK_SCHEME_H */ │ │ │ │ │ +140template <> │ │ │ │ │ +141template │ │ │ │ │ +142inline void │ │ │ │ │ +_1_4_3_S_c_h_e_m_e_<_S_C_H_E_M_E___B_I_L_I_N_E_A_R_>_:_:_a_s_s_i_g_n_C_r_e_a_s_e_L_i_m_i_t_T_a_n_g_e_n_t_M_a_s_k_s(VERTEX const& vertex, │ │ │ │ │ +144 MASK& tan1Mask, MASK& tan2Mask, int const /* creaseEnds */[2]) const { │ │ │ │ │ +145 │ │ │ │ │ +146 assignCornerLimitTangentMasks(vertex, tan1Mask, tan2Mask); │ │ │ │ │ +147} │ │ │ │ │ +148 │ │ │ │ │ +149template <> │ │ │ │ │ +150template │ │ │ │ │ +151inline void │ │ │ │ │ +_1_5_2_S_c_h_e_m_e_<_S_C_H_E_M_E___B_I_L_I_N_E_A_R_>_:_:_a_s_s_i_g_n_S_m_o_o_t_h_L_i_m_i_t_T_a_n_g_e_n_t_M_a_s_k_s(VERTEX const& vertex, │ │ │ │ │ +153 MASK& tan1Mask, MASK& tan2Mask) const { │ │ │ │ │ +154 │ │ │ │ │ +155 assignCornerLimitTangentMasks(vertex, tan1Mask, tan2Mask); │ │ │ │ │ +156} │ │ │ │ │ +157 │ │ │ │ │ +158} // end namespace sdc │ │ │ │ │ +159 │ │ │ │ │ +160} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ +161using namespace OPENSUBDIV_VERSION; │ │ │ │ │ +162} // end namespace OpenSubdiv │ │ │ │ │ +163 │ │ │ │ │ +164#endif /* OPENSUBDIV3_SDC_BILINEAR_SCHEME_H */ │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v │ │ │ │ │ DDeeffiinniittiioonn _l_i_m_i_t_s_._h_:_3_2 │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_S_p_l_i_t │ │ │ │ │ Split │ │ │ │ │ Enumerated type for all face splitting schemes. │ │ │ │ │ DDeeffiinniittiioonn _t_y_p_e_s_._h_:_4_7 │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_S_P_L_I_T___T_O___Q_U_A_D_S │ │ │ │ │ @ SPLIT_TO_QUADS │ │ │ │ │ Used by Catmark and Bilinear. │ │ │ │ │ DDeeffiinniittiioonn _t_y_p_e_s_._h_:_4_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_O_p_t_i_o_n_s_:_:_T_R_I___S_U_B___S_M_O_O_T_H │ │ │ │ │ -@ TRI_SUB_SMOOTH │ │ │ │ │ -"smooth triangle" weights (Catmark scheme only) │ │ │ │ │ -DDeeffiinniittiioonn _o_p_t_i_o_n_s_._h_:_7_4 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_S_c_h_e_m_e_:_:_a_s_s_i_g_n_S_m_o_o_t_h_M_a_s_k_F_o_r_E_d_g_e │ │ │ │ │ -void assignSmoothMaskForEdge(EDGE const &edge, MASK &mask) const │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_C_r_e_a_s_e_:_:_R_u_l_e │ │ │ │ │ +Rule │ │ │ │ │ +DDeeffiinniittiioonn _c_r_e_a_s_e_._h_:_8_2 │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_S_c_h_e_m_e_:_:_G_e_t_T_o_p_o_l_o_g_i_c_a_l_S_p_l_i_t_T_y_p_e │ │ │ │ │ static Split GetTopologicalSplitType() │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_S_c_h_e_m_e_:_:_a_s_s_i_g_n_C_r_e_a_s_e_M_a_s_k_F_o_r_V_e_r_t_e_x │ │ │ │ │ -void assignCreaseMaskForVertex(VERTEX const &edge, MASK &mask, int const │ │ │ │ │ -creaseEnds[2]) const │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_S_c_h_e_m_e_:_:_C_o_m_p_u_t_e_V_e_r_t_e_x_V_e_r_t_e_x_M_a_s_k │ │ │ │ │ +void ComputeVertexVertexMask(VERTEX const &vertexNeighborhood, MASK │ │ │ │ │ +&vertexVertexMask, Crease::Rule parentRule=Crease::RULE_UNKNOWN, Crease::Rule │ │ │ │ │ +childRule=Crease::RULE_UNKNOWN) const │ │ │ │ │ +Vertex-vertex masks If known, a single Rule or pair of Rules can be specified │ │ │ │ │ +(indicating a crease tr... │ │ │ │ │ +DDeeffiinniittiioonn _s_c_h_e_m_e_._h_:_5_1_2 │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_S_c_h_e_m_e_:_:_a_s_s_i_g_n_C_r_e_a_s_e_L_i_m_i_t_T_a_n_g_e_n_t_M_a_s_k_s │ │ │ │ │ void assignCreaseLimitTangentMasks(VERTEX const &vertex, MASK &tan1, MASK │ │ │ │ │ &tan2, int const creaseEnds[2]) const │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_S_c_h_e_m_e_:_:_G_e_t_R_e_g_u_l_a_r_F_a_c_e_S_i_z_e │ │ │ │ │ static int GetRegularFaceSize() │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_S_c_h_e_m_e_:_:_C_o_m_p_u_t_e_E_d_g_e_V_e_r_t_e_x_M_a_s_k │ │ │ │ │ +void ComputeEdgeVertexMask(EDGE const &edgeNeighborhood, MASK &edgeVertexMask, │ │ │ │ │ +Crease::Rule parentRule=Crease::RULE_UNKNOWN, Crease::Rule childRule=Crease:: │ │ │ │ │ +RULE_UNKNOWN) const │ │ │ │ │ +Edge-vertex masks If known, the Rule for the edge and/or the derived vertex can │ │ │ │ │ +be specified to accel... │ │ │ │ │ +DDeeffiinniittiioonn _s_c_h_e_m_e_._h_:_3_9_2 │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_S_c_h_e_m_e_:_:_a_s_s_i_g_n_S_m_o_o_t_h_L_i_m_i_t_M_a_s_k │ │ │ │ │ void assignSmoothLimitMask(VERTEX const &vertex, MASK &pos) const │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_S_c_h_e_m_e_:_:_G_e_t_L_o_c_a_l_N_e_i_g_h_b_o_r_h_o_o_d_S_i_z_e │ │ │ │ │ static int GetLocalNeighborhoodSize() │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_S_c_h_e_m_e_:_:_a_s_s_i_g_n_C_r_e_a_s_e_L_i_m_i_t_M_a_s_k │ │ │ │ │ void assignCreaseLimitMask(VERTEX const &vertex, MASK &pos, int const │ │ │ │ │ creaseEnds[2]) const │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_S_c_h_e_m_e_:_:_a_s_s_i_g_n_S_m_o_o_t_h_M_a_s_k_F_o_r_V_e_r_t_e_x │ │ │ │ │ -void assignSmoothMaskForVertex(VERTEX const &edge, MASK &mask) const │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_S_c_h_e_m_e_:_:_G_e_t_R_e_g_u_l_a_r_V_e_r_t_e_x_V_a_l_e_n_c_e │ │ │ │ │ static int GetRegularVertexValence() │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_S_c_h_e_m_e_:_:_a_s_s_i_g_n_S_m_o_o_t_h_L_i_m_i_t_T_a_n_g_e_n_t_M_a_s_k_s │ │ │ │ │ void assignSmoothLimitTangentMasks(VERTEX const &vertex, MASK &tan1, MASK │ │ │ │ │ &tan2) const │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_S_c_h_e_m_e_:_:_a_s_s_i_g_n_C_o_r_n_e_r_L_i_m_i_t_M_a_s_k │ │ │ │ │ void assignCornerLimitMask(VERTEX const &vertex, MASK &pos) const │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_S_d_c_:_:_S_c_h_e_m_e_:_:_a_s_s_i_g_n_C_o_r_n_e_r_L_i_m_i_t_T_a_n_g_e_n_t_M_a_s_k_s │ │ │ │ │ void assignCornerLimitTangentMasks(VERTEX const &vertex, MASK &tan1, MASK │ │ │ │ │ &tan2) const │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _s_d_c │ │ │ │ │ - * _c_a_t_m_a_r_k_S_c_h_e_m_e_._h │ │ │ │ │ + * _b_i_l_i_n_e_a_r_S_c_h_e_m_e_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00788_source.html │ │ │ │ @@ -209,15 +209,15 @@ │ │ │ │
114} // end namespace OPENSUBDIV_VERSION
│ │ │ │
115using namespace OPENSUBDIV_VERSION;
│ │ │ │
116
│ │ │ │
117} // end namespace OpenSubdiv
│ │ │ │
118
│ │ │ │
119#endif // OPENSUBDIV3_OSD_CUDA_PATCH_TABLE_H
│ │ │ │ │ │ │ │ -
Container for arrays of parametric patches.
Definition patchTable.h:55
│ │ │ │ +
Container for arrays of parametric patches.
Definition patchTable.h:55
│ │ │ │ │ │ │ │
void * GetFVarPatchArrayBuffer(int fvarChannel) const
Returns the cuda memory of the array of Osd::PatchArray buffer.
│ │ │ │ │ │ │ │
static CudaPatchTable * Create(Far::PatchTable const *patchTable, void *deviceContext=NULL)
Creator. Returns NULL if error.
│ │ │ │ │ │ │ │
void * GetVaryingPatchIndexBuffer() const
Returns the cuda memory of the array of varying control vertices.
│ │ │ │ │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00797.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/osd/clEvaluator.h File Reference │ │ │ │ +OpenSubdiv: opensubdiv/osd/clPatchTable.h File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -90,30 +90,29 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
clEvaluator.h File Reference
│ │ │ │ +
clPatchTable.h File Reference
│ │ │ │
│ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ #include "../osd/opencl.h"
│ │ │ │ +#include "../osd/nonCopyable.h"
│ │ │ │ #include "../osd/types.h"
│ │ │ │ -#include "../osd/bufferDescriptor.h"
│ │ │ │ +#include <vector>
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  CLStencilTable
 OpenCL stencil table. More...
 
class  CLEvaluator
class  CLPatchTable
 CL patch table. More...
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -124,13 +123,13 @@ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  OpenSubdiv
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION
 
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,30 +1,29 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -clEvaluator.h File Reference │ │ │ │ │ +clPatchTable.h File Reference │ │ │ │ │ #include "../version.h" │ │ │ │ │ #include "_._._/_o_s_d_/_o_p_e_n_c_l_._h" │ │ │ │ │ +#include "../osd/nonCopyable.h" │ │ │ │ │ #include "_._._/_o_s_d_/_t_y_p_e_s_._h" │ │ │ │ │ -#include "_._._/_o_s_d_/_b_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r_._h" │ │ │ │ │ +#include │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -class   _C_L_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ -  OpenCL stencil table. _M_o_r_e_._._. │ │ │ │ │ -  │ │ │ │ │ -class   _C_L_E_v_a_l_u_a_t_o_r │ │ │ │ │ +class   _C_L_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ +  CL patch table. _M_o_r_e_._._. │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d │ │ │ │ │   │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _o_s_d │ │ │ │ │ - * _c_l_E_v_a_l_u_a_t_o_r_._h │ │ │ │ │ + * _c_l_P_a_t_c_h_T_a_b_l_e_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00797.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -1,4 +1,3 @@ │ │ │ │ │ var a00797 = [ │ │ │ │ │ - ["CLStencilTable", "a01145.html", "a01145"], │ │ │ │ │ - ["CLEvaluator", "a01149.html", "a01149"] │ │ │ │ │ + ["CLPatchTable", "a01153.html", "a01153"] │ │ │ │ │ ]; │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00797_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/osd/clEvaluator.h Source File │ │ │ │ +OpenSubdiv: opensubdiv/osd/clPatchTable.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -92,15 +92,15 @@ │ │ │ │
No Matches
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
clEvaluator.h
│ │ │ │ +
clPatchTable.h
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1//
│ │ │ │
2// Copyright 2015 Pixar
│ │ │ │
3//
│ │ │ │
4// Licensed under the Apache License, Version 2.0 (the "Apache License")
│ │ │ │
5// with the following modification; you may not use this file except in
│ │ │ │ @@ -119,1283 +119,124 @@ │ │ │ │
18// Unless required by applicable law or agreed to in writing, software
│ │ │ │
19// distributed under the Apache License with the above modification is
│ │ │ │
20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
│ │ │ │
21// KIND, either express or implied. See the Apache License for the specific
│ │ │ │
22// language governing permissions and limitations under the Apache License.
│ │ │ │
23//
│ │ │ │
24
│ │ │ │ -
25#ifndef OPENSUBDIV3_OSD_CL_EVALUATOR_H
│ │ │ │ -
26#define OPENSUBDIV3_OSD_CL_EVALUATOR_H
│ │ │ │ +
25#ifndef OPENSUBDIV3_OSD_CL_PATCH_TABLE_H
│ │ │ │ +
26#define OPENSUBDIV3_OSD_CL_PATCH_TABLE_H
│ │ │ │
27
│ │ │ │
28#include "../version.h"
│ │ │ │
29
│ │ │ │
30#include "../osd/opencl.h"
│ │ │ │ -
31#include "../osd/types.h"
│ │ │ │ -
32#include "../osd/bufferDescriptor.h"
│ │ │ │ +
31#include "../osd/nonCopyable.h"
│ │ │ │ +
32#include "../osd/types.h"
│ │ │ │
33
│ │ │ │ -
34namespace OpenSubdiv {
│ │ │ │ -
35namespace OPENSUBDIV_VERSION {
│ │ │ │ -
36
│ │ │ │ -
37namespace Far {
│ │ │ │ -
38 class PatchTable;
│ │ │ │ -
39 class StencilTable;
│ │ │ │ -
40 class LimitStencilTable;
│ │ │ │ -
41}
│ │ │ │ +
34#include <vector>
│ │ │ │ +
35
│ │ │ │ +
36namespace OpenSubdiv {
│ │ │ │ +
37namespace OPENSUBDIV_VERSION {
│ │ │ │ +
38
│ │ │ │ +
39namespace Far{
│ │ │ │ +
40 class PatchTable;
│ │ │ │ +
41};
│ │ │ │
42
│ │ │ │
43namespace Osd {
│ │ │ │
44
│ │ │ │
│ │ │ │ - │ │ │ │ +
52class CLPatchTable : private NonCopyable<CLPatchTable> {
│ │ │ │
53public:
│ │ │ │ -
54 template <typename DEVICE_CONTEXT>
│ │ │ │ -
│ │ │ │ -
55 static CLStencilTable *Create(Far::StencilTable const *stencilTable,
│ │ │ │ -
56 DEVICE_CONTEXT context) {
│ │ │ │ -
57 return new CLStencilTable(stencilTable, context->GetContext());
│ │ │ │ -
58 }
│ │ │ │ -
│ │ │ │ -
59
│ │ │ │ -
60 template <typename DEVICE_CONTEXT>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
62 Far::LimitStencilTable const *limitStencilTable,
│ │ │ │ -
63 DEVICE_CONTEXT context) {
│ │ │ │ -
64 return new CLStencilTable(limitStencilTable, context->GetContext());
│ │ │ │ -
65 }
│ │ │ │ +
55 static CLPatchTable *Create(Far::PatchTable const *patchTable,
│ │ │ │ +
56 cl_context clContext);
│ │ │ │ +
57
│ │ │ │ +
58 template <typename DEVICE_CONTEXT>
│ │ │ │ +
│ │ │ │ +
59 static CLPatchTable * Create(Far::PatchTable const *patchTable,
│ │ │ │ +
60 DEVICE_CONTEXT context) {
│ │ │ │ +
61 return Create(patchTable, context->GetContext());
│ │ │ │ +
62 }
│ │ │ │
│ │ │ │ +
63
│ │ │ │ + │ │ │ │
66
│ │ │ │ -
67 CLStencilTable(Far::StencilTable const *stencilTable,
│ │ │ │ -
68 cl_context clContext);
│ │ │ │ -
69 CLStencilTable(Far::LimitStencilTable const *limitStencilTable,
│ │ │ │ -
70 cl_context clContext);
│ │ │ │ - │ │ │ │ +
68 cl_mem GetPatchArrayBuffer() const { return _patchArrays; }
│ │ │ │ +
69
│ │ │ │ +
71 cl_mem GetPatchIndexBuffer() const { return _indexBuffer; }
│ │ │ │
72
│ │ │ │ -
73 // interfaces needed for CLComputeKernel
│ │ │ │ -
74 cl_mem GetSizesBuffer() const { return _sizes; }
│ │ │ │ -
75 cl_mem GetOffsetsBuffer() const { return _offsets; }
│ │ │ │ -
76 cl_mem GetIndicesBuffer() const { return _indices; }
│ │ │ │ -
77 cl_mem GetWeightsBuffer() const { return _weights; }
│ │ │ │ -
78 cl_mem GetDuWeightsBuffer() const { return _duWeights; }
│ │ │ │ -
79 cl_mem GetDvWeightsBuffer() const { return _dvWeights; }
│ │ │ │ -
80 cl_mem GetDuuWeightsBuffer() const { return _duuWeights; }
│ │ │ │ -
81 cl_mem GetDuvWeightsBuffer() const { return _duvWeights; }
│ │ │ │ -
82 cl_mem GetDvvWeightsBuffer() const { return _dvvWeights; }
│ │ │ │ -
83 int GetNumStencils() const { return _numStencils; }
│ │ │ │ +
74 cl_mem GetPatchParamBuffer() const { return _patchParamBuffer; }
│ │ │ │ +
75
│ │ │ │ + │ │ │ │ +
78
│ │ │ │ + │ │ │ │ +
81
│ │ │ │ +
83 int GetNumFVarChannels() const { return (int)_fvarPatchArrays.size(); }
│ │ │ │
84
│ │ │ │ -
85private:
│ │ │ │ -
86 cl_mem _sizes;
│ │ │ │ -
87 cl_mem _offsets;
│ │ │ │ -
88 cl_mem _indices;
│ │ │ │ -
89 cl_mem _weights;
│ │ │ │ -
90 cl_mem _duWeights;
│ │ │ │ -
91 cl_mem _dvWeights;
│ │ │ │ -
92 cl_mem _duuWeights;
│ │ │ │ -
93 cl_mem _duvWeights;
│ │ │ │ -
94 cl_mem _dvvWeights;
│ │ │ │ -
95 int _numStencils;
│ │ │ │ -
96};
│ │ │ │ -
│ │ │ │ -
97
│ │ │ │ -
98// ---------------------------------------------------------------------------
│ │ │ │ -
99
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
101public:
│ │ │ │ -
102 typedef bool Instantiatable;
│ │ │ │ -
103
│ │ │ │ -
105 template <typename DEVICE_CONTEXT>
│ │ │ │ -
│ │ │ │ -
106 static CLEvaluator *Create(BufferDescriptor const &srcDesc,
│ │ │ │ -
107 BufferDescriptor const &dstDesc,
│ │ │ │ -
108 BufferDescriptor const &duDesc,
│ │ │ │ -
109 BufferDescriptor const &dvDesc,
│ │ │ │ -
110 DEVICE_CONTEXT deviceContext) {
│ │ │ │ -
111 return Create(srcDesc, dstDesc, duDesc, dvDesc,
│ │ │ │ -
112 deviceContext->GetContext(),
│ │ │ │ -
113 deviceContext->GetCommandQueue());
│ │ │ │ -
114 }
│ │ │ │ -
│ │ │ │ -
115
│ │ │ │ -
│ │ │ │ -
116 static CLEvaluator * Create(BufferDescriptor const &srcDesc,
│ │ │ │ -
117 BufferDescriptor const &dstDesc,
│ │ │ │ -
118 BufferDescriptor const &duDesc,
│ │ │ │ -
119 BufferDescriptor const &dvDesc,
│ │ │ │ -
120 cl_context clContext,
│ │ │ │ -
121 cl_command_queue clCommandQueue) {
│ │ │ │ -
122 CLEvaluator *instance = new CLEvaluator(clContext, clCommandQueue);
│ │ │ │ -
123 if (instance->Compile(srcDesc, dstDesc, duDesc, dvDesc))
│ │ │ │ -
124 return instance;
│ │ │ │ -
125 delete instance;
│ │ │ │ -
126 return NULL;
│ │ │ │ -
127 }
│ │ │ │ -
│ │ │ │ -
128
│ │ │ │ -
130 template <typename DEVICE_CONTEXT>
│ │ │ │ -
│ │ │ │ -
131 static CLEvaluator *Create(BufferDescriptor const &srcDesc,
│ │ │ │ -
132 BufferDescriptor const &dstDesc,
│ │ │ │ -
133 BufferDescriptor const &duDesc,
│ │ │ │ -
134 BufferDescriptor const &dvDesc,
│ │ │ │ -
135 BufferDescriptor const &duuDesc,
│ │ │ │ -
136 BufferDescriptor const &duvDesc,
│ │ │ │ -
137 BufferDescriptor const &dvvDesc,
│ │ │ │ -
138 DEVICE_CONTEXT deviceContext) {
│ │ │ │ -
139 return Create(srcDesc, dstDesc, duDesc, dvDesc,
│ │ │ │ -
140 duuDesc, duvDesc, dvvDesc,
│ │ │ │ -
141 deviceContext->GetContext(),
│ │ │ │ -
142 deviceContext->GetCommandQueue());
│ │ │ │ -
143 }
│ │ │ │ -
│ │ │ │ -
144
│ │ │ │ -
│ │ │ │ -
145 static CLEvaluator * Create(BufferDescriptor const &srcDesc,
│ │ │ │ -
146 BufferDescriptor const &dstDesc,
│ │ │ │ -
147 BufferDescriptor const &duDesc,
│ │ │ │ -
148 BufferDescriptor const &dvDesc,
│ │ │ │ -
149 BufferDescriptor const &duuDesc,
│ │ │ │ -
150 BufferDescriptor const &duvDesc,
│ │ │ │ -
151 BufferDescriptor const &dvvDesc,
│ │ │ │ -
152 cl_context clContext,
│ │ │ │ -
153 cl_command_queue clCommandQueue) {
│ │ │ │ -
154 CLEvaluator *instance = new CLEvaluator(clContext, clCommandQueue);
│ │ │ │ -
155 if (instance->Compile(srcDesc, dstDesc, duDesc, dvDesc,
│ │ │ │ -
156 duuDesc, duvDesc, dvvDesc))
│ │ │ │ -
157 return instance;
│ │ │ │ -
158 delete instance;
│ │ │ │ -
159 return NULL;
│ │ │ │ -
160 }
│ │ │ │ -
│ │ │ │ -
161
│ │ │ │ -
163 CLEvaluator(cl_context context, cl_command_queue queue);
│ │ │ │ -
164
│ │ │ │ - │ │ │ │ -
167
│ │ │ │ -
173
│ │ │ │ -
217 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
218 typename STENCIL_TABLE, typename DEVICE_CONTEXT>
│ │ │ │ -
│ │ │ │ -
219 static bool EvalStencils(
│ │ │ │ -
220 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
221 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
222 STENCIL_TABLE const *stencilTable,
│ │ │ │ -
223 CLEvaluator const *instance,
│ │ │ │ -
224 DEVICE_CONTEXT deviceContext,
│ │ │ │ -
225 unsigned int numStartEvents=0,
│ │ │ │ -
226 const cl_event* startEvents=NULL,
│ │ │ │ -
227 cl_event* endEvent=NULL) {
│ │ │ │ -
228
│ │ │ │ -
229 if (instance) {
│ │ │ │ -
230 return instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │ -
231 dstBuffer, dstDesc,
│ │ │ │ -
232 stencilTable,
│ │ │ │ -
233 numStartEvents, startEvents, endEvent);
│ │ │ │ -
234 } else {
│ │ │ │ -
235 // Create an instance on demand (slow)
│ │ │ │ -
236 instance = Create(srcDesc, dstDesc,
│ │ │ │ - │ │ │ │ - │ │ │ │ -
239 deviceContext);
│ │ │ │ -
240 if (instance) {
│ │ │ │ -
241 bool r = instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │ -
242 dstBuffer, dstDesc,
│ │ │ │ -
243 stencilTable,
│ │ │ │ -
244 numStartEvents, startEvents, endEvent);
│ │ │ │ -
245 delete instance;
│ │ │ │ -
246 return r;
│ │ │ │ -
247 }
│ │ │ │ -
248 return false;
│ │ │ │ -
249 }
│ │ │ │ -
250 }
│ │ │ │ -
│ │ │ │ -
251
│ │ │ │ -
307 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
308 typename STENCIL_TABLE, typename DEVICE_CONTEXT>
│ │ │ │ -
│ │ │ │ -
309 static bool EvalStencils(
│ │ │ │ -
310 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
311 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
312 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
313 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
314 STENCIL_TABLE const *stencilTable,
│ │ │ │ -
315 CLEvaluator const *instance,
│ │ │ │ -
316 DEVICE_CONTEXT deviceContext,
│ │ │ │ -
317 unsigned int numStartEvents=0,
│ │ │ │ -
318 const cl_event* startEvents=NULL,
│ │ │ │ -
319 cl_event* endEvent=NULL) {
│ │ │ │ -
320
│ │ │ │ -
321 if (instance) {
│ │ │ │ -
322 return instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │ -
323 dstBuffer, dstDesc,
│ │ │ │ -
324 duBuffer, duDesc,
│ │ │ │ -
325 dvBuffer, dvDesc,
│ │ │ │ -
326 stencilTable,
│ │ │ │ -
327 numStartEvents, startEvents, endEvent);
│ │ │ │ -
328 } else {
│ │ │ │ -
329 // Create an instance on demand (slow)
│ │ │ │ -
330 instance = Create(srcDesc, dstDesc, duDesc, dvDesc,
│ │ │ │ -
331 deviceContext);
│ │ │ │ -
332 if (instance) {
│ │ │ │ -
333 bool r = instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │ -
334 dstBuffer, dstDesc,
│ │ │ │ -
335 duBuffer, duDesc,
│ │ │ │ -
336 dvBuffer, dvDesc,
│ │ │ │ -
337 stencilTable,
│ │ │ │ -
338 numStartEvents, startEvents, endEvent);
│ │ │ │ -
339 delete instance;
│ │ │ │ -
340 return r;
│ │ │ │ -
341 }
│ │ │ │ -
342 return false;
│ │ │ │ -
343 }
│ │ │ │ -
344 }
│ │ │ │ -
│ │ │ │ -
345
│ │ │ │ -
419 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
420 typename STENCIL_TABLE, typename DEVICE_CONTEXT>
│ │ │ │ -
│ │ │ │ -
421 static bool EvalStencils(
│ │ │ │ -
422 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
423 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
424 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
425 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
426 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ -
427 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ -
428 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ -
429 STENCIL_TABLE const *stencilTable,
│ │ │ │ -
430 CLEvaluator const *instance,
│ │ │ │ -
431 DEVICE_CONTEXT deviceContext,
│ │ │ │ -
432 unsigned int numStartEvents=0,
│ │ │ │ -
433 const cl_event* startEvents=NULL,
│ │ │ │ -
434 cl_event* endEvent=NULL) {
│ │ │ │ -
435
│ │ │ │ -
436 if (instance) {
│ │ │ │ -
437 return instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │ -
438 dstBuffer, dstDesc,
│ │ │ │ -
439 duBuffer, duDesc,
│ │ │ │ -
440 dvBuffer, dvDesc,
│ │ │ │ -
441 duuBuffer, duuDesc,
│ │ │ │ -
442 duvBuffer, duvDesc,
│ │ │ │ -
443 dvvBuffer, dvvDesc,
│ │ │ │ -
444 stencilTable,
│ │ │ │ -
445 numStartEvents, startEvents, endEvent);
│ │ │ │ -
446 } else {
│ │ │ │ -
447 // Create an instance on demand (slow)
│ │ │ │ -
448 instance = Create(srcDesc, dstDesc,
│ │ │ │ -
449 duDesc, dvDesc,
│ │ │ │ -
450 duuDesc, duvDesc, dvvDesc,
│ │ │ │ -
451 deviceContext);
│ │ │ │ -
452 if (instance) {
│ │ │ │ -
453 bool r = instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │ -
454 dstBuffer, dstDesc,
│ │ │ │ -
455 duBuffer, duDesc,
│ │ │ │ -
456 dvBuffer, dvDesc,
│ │ │ │ -
457 duuBuffer, duuDesc,
│ │ │ │ -
458 duvBuffer, duvDesc,
│ │ │ │ -
459 dvvBuffer, dvvDesc,
│ │ │ │ -
460 stencilTable,
│ │ │ │ -
461 numStartEvents, startEvents, endEvent);
│ │ │ │ -
462 delete instance;
│ │ │ │ -
463 return r;
│ │ │ │ -
464 }
│ │ │ │ -
465 return false;
│ │ │ │ -
466 }
│ │ │ │ -
467 }
│ │ │ │ -
│ │ │ │ -
468
│ │ │ │ -
499 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
501 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
502 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
503 STENCIL_TABLE const *stencilTable,
│ │ │ │ -
504 unsigned int numStartEvents=0,
│ │ │ │ -
505 const cl_event* startEvents=NULL,
│ │ │ │ -
506 cl_event* endEvent=NULL) const {
│ │ │ │ -
507 return EvalStencils(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,
│ │ │ │ -
508 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,
│ │ │ │ -
509 stencilTable->GetSizesBuffer(),
│ │ │ │ -
510 stencilTable->GetOffsetsBuffer(),
│ │ │ │ -
511 stencilTable->GetIndicesBuffer(),
│ │ │ │ -
512 stencilTable->GetWeightsBuffer(),
│ │ │ │ -
513 0,
│ │ │ │ -
514 stencilTable->GetNumStencils(),
│ │ │ │ -
515 numStartEvents, startEvents, endEvent);
│ │ │ │ -
516 }
│ │ │ │ -
│ │ │ │ -
517
│ │ │ │ -
560 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
562 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
563 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
564 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
565 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
566 STENCIL_TABLE const *stencilTable,
│ │ │ │ -
567 unsigned int numStartEvents=0,
│ │ │ │ -
568 const cl_event* startEvents=NULL,
│ │ │ │ -
569 cl_event* endEvent=NULL) const {
│ │ │ │ -
570 return EvalStencils(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,
│ │ │ │ -
571 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,
│ │ │ │ -
572 duBuffer->BindCLBuffer(_clCommandQueue), duDesc,
│ │ │ │ -
573 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc,
│ │ │ │ -
574 stencilTable->GetSizesBuffer(),
│ │ │ │ -
575 stencilTable->GetOffsetsBuffer(),
│ │ │ │ -
576 stencilTable->GetIndicesBuffer(),
│ │ │ │ -
577 stencilTable->GetWeightsBuffer(),
│ │ │ │ -
578 stencilTable->GetDuWeightsBuffer(),
│ │ │ │ -
579 stencilTable->GetDvWeightsBuffer(),
│ │ │ │ -
580 0,
│ │ │ │ -
581 stencilTable->GetNumStencils(),
│ │ │ │ -
582 numStartEvents, startEvents, endEvent);
│ │ │ │ -
583 }
│ │ │ │ -
│ │ │ │ -
584
│ │ │ │ -
645 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
647 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
648 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
649 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
650 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
651 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ -
652 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ -
653 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ -
654 STENCIL_TABLE const *stencilTable,
│ │ │ │ -
655 unsigned int numStartEvents=0,
│ │ │ │ -
656 const cl_event* startEvents=NULL,
│ │ │ │ -
657 cl_event* endEvent=NULL) const {
│ │ │ │ -
658 return EvalStencils(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,
│ │ │ │ -
659 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,
│ │ │ │ -
660 duBuffer->BindCLBuffer(_clCommandQueue), duDesc,
│ │ │ │ -
661 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc,
│ │ │ │ -
662 duuBuffer->BindCLBuffer(_clCommandQueue), duuDesc,
│ │ │ │ -
663 duvBuffer->BindCLBuffer(_clCommandQueue), duvDesc,
│ │ │ │ -
664 dvvBuffer->BindCLBuffer(_clCommandQueue), dvvDesc,
│ │ │ │ -
665 stencilTable->GetSizesBuffer(),
│ │ │ │ -
666 stencilTable->GetOffsetsBuffer(),
│ │ │ │ -
667 stencilTable->GetIndicesBuffer(),
│ │ │ │ -
668 stencilTable->GetWeightsBuffer(),
│ │ │ │ -
669 stencilTable->GetDuWeightsBuffer(),
│ │ │ │ -
670 stencilTable->GetDvWeightsBuffer(),
│ │ │ │ -
671 stencilTable->GetDuuWeightsBuffer(),
│ │ │ │ -
672 stencilTable->GetDuvWeightsBuffer(),
│ │ │ │ -
673 stencilTable->GetDvvWeightsBuffer(),
│ │ │ │ -
674 0,
│ │ │ │ -
675 stencilTable->GetNumStencils(),
│ │ │ │ -
676 numStartEvents, startEvents, endEvent);
│ │ │ │ -
677 }
│ │ │ │ -
│ │ │ │ -
678
│ │ │ │ -
681 bool EvalStencils(cl_mem src, BufferDescriptor const &srcDesc,
│ │ │ │ -
682 cl_mem dst, BufferDescriptor const &dstDesc,
│ │ │ │ -
683 cl_mem sizes,
│ │ │ │ -
684 cl_mem offsets,
│ │ │ │ -
685 cl_mem indices,
│ │ │ │ -
686 cl_mem weights,
│ │ │ │ -
687 int start,
│ │ │ │ -
688 int end,
│ │ │ │ -
689 unsigned int numStartEvents=0,
│ │ │ │ -
690 const cl_event* startEvents=NULL,
│ │ │ │ -
691 cl_event* endEvent=NULL) const;
│ │ │ │ -
692
│ │ │ │ -
741 bool EvalStencils(cl_mem src, BufferDescriptor const &srcDesc,
│ │ │ │ -
742 cl_mem dst, BufferDescriptor const &dstDesc,
│ │ │ │ -
743 cl_mem du, BufferDescriptor const &duDesc,
│ │ │ │ -
744 cl_mem dv, BufferDescriptor const &dvDesc,
│ │ │ │ -
745 cl_mem sizes,
│ │ │ │ -
746 cl_mem offsets,
│ │ │ │ -
747 cl_mem indices,
│ │ │ │ -
748 cl_mem weights,
│ │ │ │ -
749 cl_mem duWeights,
│ │ │ │ -
750 cl_mem dvWeights,
│ │ │ │ -
751 int start,
│ │ │ │ -
752 int end,
│ │ │ │ -
753 unsigned int numStartEvents=0,
│ │ │ │ -
754 const cl_event* startEvents=NULL,
│ │ │ │ -
755 cl_event* endEvent=NULL) const;
│ │ │ │ -
756
│ │ │ │ -
823 bool EvalStencils(cl_mem src, BufferDescriptor const &srcDesc,
│ │ │ │ -
824 cl_mem dst, BufferDescriptor const &dstDesc,
│ │ │ │ -
825 cl_mem du, BufferDescriptor const &duDesc,
│ │ │ │ -
826 cl_mem dv, BufferDescriptor const &dvDesc,
│ │ │ │ -
827 cl_mem duu, BufferDescriptor const &duuDesc,
│ │ │ │ -
828 cl_mem duv, BufferDescriptor const &duvDesc,
│ │ │ │ -
829 cl_mem dvv, BufferDescriptor const &dvvDesc,
│ │ │ │ -
830 cl_mem sizes,
│ │ │ │ -
831 cl_mem offsets,
│ │ │ │ -
832 cl_mem indices,
│ │ │ │ -
833 cl_mem weights,
│ │ │ │ -
834 cl_mem duWeights,
│ │ │ │ -
835 cl_mem dvWeights,
│ │ │ │ -
836 cl_mem duuWeights,
│ │ │ │ -
837 cl_mem duvWeights,
│ │ │ │ -
838 cl_mem dvvWeights,
│ │ │ │ -
839 int start,
│ │ │ │ -
840 int end,
│ │ │ │ -
841 unsigned int numStartEvents=0,
│ │ │ │ -
842 const cl_event* startEvents=NULL,
│ │ │ │ -
843 cl_event* endEvent=NULL) const;
│ │ │ │ -
844
│ │ │ │ -
850
│ │ │ │ -
899 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
900 typename PATCHCOORD_BUFFER, typename PATCH_TABLE,
│ │ │ │ -
901 typename DEVICE_CONTEXT>
│ │ │ │ -
│ │ │ │ -
902 static bool EvalPatches(
│ │ │ │ -
903 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
904 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
905 int numPatchCoords,
│ │ │ │ -
906 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
907 PATCH_TABLE *patchTable,
│ │ │ │ -
908 CLEvaluator const *instance,
│ │ │ │ -
909 DEVICE_CONTEXT deviceContext,
│ │ │ │ -
910 unsigned int numStartEvents=0,
│ │ │ │ -
911 const cl_event* startEvents=NULL,
│ │ │ │ -
912 cl_event* endEvent=NULL) {
│ │ │ │ -
913
│ │ │ │ -
914 if (instance) {
│ │ │ │ -
915 return instance->EvalPatches(srcBuffer, srcDesc,
│ │ │ │ -
916 dstBuffer, dstDesc,
│ │ │ │ -
917 numPatchCoords, patchCoords,
│ │ │ │ -
918 patchTable,
│ │ │ │ -
919 numStartEvents, startEvents, endEvent);
│ │ │ │ -
920 } else {
│ │ │ │ -
921 // Create an instance on demand (slow)
│ │ │ │ -
922 (void)deviceContext; // unused
│ │ │ │ -
923 instance = Create(srcDesc, dstDesc,
│ │ │ │ - │ │ │ │ - │ │ │ │ -
926 deviceContext);
│ │ │ │ -
927 if (instance) {
│ │ │ │ -
928 bool r = instance->EvalPatches(srcBuffer, srcDesc,
│ │ │ │ -
929 dstBuffer, dstDesc,
│ │ │ │ -
930 numPatchCoords, patchCoords,
│ │ │ │ -
931 patchTable,
│ │ │ │ -
932 numStartEvents, startEvents, endEvent);
│ │ │ │ -
933 delete instance;
│ │ │ │ -
934 return r;
│ │ │ │ -
935 }
│ │ │ │ -
936 return false;
│ │ │ │ -
937 }
│ │ │ │ -
938 }
│ │ │ │ -
│ │ │ │ -
939
│ │ │ │ -
1000 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1001 typename PATCHCOORD_BUFFER, typename PATCH_TABLE,
│ │ │ │ -
1002 typename DEVICE_CONTEXT>
│ │ │ │ -
│ │ │ │ -
1003 static bool EvalPatches(
│ │ │ │ -
1004 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1005 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1006 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
1007 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
1008 int numPatchCoords,
│ │ │ │ -
1009 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1010 PATCH_TABLE *patchTable,
│ │ │ │ -
1011 CLEvaluator const *instance,
│ │ │ │ -
1012 DEVICE_CONTEXT deviceContext,
│ │ │ │ -
1013 unsigned int numStartEvents=0,
│ │ │ │ -
1014 const cl_event* startEvents=NULL,
│ │ │ │ -
1015 cl_event* endEvent=NULL) {
│ │ │ │ -
1016
│ │ │ │ -
1017 if (instance) {
│ │ │ │ -
1018 return instance->EvalPatches(srcBuffer, srcDesc,
│ │ │ │ -
1019 dstBuffer, dstDesc,
│ │ │ │ -
1020 duBuffer, duDesc,
│ │ │ │ -
1021 dvBuffer, dvDesc,
│ │ │ │ -
1022 numPatchCoords, patchCoords,
│ │ │ │ -
1023 patchTable,
│ │ │ │ -
1024 numStartEvents, startEvents, endEvent);
│ │ │ │ -
1025 } else {
│ │ │ │ -
1026 // Create an instance on demand (slow)
│ │ │ │ -
1027 (void)deviceContext; // unused
│ │ │ │ -
1028 instance = Create(srcDesc, dstDesc, duDesc, dvDesc, deviceContext);
│ │ │ │ -
1029 if (instance) {
│ │ │ │ -
1030 bool r = instance->EvalPatches(srcBuffer, srcDesc,
│ │ │ │ -
1031 dstBuffer, dstDesc,
│ │ │ │ -
1032 duBuffer, duDesc,
│ │ │ │ -
1033 dvBuffer, dvDesc,
│ │ │ │ -
1034 numPatchCoords, patchCoords,
│ │ │ │ -
1035 patchTable,
│ │ │ │ -
1036 numStartEvents, startEvents, endEvent);
│ │ │ │ -
1037 delete instance;
│ │ │ │ -
1038 return r;
│ │ │ │ -
1039 }
│ │ │ │ -
1040 return false;
│ │ │ │ -
1041 }
│ │ │ │ -
1042 }
│ │ │ │ -
│ │ │ │ -
1043
│ │ │ │ -
1122 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1123 typename PATCHCOORD_BUFFER, typename PATCH_TABLE,
│ │ │ │ -
1124 typename DEVICE_CONTEXT>
│ │ │ │ -
│ │ │ │ -
1125 static bool EvalPatches(
│ │ │ │ -
1126 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1127 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1128 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
1129 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
1130 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ -
1131 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ -
1132 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ -
1133 int numPatchCoords,
│ │ │ │ -
1134 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1135 PATCH_TABLE *patchTable,
│ │ │ │ -
1136 CLEvaluator const *instance,
│ │ │ │ -
1137 DEVICE_CONTEXT deviceContext,
│ │ │ │ -
1138 unsigned int numStartEvents=0,
│ │ │ │ -
1139 const cl_event* startEvents=NULL,
│ │ │ │ -
1140 cl_event* endEvent=NULL) {
│ │ │ │ -
1141
│ │ │ │ -
1142 if (instance) {
│ │ │ │ -
1143 return instance->EvalPatches(srcBuffer, srcDesc,
│ │ │ │ -
1144 dstBuffer, dstDesc,
│ │ │ │ -
1145 duBuffer, duDesc,
│ │ │ │ -
1146 dvBuffer, dvDesc,
│ │ │ │ -
1147 duuBuffer, duuDesc,
│ │ │ │ -
1148 duvBuffer, duvDesc,
│ │ │ │ -
1149 dvvBuffer, dvvDesc,
│ │ │ │ -
1150 numPatchCoords, patchCoords,
│ │ │ │ -
1151 patchTable,
│ │ │ │ -
1152 numStartEvents, startEvents, endEvent);
│ │ │ │ -
1153 } else {
│ │ │ │ -
1154 // Create an instance on demand (slow)
│ │ │ │ -
1155 (void)deviceContext; // unused
│ │ │ │ -
1156 instance = Create(srcDesc, dstDesc,
│ │ │ │ -
1157 duDesc, dvDesc,
│ │ │ │ -
1158 duuDesc, duvDesc, dvvDesc,
│ │ │ │ -
1159 deviceContext);
│ │ │ │ -
1160 if (instance) {
│ │ │ │ -
1161 bool r = instance->EvalPatches(srcBuffer, srcDesc,
│ │ │ │ -
1162 dstBuffer, dstDesc,
│ │ │ │ -
1163 duBuffer, duDesc,
│ │ │ │ -
1164 dvBuffer, dvDesc,
│ │ │ │ -
1165 duuBuffer, duuDesc,
│ │ │ │ -
1166 duvBuffer, duvDesc,
│ │ │ │ -
1167 dvvBuffer, dvvDesc,
│ │ │ │ -
1168 numPatchCoords, patchCoords,
│ │ │ │ -
1169 patchTable,
│ │ │ │ -
1170 numStartEvents, startEvents, endEvent);
│ │ │ │ -
1171 delete instance;
│ │ │ │ -
1172 return r;
│ │ │ │ -
1173 }
│ │ │ │ -
1174 return false;
│ │ │ │ -
1175 }
│ │ │ │ -
1176 }
│ │ │ │ -
│ │ │ │ -
1177
│ │ │ │ -
1215 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1216 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1218 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1219 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1220 int numPatchCoords,
│ │ │ │ -
1221 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1222 PATCH_TABLE *patchTable,
│ │ │ │ -
1223 unsigned int numStartEvents=0,
│ │ │ │ -
1224 const cl_event* startEvents=NULL,
│ │ │ │ -
1225 cl_event* endEvent=NULL) const {
│ │ │ │ -
1226
│ │ │ │ -
1227 return EvalPatches(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,
│ │ │ │ -
1228 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,
│ │ │ │ -
1229 0, BufferDescriptor(),
│ │ │ │ -
1230 0, BufferDescriptor(),
│ │ │ │ -
1231 numPatchCoords,
│ │ │ │ -
1232 patchCoords->BindCLBuffer(_clCommandQueue),
│ │ │ │ -
1233 patchTable->GetPatchArrayBuffer(),
│ │ │ │ -
1234 patchTable->GetPatchIndexBuffer(),
│ │ │ │ -
1235 patchTable->GetPatchParamBuffer(),
│ │ │ │ -
1236 numStartEvents, startEvents, endEvent);
│ │ │ │ -
1237 }
│ │ │ │ -
│ │ │ │ -
1238
│ │ │ │ -
1286 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1287 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1289 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1290 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1291 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
1292 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
1293 int numPatchCoords,
│ │ │ │ -
1294 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1295 PATCH_TABLE *patchTable,
│ │ │ │ -
1296 unsigned int numStartEvents=0,
│ │ │ │ -
1297 const cl_event* startEvents=NULL,
│ │ │ │ -
1298 cl_event* endEvent=NULL) const {
│ │ │ │ -
1299
│ │ │ │ -
1300 return EvalPatches(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,
│ │ │ │ -
1301 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,
│ │ │ │ -
1302 duBuffer->BindCLBuffer(_clCommandQueue), duDesc,
│ │ │ │ -
1303 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc,
│ │ │ │ -
1304 numPatchCoords,
│ │ │ │ -
1305 patchCoords->BindCLBuffer(_clCommandQueue),
│ │ │ │ -
1306 patchTable->GetPatchArrayBuffer(),
│ │ │ │ -
1307 patchTable->GetPatchIndexBuffer(),
│ │ │ │ -
1308 patchTable->GetPatchParamBuffer(),
│ │ │ │ -
1309 numStartEvents, startEvents, endEvent);
│ │ │ │ -
1310 }
│ │ │ │ -
│ │ │ │ -
1311
│ │ │ │ -
1377 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1378 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1380 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1381 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1382 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
1383 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
1384 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ -
1385 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ -
1386 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ -
1387 int numPatchCoords,
│ │ │ │ -
1388 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1389 PATCH_TABLE *patchTable,
│ │ │ │ -
1390 unsigned int numStartEvents=0,
│ │ │ │ -
1391 const cl_event* startEvents=NULL,
│ │ │ │ -
1392 cl_event* endEvent=NULL) const {
│ │ │ │ -
1393
│ │ │ │ -
1394 return EvalPatches(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,
│ │ │ │ -
1395 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,
│ │ │ │ -
1396 duBuffer->BindCLBuffer(_clCommandQueue), duDesc,
│ │ │ │ -
1397 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc,
│ │ │ │ -
1398 duuBuffer->BindCLBuffer(_clCommandQueue), duuDesc,
│ │ │ │ -
1399 duvBuffer->BindCLBuffer(_clCommandQueue), duvDesc,
│ │ │ │ -
1400 dvvBuffer->BindCLBuffer(_clCommandQueue), dvvDesc,
│ │ │ │ -
1401 numPatchCoords,
│ │ │ │ -
1402 patchCoords->BindCLBuffer(_clCommandQueue),
│ │ │ │ -
1403 patchTable->GetPatchArrayBuffer(),
│ │ │ │ -
1404 patchTable->GetPatchIndexBuffer(),
│ │ │ │ -
1405 patchTable->GetPatchParamBuffer(),
│ │ │ │ -
1406 numStartEvents, startEvents, endEvent);
│ │ │ │ -
1407 }
│ │ │ │ -
│ │ │ │ -
1408
│ │ │ │ -
1409 bool EvalPatches(cl_mem src, BufferDescriptor const &srcDesc,
│ │ │ │ -
1410 cl_mem dst, BufferDescriptor const &dstDesc,
│ │ │ │ -
1411 cl_mem du, BufferDescriptor const &duDesc,
│ │ │ │ -
1412 cl_mem dv, BufferDescriptor const &dvDesc,
│ │ │ │ -
1413 int numPatchCoords,
│ │ │ │ -
1414 cl_mem patchCoordsBuffer,
│ │ │ │ -
1415 cl_mem patchArrayBuffer,
│ │ │ │ -
1416 cl_mem patchIndexBuffer,
│ │ │ │ -
1417 cl_mem patchParamsBuffer,
│ │ │ │ -
1418 unsigned int numStartEvents=0,
│ │ │ │ -
1419 const cl_event* startEvents=NULL,
│ │ │ │ -
1420 cl_event* endEvent=NULL) const;
│ │ │ │ -
1421
│ │ │ │ -
1422 bool EvalPatches(cl_mem src, BufferDescriptor const &srcDesc,
│ │ │ │ -
1423 cl_mem dst, BufferDescriptor const &dstDesc,
│ │ │ │ -
1424 cl_mem du, BufferDescriptor const &duDesc,
│ │ │ │ -
1425 cl_mem dv, BufferDescriptor const &dvDesc,
│ │ │ │ -
1426 cl_mem duu, BufferDescriptor const &duuDesc,
│ │ │ │ -
1427 cl_mem duv, BufferDescriptor const &duvDesc,
│ │ │ │ -
1428 cl_mem dvv, BufferDescriptor const &dvvDesc,
│ │ │ │ -
1429 int numPatchCoords,
│ │ │ │ -
1430 cl_mem patchCoordsBuffer,
│ │ │ │ -
1431 cl_mem patchArrayBuffer,
│ │ │ │ -
1432 cl_mem patchIndexBuffer,
│ │ │ │ -
1433 cl_mem patchParamsBuffer,
│ │ │ │ -
1434 unsigned int numStartEvents=0,
│ │ │ │ -
1435 const cl_event* startEvents=NULL,
│ │ │ │ -
1436 cl_event* endEvent=NULL) const;
│ │ │ │ -
1437
│ │ │ │ -
1486 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1487 typename PATCHCOORD_BUFFER, typename PATCH_TABLE,
│ │ │ │ -
1488 typename DEVICE_CONTEXT>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1490 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1491 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1492 int numPatchCoords,
│ │ │ │ -
1493 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1494 PATCH_TABLE *patchTable,
│ │ │ │ -
1495 CLEvaluator const *instance,
│ │ │ │ -
1496 DEVICE_CONTEXT deviceContext,
│ │ │ │ -
1497 unsigned int numStartEvents=0,
│ │ │ │ -
1498 const cl_event* startEvents=NULL,
│ │ │ │ -
1499 cl_event* endEvent=NULL) {
│ │ │ │ -
1500
│ │ │ │ -
1501 if (instance) {
│ │ │ │ -
1502 return instance->EvalPatchesVarying(
│ │ │ │ -
1503 srcBuffer, srcDesc,
│ │ │ │ -
1504 dstBuffer, dstDesc,
│ │ │ │ -
1505 numPatchCoords, patchCoords,
│ │ │ │ -
1506 patchTable,
│ │ │ │ -
1507 numStartEvents, startEvents, endEvent);
│ │ │ │ -
1508 } else {
│ │ │ │ -
1509 // Create an instance on demand (slow)
│ │ │ │ -
1510 (void)deviceContext; // unused
│ │ │ │ -
1511 instance = Create(srcDesc, dstDesc,
│ │ │ │ - │ │ │ │ - │ │ │ │ -
1514 deviceContext);
│ │ │ │ -
1515 if (instance) {
│ │ │ │ -
1516 bool r = instance->EvalPatchesVarying(
│ │ │ │ -
1517 srcBuffer, srcDesc,
│ │ │ │ -
1518 dstBuffer, dstDesc,
│ │ │ │ -
1519 numPatchCoords, patchCoords,
│ │ │ │ -
1520 patchTable,
│ │ │ │ -
1521 numStartEvents, startEvents, endEvent);
│ │ │ │ -
1522 delete instance;
│ │ │ │ -
1523 return r;
│ │ │ │ -
1524 }
│ │ │ │ -
1525 return false;
│ │ │ │ -
1526 }
│ │ │ │ -
1527 }
│ │ │ │ -
│ │ │ │ -
1528
│ │ │ │ -
1566 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1567 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1569 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1570 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1571 int numPatchCoords,
│ │ │ │ -
1572 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1573 PATCH_TABLE *patchTable,
│ │ │ │ -
1574 unsigned int numStartEvents=0,
│ │ │ │ -
1575 const cl_event* startEvents=NULL,
│ │ │ │ -
1576 cl_event* endEvent=NULL) const {
│ │ │ │ -
1577
│ │ │ │ -
1578 return EvalPatches(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,
│ │ │ │ -
1579 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,
│ │ │ │ -
1580 0, BufferDescriptor(),
│ │ │ │ -
1581 0, BufferDescriptor(),
│ │ │ │ -
1582 numPatchCoords,
│ │ │ │ -
1583 patchCoords->BindCLBuffer(_clCommandQueue),
│ │ │ │ -
1584 patchTable->GetVaryingPatchArrayBuffer(),
│ │ │ │ -
1585 patchTable->GetVaryingPatchIndexBuffer(),
│ │ │ │ -
1586 patchTable->GetPatchParamBuffer(),
│ │ │ │ -
1587 numStartEvents, startEvents, endEvent);
│ │ │ │ -
1588 }
│ │ │ │ -
│ │ │ │ -
1589
│ │ │ │ -
1650 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1651 typename PATCHCOORD_BUFFER, typename PATCH_TABLE,
│ │ │ │ -
1652 typename DEVICE_CONTEXT>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1654 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1655 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1656 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
1657 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
1658 int numPatchCoords,
│ │ │ │ -
1659 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1660 PATCH_TABLE *patchTable,
│ │ │ │ -
1661 CLEvaluator const *instance,
│ │ │ │ -
1662 DEVICE_CONTEXT deviceContext,
│ │ │ │ -
1663 unsigned int numStartEvents=0,
│ │ │ │ -
1664 const cl_event* startEvents=NULL,
│ │ │ │ -
1665 cl_event* endEvent=NULL) {
│ │ │ │ -
1666
│ │ │ │ -
1667 if (instance) {
│ │ │ │ -
1668 return instance->EvalPatchesVarying(
│ │ │ │ -
1669 srcBuffer, srcDesc,
│ │ │ │ -
1670 dstBuffer, dstDesc,
│ │ │ │ -
1671 duBuffer, duDesc,
│ │ │ │ -
1672 dvBuffer, dvDesc,
│ │ │ │ -
1673 numPatchCoords, patchCoords,
│ │ │ │ -
1674 patchTable,
│ │ │ │ -
1675 numStartEvents, startEvents, endEvent);
│ │ │ │ -
1676 } else {
│ │ │ │ -
1677 // Create an instance on demand (slow)
│ │ │ │ -
1678 (void)deviceContext; // unused
│ │ │ │ -
1679 instance = Create(srcDesc, dstDesc,
│ │ │ │ -
1680 duDesc, dvDesc,
│ │ │ │ -
1681 deviceContext);
│ │ │ │ -
1682 if (instance) {
│ │ │ │ -
1683 bool r = instance->EvalPatchesVarying(
│ │ │ │ -
1684 srcBuffer, srcDesc,
│ │ │ │ -
1685 dstBuffer, dstDesc,
│ │ │ │ -
1686 duBuffer, duDesc,
│ │ │ │ -
1687 dvBuffer, dvDesc,
│ │ │ │ -
1688 numPatchCoords, patchCoords,
│ │ │ │ -
1689 patchTable,
│ │ │ │ -
1690 numStartEvents, startEvents, endEvent);
│ │ │ │ -
1691 delete instance;
│ │ │ │ -
1692 return r;
│ │ │ │ -
1693 }
│ │ │ │ -
1694 return false;
│ │ │ │ -
1695 }
│ │ │ │ -
1696 }
│ │ │ │ -
│ │ │ │ -
1697
│ │ │ │ -
1747 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1748 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1750 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1751 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1752 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
1753 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
1754 int numPatchCoords,
│ │ │ │ -
1755 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1756 PATCH_TABLE *patchTable,
│ │ │ │ -
1757 unsigned int numStartEvents=0,
│ │ │ │ -
1758 const cl_event* startEvents=NULL,
│ │ │ │ -
1759 cl_event* endEvent=NULL) const {
│ │ │ │ -
1760
│ │ │ │ -
1761 return EvalPatches(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,
│ │ │ │ -
1762 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,
│ │ │ │ -
1763 duBuffer->BindCLBuffer(_clCommandQueue), duDesc,
│ │ │ │ -
1764 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc,
│ │ │ │ -
1765 numPatchCoords,
│ │ │ │ -
1766 patchCoords->BindCLBuffer(_clCommandQueue),
│ │ │ │ -
1767 patchTable->GetVaryingPatchArrayBuffer(),
│ │ │ │ -
1768 patchTable->GetVaryingPatchIndexBuffer(),
│ │ │ │ -
1769 patchTable->GetPatchParamBuffer(),
│ │ │ │ -
1770 numStartEvents, startEvents, endEvent);
│ │ │ │ -
1771 }
│ │ │ │ -
│ │ │ │ -
1772
│ │ │ │ -
1851 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1852 typename PATCHCOORD_BUFFER, typename PATCH_TABLE,
│ │ │ │ -
1853 typename DEVICE_CONTEXT>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1855 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1856 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1857 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
1858 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
1859 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ -
1860 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ -
1861 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ -
1862 int numPatchCoords,
│ │ │ │ -
1863 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1864 PATCH_TABLE *patchTable,
│ │ │ │ -
1865 CLEvaluator const *instance,
│ │ │ │ -
1866 DEVICE_CONTEXT deviceContext,
│ │ │ │ -
1867 unsigned int numStartEvents=0,
│ │ │ │ -
1868 const cl_event* startEvents=NULL,
│ │ │ │ -
1869 cl_event* endEvent=NULL) {
│ │ │ │ -
1870
│ │ │ │ -
1871 if (instance) {
│ │ │ │ -
1872 return instance->EvalPatchesVarying(
│ │ │ │ -
1873 srcBuffer, srcDesc,
│ │ │ │ -
1874 dstBuffer, dstDesc,
│ │ │ │ -
1875 duBuffer, duDesc,
│ │ │ │ -
1876 dvBuffer, dvDesc,
│ │ │ │ -
1877 duuBuffer, duuDesc,
│ │ │ │ -
1878 duvBuffer, duvDesc,
│ │ │ │ -
1879 dvvBuffer, dvvDesc,
│ │ │ │ -
1880 numPatchCoords, patchCoords,
│ │ │ │ -
1881 patchTable,
│ │ │ │ -
1882 numStartEvents, startEvents, endEvent);
│ │ │ │ -
1883 } else {
│ │ │ │ -
1884 // Create an instance on demand (slow)
│ │ │ │ -
1885 (void)deviceContext; // unused
│ │ │ │ -
1886 instance = Create(srcDesc, dstDesc,
│ │ │ │ -
1887 duDesc, dvDesc,
│ │ │ │ -
1888 duuDesc, duvDesc, dvvDesc,
│ │ │ │ -
1889 deviceContext);
│ │ │ │ -
1890 if (instance) {
│ │ │ │ -
1891 bool r = instance->EvalPatchesVarying(
│ │ │ │ -
1892 srcBuffer, srcDesc,
│ │ │ │ -
1893 dstBuffer, dstDesc,
│ │ │ │ -
1894 duBuffer, duDesc,
│ │ │ │ -
1895 dvBuffer, dvDesc,
│ │ │ │ -
1896 duuBuffer, duuDesc,
│ │ │ │ -
1897 duvBuffer, duvDesc,
│ │ │ │ -
1898 dvvBuffer, dvvDesc,
│ │ │ │ -
1899 numPatchCoords, patchCoords,
│ │ │ │ -
1900 patchTable,
│ │ │ │ -
1901 numStartEvents, startEvents, endEvent);
│ │ │ │ -
1902 delete instance;
│ │ │ │ -
1903 return r;
│ │ │ │ -
1904 }
│ │ │ │ -
1905 return false;
│ │ │ │ -
1906 }
│ │ │ │ -
1907 }
│ │ │ │ -
│ │ │ │ -
1908
│ │ │ │ -
1976 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1977 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1979 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1980 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1981 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
1982 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
1983 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ -
1984 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ -
1985 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ -
1986 int numPatchCoords,
│ │ │ │ -
1987 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1988 PATCH_TABLE *patchTable,
│ │ │ │ -
1989 unsigned int numStartEvents=0,
│ │ │ │ -
1990 const cl_event* startEvents=NULL,
│ │ │ │ -
1991 cl_event* endEvent=NULL) const {
│ │ │ │ -
1992
│ │ │ │ -
1993 return EvalPatches(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,
│ │ │ │ -
1994 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,
│ │ │ │ -
1995 duBuffer->BindCLBuffer(_clCommandQueue), duDesc,
│ │ │ │ -
1996 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc,
│ │ │ │ -
1997 duuBuffer->BindCLBuffer(_clCommandQueue), duuDesc,
│ │ │ │ -
1998 duvBuffer->BindCLBuffer(_clCommandQueue), duvDesc,
│ │ │ │ -
1999 dvvBuffer->BindCLBuffer(_clCommandQueue), dvvDesc,
│ │ │ │ -
2000 numPatchCoords,
│ │ │ │ -
2001 patchCoords->BindCLBuffer(_clCommandQueue),
│ │ │ │ -
2002 patchTable->GetVaryingPatchArrayBuffer(),
│ │ │ │ -
2003 patchTable->GetVaryingPatchIndexBuffer(),
│ │ │ │ -
2004 patchTable->GetPatchParamBuffer(),
│ │ │ │ -
2005 numStartEvents, startEvents, endEvent);
│ │ │ │ -
2006 }
│ │ │ │ -
│ │ │ │ -
2007
│ │ │ │ -
2058 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
2059 typename PATCHCOORD_BUFFER, typename PATCH_TABLE,
│ │ │ │ -
2060 typename DEVICE_CONTEXT>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
2062 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
2063 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
2064 int numPatchCoords,
│ │ │ │ -
2065 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
2066 PATCH_TABLE *patchTable,
│ │ │ │ -
2067 int fvarChannel,
│ │ │ │ -
2068 CLEvaluator const *instance,
│ │ │ │ -
2069 DEVICE_CONTEXT deviceContext,
│ │ │ │ -
2070 unsigned int numStartEvents=0,
│ │ │ │ -
2071 const cl_event* startEvents=NULL,
│ │ │ │ -
2072 cl_event* endEvent=NULL) {
│ │ │ │ -
2073
│ │ │ │ -
2074 if (instance) {
│ │ │ │ -
2075 return instance->EvalPatchesFaceVarying(
│ │ │ │ -
2076 srcBuffer, srcDesc,
│ │ │ │ -
2077 dstBuffer, dstDesc,
│ │ │ │ -
2078 numPatchCoords, patchCoords,
│ │ │ │ -
2079 patchTable, fvarChannel,
│ │ │ │ -
2080 numStartEvents, startEvents, endEvent);
│ │ │ │ -
2081 } else {
│ │ │ │ -
2082 // Create an instance on demand (slow)
│ │ │ │ -
2083 (void)deviceContext; // unused
│ │ │ │ -
2084 instance = Create(srcDesc, dstDesc,
│ │ │ │ - │ │ │ │ - │ │ │ │ -
2087 deviceContext);
│ │ │ │ -
2088 if (instance) {
│ │ │ │ -
2089 bool r = instance->EvalPatchesFaceVarying(
│ │ │ │ -
2090 srcBuffer, srcDesc,
│ │ │ │ -
2091 dstBuffer, dstDesc,
│ │ │ │ -
2092 numPatchCoords, patchCoords,
│ │ │ │ -
2093 patchTable, fvarChannel,
│ │ │ │ -
2094 numStartEvents, startEvents, endEvent);
│ │ │ │ -
2095 delete instance;
│ │ │ │ -
2096 return r;
│ │ │ │ -
2097 }
│ │ │ │ -
2098 return false;
│ │ │ │ -
2099 }
│ │ │ │ -
2100 }
│ │ │ │ -
│ │ │ │ -
2101
│ │ │ │ -
2141 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
2142 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
2144 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
2145 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
2146 int numPatchCoords,
│ │ │ │ -
2147 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
2148 PATCH_TABLE *patchTable,
│ │ │ │ -
2149 int fvarChannel = 0,
│ │ │ │ -
2150 unsigned int numStartEvents=0,
│ │ │ │ -
2151 const cl_event* startEvents=NULL,
│ │ │ │ -
2152 cl_event* endEvent=NULL) const {
│ │ │ │ -
2153
│ │ │ │ -
2154 return EvalPatches(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,
│ │ │ │ -
2155 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,
│ │ │ │ -
2156 0, BufferDescriptor(),
│ │ │ │ -
2157 0, BufferDescriptor(),
│ │ │ │ -
2158 numPatchCoords,
│ │ │ │ -
2159 patchCoords->BindCLBuffer(_clCommandQueue),
│ │ │ │ -
2160 patchTable->GetFVarPatchArrayBuffer(fvarChannel),
│ │ │ │ -
2161 patchTable->GetFVarPatchIndexBuffer(fvarChannel),
│ │ │ │ -
2162 patchTable->GetFVarPatchParamBuffer(fvarChannel),
│ │ │ │ -
2163 numStartEvents, startEvents, endEvent);
│ │ │ │ -
2164 }
│ │ │ │ -
│ │ │ │ -
2165
│ │ │ │ -
2228 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
2229 typename PATCHCOORD_BUFFER, typename PATCH_TABLE,
│ │ │ │ -
2230 typename DEVICE_CONTEXT>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
2232 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
2233 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
2234 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
2235 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
2236 int numPatchCoords,
│ │ │ │ -
2237 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
2238 PATCH_TABLE *patchTable,
│ │ │ │ -
2239 int fvarChannel,
│ │ │ │ -
2240 CLEvaluator const *instance,
│ │ │ │ -
2241 DEVICE_CONTEXT deviceContext,
│ │ │ │ -
2242 unsigned int numStartEvents=0,
│ │ │ │ -
2243 const cl_event* startEvents=NULL,
│ │ │ │ -
2244 cl_event* endEvent=NULL) {
│ │ │ │ -
2245
│ │ │ │ -
2246 if (instance) {
│ │ │ │ -
2247 return instance->EvalPatchesFaceVarying(
│ │ │ │ -
2248 srcBuffer, srcDesc,
│ │ │ │ -
2249 dstBuffer, dstDesc,
│ │ │ │ -
2250 duBuffer, duDesc,
│ │ │ │ -
2251 dvBuffer, dvDesc,
│ │ │ │ -
2252 numPatchCoords, patchCoords,
│ │ │ │ -
2253 patchTable, fvarChannel,
│ │ │ │ -
2254 numStartEvents, startEvents, endEvent);
│ │ │ │ -
2255 } else {
│ │ │ │ -
2256 // Create an instance on demand (slow)
│ │ │ │ -
2257 (void)deviceContext; // unused
│ │ │ │ -
2258 instance = Create(srcDesc, dstDesc,
│ │ │ │ -
2259 duDesc, dvDesc, deviceContext);
│ │ │ │ -
2260 if (instance) {
│ │ │ │ -
2261 bool r = instance->EvalPatchesFaceVarying(
│ │ │ │ -
2262 srcBuffer, srcDesc,
│ │ │ │ -
2263 dstBuffer, dstDesc,
│ │ │ │ -
2264 duBuffer, duDesc,
│ │ │ │ -
2265 dvBuffer, dvDesc,
│ │ │ │ -
2266 numPatchCoords, patchCoords,
│ │ │ │ -
2267 patchTable, fvarChannel,
│ │ │ │ -
2268 numStartEvents, startEvents, endEvent);
│ │ │ │ -
2269 delete instance;
│ │ │ │ -
2270 return r;
│ │ │ │ -
2271 }
│ │ │ │ -
2272 return false;
│ │ │ │ -
2273 }
│ │ │ │ -
2274 }
│ │ │ │ -
│ │ │ │ -
2275
│ │ │ │ -
2327 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
2328 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
2330 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
2331 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
2332 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
2333 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
2334 int numPatchCoords,
│ │ │ │ -
2335 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
2336 PATCH_TABLE *patchTable,
│ │ │ │ -
2337 int fvarChannel = 0,
│ │ │ │ -
2338 unsigned int numStartEvents=0,
│ │ │ │ -
2339 const cl_event* startEvents=NULL,
│ │ │ │ -
2340 cl_event* endEvent=NULL) const {
│ │ │ │ -
2341
│ │ │ │ -
2342 return EvalPatches(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,
│ │ │ │ -
2343 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,
│ │ │ │ -
2344 duBuffer->BindCLBuffer(_clCommandQueue), duDesc,
│ │ │ │ -
2345 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc,
│ │ │ │ -
2346 numPatchCoords,
│ │ │ │ -
2347 patchCoords->BindCLBuffer(_clCommandQueue),
│ │ │ │ -
2348 patchTable->GetFVarPatchArrayBuffer(fvarChannel),
│ │ │ │ -
2349 patchTable->GetFVarPatchIndexBuffer(fvarChannel),
│ │ │ │ -
2350 patchTable->GetFVarPatchParamBuffer(fvarChannel),
│ │ │ │ -
2351 numStartEvents, startEvents, endEvent);
│ │ │ │ -
2352 }
│ │ │ │ -
│ │ │ │ -
2353
│ │ │ │ -
2434 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
2435 typename PATCHCOORD_BUFFER, typename PATCH_TABLE,
│ │ │ │ -
2436 typename DEVICE_CONTEXT>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
2438 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
2439 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
2440 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
2441 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
2442 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ -
2443 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ -
2444 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ -
2445 int numPatchCoords,
│ │ │ │ -
2446 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
2447 PATCH_TABLE *patchTable,
│ │ │ │ -
2448 int fvarChannel,
│ │ │ │ -
2449 CLEvaluator const *instance,
│ │ │ │ -
2450 DEVICE_CONTEXT deviceContext,
│ │ │ │ -
2451 unsigned int numStartEvents=0,
│ │ │ │ -
2452 const cl_event* startEvents=NULL,
│ │ │ │ -
2453 cl_event* endEvent=NULL) {
│ │ │ │ -
2454
│ │ │ │ -
2455 if (instance) {
│ │ │ │ -
2456 return instance->EvalPatchesFaceVarying(
│ │ │ │ -
2457 srcBuffer, srcDesc,
│ │ │ │ -
2458 dstBuffer, dstDesc,
│ │ │ │ -
2459 duBuffer, duDesc,
│ │ │ │ -
2460 dvBuffer, dvDesc,
│ │ │ │ -
2461 duuBuffer, duuDesc,
│ │ │ │ -
2462 duvBuffer, duvDesc,
│ │ │ │ -
2463 dvvBuffer, dvvDesc,
│ │ │ │ -
2464 numPatchCoords, patchCoords,
│ │ │ │ -
2465 patchTable, fvarChannel,
│ │ │ │ -
2466 numStartEvents, startEvents, endEvent);
│ │ │ │ -
2467 } else {
│ │ │ │ -
2468 // Create an instance on demand (slow)
│ │ │ │ -
2469 (void)deviceContext; // unused
│ │ │ │ -
2470 instance = Create(srcDesc, dstDesc,
│ │ │ │ -
2471 duDesc, dvDesc,
│ │ │ │ -
2472 duuDesc, duvDesc, dvvDesc,
│ │ │ │ -
2473 deviceContext);
│ │ │ │ -
2474 if (instance) {
│ │ │ │ -
2475 bool r = instance->EvalPatchesFaceVarying(
│ │ │ │ -
2476 srcBuffer, srcDesc,
│ │ │ │ -
2477 dstBuffer, dstDesc,
│ │ │ │ -
2478 duBuffer, duDesc,
│ │ │ │ -
2479 dvBuffer, dvDesc,
│ │ │ │ -
2480 duuBuffer, duuDesc,
│ │ │ │ -
2481 duvBuffer, duvDesc,
│ │ │ │ -
2482 dvvBuffer, dvvDesc,
│ │ │ │ -
2483 numPatchCoords, patchCoords,
│ │ │ │ -
2484 patchTable, fvarChannel,
│ │ │ │ -
2485 numStartEvents, startEvents, endEvent);
│ │ │ │ -
2486 delete instance;
│ │ │ │ -
2487 return r;
│ │ │ │ -
2488 }
│ │ │ │ -
2489 return false;
│ │ │ │ -
2490 }
│ │ │ │ -
2491 }
│ │ │ │ -
│ │ │ │ -
2492
│ │ │ │ -
2562 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
2563 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
2565 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
2566 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
2567 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
2568 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
2569 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ -
2570 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ -
2571 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ -
2572 int numPatchCoords,
│ │ │ │ -
2573 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
2574 PATCH_TABLE *patchTable,
│ │ │ │ -
2575 int fvarChannel = 0,
│ │ │ │ -
2576 unsigned int numStartEvents=0,
│ │ │ │ -
2577 const cl_event* startEvents=NULL,
│ │ │ │ -
2578 cl_event* endEvent=NULL) const {
│ │ │ │ -
2579
│ │ │ │ -
2580 return EvalPatches(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,
│ │ │ │ -
2581 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,
│ │ │ │ -
2582 duBuffer->BindCLBuffer(_clCommandQueue), duDesc,
│ │ │ │ -
2583 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc,
│ │ │ │ -
2584 duuBuffer->BindCLBuffer(_clCommandQueue), duuDesc,
│ │ │ │ -
2585 duvBuffer->BindCLBuffer(_clCommandQueue), duvDesc,
│ │ │ │ -
2586 dvvBuffer->BindCLBuffer(_clCommandQueue), dvvDesc,
│ │ │ │ -
2587 numPatchCoords,
│ │ │ │ -
2588 patchCoords->BindCLBuffer(_clCommandQueue),
│ │ │ │ -
2589 patchTable->GetFVarPatchArrayBuffer(fvarChannel),
│ │ │ │ -
2590 patchTable->GetFVarPatchIndexBuffer(fvarChannel),
│ │ │ │ -
2591 patchTable->GetFVarPatchParamBuffer(fvarChannel),
│ │ │ │ -
2592 numStartEvents, startEvents, endEvent);
│ │ │ │ -
2593 }
│ │ │ │ -
│ │ │ │ -
2594
│ │ │ │ -
2600
│ │ │ │ -
2603 bool Compile(BufferDescriptor const &srcDesc,
│ │ │ │ -
2604 BufferDescriptor const &dstDesc,
│ │ │ │ -
2605 BufferDescriptor const &duDesc = BufferDescriptor(),
│ │ │ │ -
2606 BufferDescriptor const &dvDesc = BufferDescriptor(),
│ │ │ │ -
2607 BufferDescriptor const &duuDesc = BufferDescriptor(),
│ │ │ │ -
2608 BufferDescriptor const &duvDesc = BufferDescriptor(),
│ │ │ │ -
2609 BufferDescriptor const &dvvDesc = BufferDescriptor());
│ │ │ │ -
2610
│ │ │ │ -
2612 template <typename DEVICE_CONTEXT>
│ │ │ │ -
│ │ │ │ -
2613 static void Synchronize(DEVICE_CONTEXT deviceContext) {
│ │ │ │ -
2614 Synchronize(deviceContext->GetCommandQueue());
│ │ │ │ -
2615 }
│ │ │ │ -
│ │ │ │ -
2616
│ │ │ │ -
2617 static void Synchronize(cl_command_queue queue);
│ │ │ │ -
2618
│ │ │ │ -
2619private:
│ │ │ │ -
2620 cl_context _clContext;
│ │ │ │ -
2621 cl_command_queue _clCommandQueue;
│ │ │ │ -
2622 cl_program _program;
│ │ │ │ -
2623 cl_kernel _stencilKernel;
│ │ │ │ -
2624 cl_kernel _stencilDerivKernel;
│ │ │ │ -
2625 cl_kernel _patchKernel;
│ │ │ │ -
2626};
│ │ │ │ -
│ │ │ │ -
2627
│ │ │ │ -
2628} // end namespace Osd
│ │ │ │ -
2629
│ │ │ │ -
2630} // end namespace OPENSUBDIV_VERSION
│ │ │ │ -
2631using namespace OPENSUBDIV_VERSION;
│ │ │ │ -
2632
│ │ │ │ -
2633} // end namespace OpenSubdiv
│ │ │ │ -
2634
│ │ │ │ -
2635
│ │ │ │ -
2636#endif // OPENSUBDIV3_OSD_CL_EVALUATOR_H
│ │ │ │ +
86 cl_mem GetFVarPatchArrayBuffer(int fvarChannel = 0) const { return _fvarPatchArrays[fvarChannel]; }
│ │ │ │ +
87
│ │ │ │ +
89 cl_mem GetFVarPatchIndexBuffer(int fvarChannel = 0) const { return _fvarIndexBuffers[fvarChannel]; }
│ │ │ │ +
90
│ │ │ │ +
92 cl_mem GetFVarPatchParamBuffer(int fvarChannel = 0) const { return _fvarParamBuffers[fvarChannel]; }
│ │ │ │ +
93
│ │ │ │ +
94protected:
│ │ │ │ + │ │ │ │ +
96
│ │ │ │ +
97 bool allocate(Far::PatchTable const *patchTable, cl_context clContext);
│ │ │ │ +
98
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
102
│ │ │ │ + │ │ │ │ + │ │ │ │ +
105
│ │ │ │ +
106 std::vector<cl_mem> _fvarPatchArrays;
│ │ │ │ +
107 std::vector<cl_mem> _fvarIndexBuffers;
│ │ │ │ +
108 std::vector<cl_mem> _fvarParamBuffers;
│ │ │ │ +
109
│ │ │ │ +
110};
│ │ │ │ +
│ │ │ │ +
111
│ │ │ │ +
112} // end namespace Osd
│ │ │ │ +
113
│ │ │ │ +
114} // end namespace OPENSUBDIV_VERSION
│ │ │ │ +
115using namespace OPENSUBDIV_VERSION;
│ │ │ │ +
116
│ │ │ │ +
117} // end namespace OpenSubdiv
│ │ │ │ +
118
│ │ │ │ +
119#endif // OPENSUBDIV3_OSD_CL_PATCH_TABLE_H
│ │ │ │ │ │ │ │ -
Stencil table class wrapping the template for compatibility.
│ │ │ │ -
Limit stencil table class wrapping the template for compatibility.
│ │ │ │ -
BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....
│ │ │ │ - │ │ │ │ - │ │ │ │ -
CLStencilTable(Far::StencilTable const *stencilTable, cl_context clContext)
│ │ │ │ - │ │ │ │ -
static CLStencilTable * Create(Far::LimitStencilTable const *limitStencilTable, DEVICE_CONTEXT context)
Definition clEvaluator.h:61
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
static CLStencilTable * Create(Far::StencilTable const *stencilTable, DEVICE_CONTEXT context)
Definition clEvaluator.h:55
│ │ │ │ -
CLStencilTable(Far::LimitStencilTable const *limitStencilTable, cl_context clContext)
│ │ │ │ - │ │ │ │ - │ │ │ │ -
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)
Generic static stencil function. This function has a same signature as other device kernels have so t...
│ │ │ │ -
static void Synchronize(cl_command_queue queue)
│ │ │ │ - │ │ │ │ -
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
Dispatch the CL compute kernel asynchronously. returns false if the kernel hasn't been compiled yet.
│ │ │ │ -
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)
Generic static stencil function. This function has a same signature as other device kernels have so t...
│ │ │ │ -
static CLEvaluator * Create(BufferDescriptor const &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, cl_context clContext, cl_command_queue clCommandQueue)
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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
│ │ │ │ -
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
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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
Generic stencil function.
│ │ │ │ -
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
Generic limit eval function with derivatives. This function has a same signature as other device kern...
│ │ │ │ - │ │ │ │ -
static CLEvaluator * Create(BufferDescriptor const &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, DEVICE_CONTEXT deviceContext)
Generic creator template.
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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)
Generic creator template.
│ │ │ │ -
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
│ │ │ │ -
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
Dispatch the CL compute kernel asynchronously. returns false if the kernel hasn't been compiled yet.
│ │ │ │ -
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
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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
Generic stencil function.
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
static void Synchronize(DEVICE_CONTEXT deviceContext)
Wait the OpenCL kernels finish.
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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)
Generic static stencil function. This function has a same signature as other device kernels have so t...
│ │ │ │ -
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
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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)
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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
Generic stencil function.
│ │ │ │ -
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
Generic limit eval function with derivatives. This function has a same signature as other device kern...
│ │ │ │ -
CLEvaluator(cl_context context, cl_command_queue queue)
Constructor.
│ │ │ │ -
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())
│ │ │ │ -
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
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
Container for arrays of parametric patches.
Definition patchTable.h:55
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
cl_mem GetPatchParamBuffer() const
Returns the CL memory of the array of Osd::PatchParam buffer.
│ │ │ │ + │ │ │ │ +
cl_mem GetFVarPatchArrayBuffer(int fvarChannel=0) const
Returns the CL memory of the array of Osd::PatchArray buffer.
│ │ │ │ +
cl_mem GetPatchArrayBuffer() const
Returns the CL memory of the array of Osd::PatchArray buffer.
│ │ │ │ +
static CLPatchTable * Create(Far::PatchTable const *patchTable, cl_context clContext)
Creator. Returns NULL if error.
│ │ │ │ + │ │ │ │ +
cl_mem GetFVarPatchIndexBuffer(int fvarChannel=0) const
Returns the CL memory of the face-varying control vertices.
│ │ │ │ + │ │ │ │ +
cl_mem GetVaryingPatchIndexBuffer() const
Returns the CL memory of the varying control vertices.
│ │ │ │ +
int GetNumFVarChannels() const
Returns the number of face-varying channel buffers.
│ │ │ │ +
cl_mem GetPatchIndexBuffer() const
Returns the CL memory of the patch control vertices.
│ │ │ │ +
static CLPatchTable * Create(Far::PatchTable const *patchTable, DEVICE_CONTEXT context)
│ │ │ │ +
cl_mem GetFVarPatchParamBuffer(int fvarChannel=0) const
Returns the CL memory of the array of Osd::PatchParam buffer.
│ │ │ │ + │ │ │ │ +
bool allocate(Far::PatchTable const *patchTable, cl_context clContext)
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
cl_mem GetVaryingPatchArrayBuffer() const
Returns the CL memory of the array of Osd::PatchArray buffer.
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,12 +1,12 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ -clEvaluator.h │ │ │ │ │ +clPatchTable.h │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// │ │ │ │ │ 2// Copyright 2015 Pixar │ │ │ │ │ 3// │ │ │ │ │ 4// Licensed under the Apache License, Version 2.0 (the "Apache License") │ │ │ │ │ 5// with the following modification; you may not use this file except in │ │ │ │ │ 6// compliance with the Apache License and the following modification to it: │ │ │ │ │ @@ -24,1553 +24,174 @@ │ │ │ │ │ 18// Unless required by applicable law or agreed to in writing, software │ │ │ │ │ 19// distributed under the Apache License with the above modification is │ │ │ │ │ 20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY │ │ │ │ │ 21// KIND, either express or implied. See the Apache License for the specific │ │ │ │ │ 22// language governing permissions and limitations under the Apache License. │ │ │ │ │ 23// │ │ │ │ │ 24 │ │ │ │ │ -25#ifndef OPENSUBDIV3_OSD_CL_EVALUATOR_H │ │ │ │ │ -26#define OPENSUBDIV3_OSD_CL_EVALUATOR_H │ │ │ │ │ +25#ifndef OPENSUBDIV3_OSD_CL_PATCH_TABLE_H │ │ │ │ │ +26#define OPENSUBDIV3_OSD_CL_PATCH_TABLE_H │ │ │ │ │ 27 │ │ │ │ │ 28#include "../version.h" │ │ │ │ │ 29 │ │ │ │ │ 30#include "../osd/opencl.h" │ │ │ │ │ -31#include "../osd/types.h" │ │ │ │ │ -32#include "../osd/bufferDescriptor.h" │ │ │ │ │ +31#include "../osd/nonCopyable.h" │ │ │ │ │ +32#include "../osd/types.h" │ │ │ │ │ 33 │ │ │ │ │ -34namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ -35namespace OPENSUBDIV_VERSION { │ │ │ │ │ -36 │ │ │ │ │ -37namespace Far { │ │ │ │ │ -38 class PatchTable; │ │ │ │ │ -39 class StencilTable; │ │ │ │ │ -40 class LimitStencilTable; │ │ │ │ │ -41} │ │ │ │ │ +34#include │ │ │ │ │ +35 │ │ │ │ │ +36namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ +37namespace OPENSUBDIV_VERSION { │ │ │ │ │ +38 │ │ │ │ │ +39namespace Far{ │ │ │ │ │ +40 class PatchTable; │ │ │ │ │ +41}; │ │ │ │ │ 42 │ │ │ │ │ 43namespace Osd { │ │ │ │ │ 44 │ │ │ │ │ -_5_2class _C_L_S_t_e_n_c_i_l_T_a_b_l_e { │ │ │ │ │ +_5_2class _C_L_P_a_t_c_h_T_a_b_l_e : private NonCopyable { │ │ │ │ │ 53public: │ │ │ │ │ -54 template │ │ │ │ │ -_5_5 static _C_L_S_t_e_n_c_i_l_T_a_b_l_e *_C_r_e_a_t_e(_F_a_r_:_:_S_t_e_n_c_i_l_T_a_b_l_e const *stencilTable, │ │ │ │ │ -56 DEVICE_CONTEXT context) { │ │ │ │ │ -57 return new _C_L_S_t_e_n_c_i_l_T_a_b_l_e(stencilTable, context->GetContext()); │ │ │ │ │ -58 } │ │ │ │ │ -59 │ │ │ │ │ -60 template │ │ │ │ │ -_6_1 static _C_L_S_t_e_n_c_i_l_T_a_b_l_e *_C_r_e_a_t_e( │ │ │ │ │ -62 _F_a_r_:_:_L_i_m_i_t_S_t_e_n_c_i_l_T_a_b_l_e const *limitStencilTable, │ │ │ │ │ -63 DEVICE_CONTEXT context) { │ │ │ │ │ -64 return new _C_L_S_t_e_n_c_i_l_T_a_b_l_e(limitStencilTable, context->GetContext()); │ │ │ │ │ -65 } │ │ │ │ │ +_5_5 static _C_L_P_a_t_c_h_T_a_b_l_e *_C_r_e_a_t_e(_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e const *patchTable, │ │ │ │ │ +56 cl_context clContext); │ │ │ │ │ +57 │ │ │ │ │ +58 template │ │ │ │ │ +_5_9 static _C_L_P_a_t_c_h_T_a_b_l_e * _C_r_e_a_t_e(_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e const *patchTable, │ │ │ │ │ +60 DEVICE_CONTEXT context) { │ │ │ │ │ +61 return _C_r_e_a_t_e(patchTable, context->GetContext()); │ │ │ │ │ +62 } │ │ │ │ │ +63 │ │ │ │ │ +_6_5 _~_C_L_P_a_t_c_h_T_a_b_l_e(); │ │ │ │ │ 66 │ │ │ │ │ -_6_7 _C_L_S_t_e_n_c_i_l_T_a_b_l_e(_F_a_r_:_:_S_t_e_n_c_i_l_T_a_b_l_e const *stencilTable, │ │ │ │ │ -68 cl_context clContext); │ │ │ │ │ -_6_9 _C_L_S_t_e_n_c_i_l_T_a_b_l_e(_F_a_r_:_:_L_i_m_i_t_S_t_e_n_c_i_l_T_a_b_l_e const *limitStencilTable, │ │ │ │ │ -70 cl_context clContext); │ │ │ │ │ -_7_1 _~_C_L_S_t_e_n_c_i_l_T_a_b_l_e(); │ │ │ │ │ +_6_8 cl_mem _G_e_t_P_a_t_c_h_A_r_r_a_y_B_u_f_f_e_r() const { return ___p_a_t_c_h_A_r_r_a_y_s; } │ │ │ │ │ +69 │ │ │ │ │ +_7_1 cl_mem _G_e_t_P_a_t_c_h_I_n_d_e_x_B_u_f_f_e_r() const { return ___i_n_d_e_x_B_u_f_f_e_r; } │ │ │ │ │ 72 │ │ │ │ │ -73 // interfaces needed for CLComputeKernel │ │ │ │ │ -_7_4 cl_mem _G_e_t_S_i_z_e_s_B_u_f_f_e_r() const { return _sizes; } │ │ │ │ │ -_7_5 cl_mem _G_e_t_O_f_f_s_e_t_s_B_u_f_f_e_r() const { return _offsets; } │ │ │ │ │ -_7_6 cl_mem _G_e_t_I_n_d_i_c_e_s_B_u_f_f_e_r() const { return _indices; } │ │ │ │ │ -_7_7 cl_mem _G_e_t_W_e_i_g_h_t_s_B_u_f_f_e_r() const { return _weights; } │ │ │ │ │ -_7_8 cl_mem _G_e_t_D_u_W_e_i_g_h_t_s_B_u_f_f_e_r() const { return _duWeights; } │ │ │ │ │ -_7_9 cl_mem _G_e_t_D_v_W_e_i_g_h_t_s_B_u_f_f_e_r() const { return _dvWeights; } │ │ │ │ │ -_8_0 cl_mem _G_e_t_D_u_u_W_e_i_g_h_t_s_B_u_f_f_e_r() const { return _duuWeights; } │ │ │ │ │ -_8_1 cl_mem _G_e_t_D_u_v_W_e_i_g_h_t_s_B_u_f_f_e_r() const { return _duvWeights; } │ │ │ │ │ -_8_2 cl_mem _G_e_t_D_v_v_W_e_i_g_h_t_s_B_u_f_f_e_r() const { return _dvvWeights; } │ │ │ │ │ -_8_3 int _G_e_t_N_u_m_S_t_e_n_c_i_l_s() const { return _numStencils; } │ │ │ │ │ +_7_4 cl_mem _G_e_t_P_a_t_c_h_P_a_r_a_m_B_u_f_f_e_r() const { return ___p_a_t_c_h_P_a_r_a_m_B_u_f_f_e_r; } │ │ │ │ │ +75 │ │ │ │ │ +_7_7 cl_mem _G_e_t_V_a_r_y_i_n_g_P_a_t_c_h_A_r_r_a_y_B_u_f_f_e_r() const { return ___v_a_r_y_i_n_g_P_a_t_c_h_A_r_r_a_y_s; } │ │ │ │ │ +78 │ │ │ │ │ +_8_0 cl_mem _G_e_t_V_a_r_y_i_n_g_P_a_t_c_h_I_n_d_e_x_B_u_f_f_e_r() const { return ___v_a_r_y_i_n_g_I_n_d_e_x_B_u_f_f_e_r; } │ │ │ │ │ +81 │ │ │ │ │ +_8_3 int _G_e_t_N_u_m_F_V_a_r_C_h_a_n_n_e_l_s() const { return (int)___f_v_a_r_P_a_t_c_h_A_r_r_a_y_s.size(); } │ │ │ │ │ 84 │ │ │ │ │ -85private: │ │ │ │ │ -86 cl_mem _sizes; │ │ │ │ │ -87 cl_mem _offsets; │ │ │ │ │ -88 cl_mem _indices; │ │ │ │ │ -89 cl_mem _weights; │ │ │ │ │ -90 cl_mem _duWeights; │ │ │ │ │ -91 cl_mem _dvWeights; │ │ │ │ │ -92 cl_mem _duuWeights; │ │ │ │ │ -93 cl_mem _duvWeights; │ │ │ │ │ -94 cl_mem _dvvWeights; │ │ │ │ │ -95 int _numStencils; │ │ │ │ │ -96}; │ │ │ │ │ -97 │ │ │ │ │ -98// -------------------------------------------------------------------------- │ │ │ │ │ -- │ │ │ │ │ -99 │ │ │ │ │ -_1_0_0class _C_L_E_v_a_l_u_a_t_o_r { │ │ │ │ │ -101public: │ │ │ │ │ -_1_0_2 typedef bool _I_n_s_t_a_n_t_i_a_t_a_b_l_e; │ │ │ │ │ -103 │ │ │ │ │ -105 template │ │ │ │ │ -_1_0_6 static _C_L_E_v_a_l_u_a_t_o_r *_C_r_e_a_t_e(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -107 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -108 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -109 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -110 DEVICE_CONTEXT deviceContext) { │ │ │ │ │ -111 return _C_r_e_a_t_e(srcDesc, dstDesc, duDesc, dvDesc, │ │ │ │ │ -112 deviceContext->GetContext(), │ │ │ │ │ -113 deviceContext->GetCommandQueue()); │ │ │ │ │ -114 } │ │ │ │ │ -115 │ │ │ │ │ -_1_1_6 static _C_L_E_v_a_l_u_a_t_o_r * _C_r_e_a_t_e(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -117 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -118 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -119 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -120 cl_context clContext, │ │ │ │ │ -121 cl_command_queue clCommandQueue) { │ │ │ │ │ -122 _C_L_E_v_a_l_u_a_t_o_r *instance = new _C_L_E_v_a_l_u_a_t_o_r(clContext, clCommandQueue); │ │ │ │ │ -123 if (instance->_C_o_m_p_i_l_e(srcDesc, dstDesc, duDesc, dvDesc)) │ │ │ │ │ -124 return instance; │ │ │ │ │ -125 delete instance; │ │ │ │ │ -126 return NULL; │ │ │ │ │ -127 } │ │ │ │ │ -128 │ │ │ │ │ -130 template │ │ │ │ │ -_1_3_1 static _C_L_E_v_a_l_u_a_t_o_r *_C_r_e_a_t_e(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -132 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -133 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -134 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -135 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -136 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -137 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -138 DEVICE_CONTEXT deviceContext) { │ │ │ │ │ -139 return _C_r_e_a_t_e(srcDesc, dstDesc, duDesc, dvDesc, │ │ │ │ │ -140 duuDesc, duvDesc, dvvDesc, │ │ │ │ │ -141 deviceContext->GetContext(), │ │ │ │ │ -142 deviceContext->GetCommandQueue()); │ │ │ │ │ -143 } │ │ │ │ │ -144 │ │ │ │ │ -_1_4_5 static _C_L_E_v_a_l_u_a_t_o_r * _C_r_e_a_t_e(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -146 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -147 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -148 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -149 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -150 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -151 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -152 cl_context clContext, │ │ │ │ │ -153 cl_command_queue clCommandQueue) { │ │ │ │ │ -154 _C_L_E_v_a_l_u_a_t_o_r *instance = new _C_L_E_v_a_l_u_a_t_o_r(clContext, clCommandQueue); │ │ │ │ │ -155 if (instance->_C_o_m_p_i_l_e(srcDesc, dstDesc, duDesc, dvDesc, │ │ │ │ │ -156 duuDesc, duvDesc, dvvDesc)) │ │ │ │ │ -157 return instance; │ │ │ │ │ -158 delete instance; │ │ │ │ │ -159 return NULL; │ │ │ │ │ -160 } │ │ │ │ │ -161 │ │ │ │ │ -_1_6_3 _C_L_E_v_a_l_u_a_t_o_r(cl_context context, cl_command_queue queue); │ │ │ │ │ -164 │ │ │ │ │ -_1_6_6 _~_C_L_E_v_a_l_u_a_t_o_r(); │ │ │ │ │ -167 │ │ │ │ │ -173 │ │ │ │ │ -217 template │ │ │ │ │ -_2_1_9 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ -220 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -221 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -222 STENCIL_TABLE const *stencilTable, │ │ │ │ │ -223 _C_L_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ -224 DEVICE_CONTEXT deviceContext, │ │ │ │ │ -225 unsigned int numStartEvents=0, │ │ │ │ │ -226 const cl_event* startEvents=NULL, │ │ │ │ │ -227 cl_event* endEvent=NULL) { │ │ │ │ │ -228 │ │ │ │ │ -229 if (instance) { │ │ │ │ │ -230 return instance->_E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer, srcDesc, │ │ │ │ │ -231 dstBuffer, dstDesc, │ │ │ │ │ -232 stencilTable, │ │ │ │ │ -233 numStartEvents, startEvents, endEvent); │ │ │ │ │ -234 } else { │ │ │ │ │ -235 // Create an instance on demand (slow) │ │ │ │ │ -236 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ -237 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -238 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -239 deviceContext); │ │ │ │ │ -240 if (instance) { │ │ │ │ │ -241 bool r = instance->_E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer, srcDesc, │ │ │ │ │ -242 dstBuffer, dstDesc, │ │ │ │ │ -243 stencilTable, │ │ │ │ │ -244 numStartEvents, startEvents, endEvent); │ │ │ │ │ -245 delete instance; │ │ │ │ │ -246 return r; │ │ │ │ │ -247 } │ │ │ │ │ -248 return false; │ │ │ │ │ -249 } │ │ │ │ │ -250 } │ │ │ │ │ -251 │ │ │ │ │ -307 template │ │ │ │ │ -_3_0_9 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ -310 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -311 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -312 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -313 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -314 STENCIL_TABLE const *stencilTable, │ │ │ │ │ -315 _C_L_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ -316 DEVICE_CONTEXT deviceContext, │ │ │ │ │ -317 unsigned int numStartEvents=0, │ │ │ │ │ -318 const cl_event* startEvents=NULL, │ │ │ │ │ -319 cl_event* endEvent=NULL) { │ │ │ │ │ -320 │ │ │ │ │ -321 if (instance) { │ │ │ │ │ -322 return instance->_E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer, srcDesc, │ │ │ │ │ -323 dstBuffer, dstDesc, │ │ │ │ │ -324 duBuffer, duDesc, │ │ │ │ │ -325 dvBuffer, dvDesc, │ │ │ │ │ -326 stencilTable, │ │ │ │ │ -327 numStartEvents, startEvents, endEvent); │ │ │ │ │ -328 } else { │ │ │ │ │ -329 // Create an instance on demand (slow) │ │ │ │ │ -330 instance = _C_r_e_a_t_e(srcDesc, dstDesc, duDesc, dvDesc, │ │ │ │ │ -331 deviceContext); │ │ │ │ │ -332 if (instance) { │ │ │ │ │ -333 bool r = instance->_E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer, srcDesc, │ │ │ │ │ -334 dstBuffer, dstDesc, │ │ │ │ │ -335 duBuffer, duDesc, │ │ │ │ │ -336 dvBuffer, dvDesc, │ │ │ │ │ -337 stencilTable, │ │ │ │ │ -338 numStartEvents, startEvents, endEvent); │ │ │ │ │ -339 delete instance; │ │ │ │ │ -340 return r; │ │ │ │ │ -341 } │ │ │ │ │ -342 return false; │ │ │ │ │ -343 } │ │ │ │ │ -344 } │ │ │ │ │ -345 │ │ │ │ │ -419 template │ │ │ │ │ -_4_2_1 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ -422 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -423 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -424 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -425 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -426 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -427 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -428 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -429 STENCIL_TABLE const *stencilTable, │ │ │ │ │ -430 _C_L_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ -431 DEVICE_CONTEXT deviceContext, │ │ │ │ │ -432 unsigned int numStartEvents=0, │ │ │ │ │ -433 const cl_event* startEvents=NULL, │ │ │ │ │ -434 cl_event* endEvent=NULL) { │ │ │ │ │ -435 │ │ │ │ │ -436 if (instance) { │ │ │ │ │ -437 return instance->_E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer, srcDesc, │ │ │ │ │ -438 dstBuffer, dstDesc, │ │ │ │ │ -439 duBuffer, duDesc, │ │ │ │ │ -440 dvBuffer, dvDesc, │ │ │ │ │ -441 duuBuffer, duuDesc, │ │ │ │ │ -442 duvBuffer, duvDesc, │ │ │ │ │ -443 dvvBuffer, dvvDesc, │ │ │ │ │ -444 stencilTable, │ │ │ │ │ -445 numStartEvents, startEvents, endEvent); │ │ │ │ │ -446 } else { │ │ │ │ │ -447 // Create an instance on demand (slow) │ │ │ │ │ -448 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ -449 duDesc, dvDesc, │ │ │ │ │ -450 duuDesc, duvDesc, dvvDesc, │ │ │ │ │ -451 deviceContext); │ │ │ │ │ -452 if (instance) { │ │ │ │ │ -453 bool r = instance->_E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer, srcDesc, │ │ │ │ │ -454 dstBuffer, dstDesc, │ │ │ │ │ -455 duBuffer, duDesc, │ │ │ │ │ -456 dvBuffer, dvDesc, │ │ │ │ │ -457 duuBuffer, duuDesc, │ │ │ │ │ -458 duvBuffer, duvDesc, │ │ │ │ │ -459 dvvBuffer, dvvDesc, │ │ │ │ │ -460 stencilTable, │ │ │ │ │ -461 numStartEvents, startEvents, endEvent); │ │ │ │ │ -462 delete instance; │ │ │ │ │ -463 return r; │ │ │ │ │ -464 } │ │ │ │ │ -465 return false; │ │ │ │ │ -466 } │ │ │ │ │ -467 } │ │ │ │ │ -468 │ │ │ │ │ -499 template │ │ │ │ │ -_5_0_0 bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ -501 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -502 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -503 STENCIL_TABLE const *stencilTable, │ │ │ │ │ -504 unsigned int numStartEvents=0, │ │ │ │ │ -505 const cl_event* startEvents=NULL, │ │ │ │ │ -506 cl_event* endEvent=NULL) const { │ │ │ │ │ -507 return _E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc, │ │ │ │ │ -508 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc, │ │ │ │ │ -509 stencilTable->GetSizesBuffer(), │ │ │ │ │ -510 stencilTable->GetOffsetsBuffer(), │ │ │ │ │ -511 stencilTable->GetIndicesBuffer(), │ │ │ │ │ -512 stencilTable->GetWeightsBuffer(), │ │ │ │ │ -513 0, │ │ │ │ │ -514 stencilTable->GetNumStencils(), │ │ │ │ │ -515 numStartEvents, startEvents, endEvent); │ │ │ │ │ -516 } │ │ │ │ │ -517 │ │ │ │ │ -560 template │ │ │ │ │ -_5_6_1 bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ -562 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -563 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -564 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -565 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -566 STENCIL_TABLE const *stencilTable, │ │ │ │ │ -567 unsigned int numStartEvents=0, │ │ │ │ │ -568 const cl_event* startEvents=NULL, │ │ │ │ │ -569 cl_event* endEvent=NULL) const { │ │ │ │ │ -570 return _E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc, │ │ │ │ │ -571 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc, │ │ │ │ │ -572 duBuffer->BindCLBuffer(_clCommandQueue), duDesc, │ │ │ │ │ -573 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc, │ │ │ │ │ -574 stencilTable->GetSizesBuffer(), │ │ │ │ │ -575 stencilTable->GetOffsetsBuffer(), │ │ │ │ │ -576 stencilTable->GetIndicesBuffer(), │ │ │ │ │ -577 stencilTable->GetWeightsBuffer(), │ │ │ │ │ -578 stencilTable->GetDuWeightsBuffer(), │ │ │ │ │ -579 stencilTable->GetDvWeightsBuffer(), │ │ │ │ │ -580 0, │ │ │ │ │ -581 stencilTable->GetNumStencils(), │ │ │ │ │ -582 numStartEvents, startEvents, endEvent); │ │ │ │ │ -583 } │ │ │ │ │ -584 │ │ │ │ │ -645 template │ │ │ │ │ -_6_4_6 bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ -647 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -648 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -649 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -650 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -651 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -652 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -653 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -654 STENCIL_TABLE const *stencilTable, │ │ │ │ │ -655 unsigned int numStartEvents=0, │ │ │ │ │ -656 const cl_event* startEvents=NULL, │ │ │ │ │ -657 cl_event* endEvent=NULL) const { │ │ │ │ │ -658 return _E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc, │ │ │ │ │ -659 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc, │ │ │ │ │ -660 duBuffer->BindCLBuffer(_clCommandQueue), duDesc, │ │ │ │ │ -661 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc, │ │ │ │ │ -662 duuBuffer->BindCLBuffer(_clCommandQueue), duuDesc, │ │ │ │ │ -663 duvBuffer->BindCLBuffer(_clCommandQueue), duvDesc, │ │ │ │ │ -664 dvvBuffer->BindCLBuffer(_clCommandQueue), dvvDesc, │ │ │ │ │ -665 stencilTable->GetSizesBuffer(), │ │ │ │ │ -666 stencilTable->GetOffsetsBuffer(), │ │ │ │ │ -667 stencilTable->GetIndicesBuffer(), │ │ │ │ │ -668 stencilTable->GetWeightsBuffer(), │ │ │ │ │ -669 stencilTable->GetDuWeightsBuffer(), │ │ │ │ │ -670 stencilTable->GetDvWeightsBuffer(), │ │ │ │ │ -671 stencilTable->GetDuuWeightsBuffer(), │ │ │ │ │ -672 stencilTable->GetDuvWeightsBuffer(), │ │ │ │ │ -673 stencilTable->GetDvvWeightsBuffer(), │ │ │ │ │ -674 0, │ │ │ │ │ -675 stencilTable->GetNumStencils(), │ │ │ │ │ -676 numStartEvents, startEvents, endEvent); │ │ │ │ │ -677 } │ │ │ │ │ -678 │ │ │ │ │ -_6_8_1 bool _E_v_a_l_S_t_e_n_c_i_l_s(cl_mem src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -682 cl_mem dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -683 cl_mem sizes, │ │ │ │ │ -684 cl_mem offsets, │ │ │ │ │ -685 cl_mem indices, │ │ │ │ │ -686 cl_mem weights, │ │ │ │ │ -687 int start, │ │ │ │ │ -688 int end, │ │ │ │ │ -689 unsigned int numStartEvents=0, │ │ │ │ │ -690 const cl_event* startEvents=NULL, │ │ │ │ │ -691 cl_event* endEvent=NULL) const; │ │ │ │ │ -692 │ │ │ │ │ -_7_4_1 bool _E_v_a_l_S_t_e_n_c_i_l_s(cl_mem src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -742 cl_mem dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -743 cl_mem du, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -744 cl_mem dv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -745 cl_mem sizes, │ │ │ │ │ -746 cl_mem offsets, │ │ │ │ │ -747 cl_mem indices, │ │ │ │ │ -748 cl_mem weights, │ │ │ │ │ -749 cl_mem duWeights, │ │ │ │ │ -750 cl_mem dvWeights, │ │ │ │ │ -751 int start, │ │ │ │ │ -752 int end, │ │ │ │ │ -753 unsigned int numStartEvents=0, │ │ │ │ │ -754 const cl_event* startEvents=NULL, │ │ │ │ │ -755 cl_event* endEvent=NULL) const; │ │ │ │ │ -756 │ │ │ │ │ -_8_2_3 bool _E_v_a_l_S_t_e_n_c_i_l_s(cl_mem src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -824 cl_mem dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -825 cl_mem du, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -826 cl_mem dv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -827 cl_mem duu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -828 cl_mem duv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -829 cl_mem dvv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -830 cl_mem sizes, │ │ │ │ │ -831 cl_mem offsets, │ │ │ │ │ -832 cl_mem indices, │ │ │ │ │ -833 cl_mem weights, │ │ │ │ │ -834 cl_mem duWeights, │ │ │ │ │ -835 cl_mem dvWeights, │ │ │ │ │ -836 cl_mem duuWeights, │ │ │ │ │ -837 cl_mem duvWeights, │ │ │ │ │ -838 cl_mem dvvWeights, │ │ │ │ │ -839 int start, │ │ │ │ │ -840 int end, │ │ │ │ │ -841 unsigned int numStartEvents=0, │ │ │ │ │ -842 const cl_event* startEvents=NULL, │ │ │ │ │ -843 cl_event* endEvent=NULL) const; │ │ │ │ │ -844 │ │ │ │ │ -850 │ │ │ │ │ -899 template │ │ │ │ │ -_9_0_2 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ -903 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -904 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -905 int numPatchCoords, │ │ │ │ │ -906 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -907 PATCH_TABLE *patchTable, │ │ │ │ │ -908 _C_L_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ -909 DEVICE_CONTEXT deviceContext, │ │ │ │ │ -910 unsigned int numStartEvents=0, │ │ │ │ │ -911 const cl_event* startEvents=NULL, │ │ │ │ │ -912 cl_event* endEvent=NULL) { │ │ │ │ │ -913 │ │ │ │ │ -914 if (instance) { │ │ │ │ │ -915 return instance->_E_v_a_l_P_a_t_c_h_e_s(srcBuffer, srcDesc, │ │ │ │ │ -916 dstBuffer, dstDesc, │ │ │ │ │ -917 numPatchCoords, patchCoords, │ │ │ │ │ -918 patchTable, │ │ │ │ │ -919 numStartEvents, startEvents, endEvent); │ │ │ │ │ -920 } else { │ │ │ │ │ -921 // Create an instance on demand (slow) │ │ │ │ │ -922 (void)deviceContext; // unused │ │ │ │ │ -923 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ -924 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -925 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -926 deviceContext); │ │ │ │ │ -927 if (instance) { │ │ │ │ │ -928 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s(srcBuffer, srcDesc, │ │ │ │ │ -929 dstBuffer, dstDesc, │ │ │ │ │ -930 numPatchCoords, patchCoords, │ │ │ │ │ -931 patchTable, │ │ │ │ │ -932 numStartEvents, startEvents, endEvent); │ │ │ │ │ -933 delete instance; │ │ │ │ │ -934 return r; │ │ │ │ │ -935 } │ │ │ │ │ -936 return false; │ │ │ │ │ -937 } │ │ │ │ │ -938 } │ │ │ │ │ -939 │ │ │ │ │ -1000 template │ │ │ │ │ -_1_0_0_3 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ -1004 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1005 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1006 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -1007 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -1008 int numPatchCoords, │ │ │ │ │ -1009 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1010 PATCH_TABLE *patchTable, │ │ │ │ │ -1011 _C_L_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ -1012 DEVICE_CONTEXT deviceContext, │ │ │ │ │ -1013 unsigned int numStartEvents=0, │ │ │ │ │ -1014 const cl_event* startEvents=NULL, │ │ │ │ │ -1015 cl_event* endEvent=NULL) { │ │ │ │ │ -1016 │ │ │ │ │ -1017 if (instance) { │ │ │ │ │ -1018 return instance->_E_v_a_l_P_a_t_c_h_e_s(srcBuffer, srcDesc, │ │ │ │ │ -1019 dstBuffer, dstDesc, │ │ │ │ │ -1020 duBuffer, duDesc, │ │ │ │ │ -1021 dvBuffer, dvDesc, │ │ │ │ │ -1022 numPatchCoords, patchCoords, │ │ │ │ │ -1023 patchTable, │ │ │ │ │ -1024 numStartEvents, startEvents, endEvent); │ │ │ │ │ -1025 } else { │ │ │ │ │ -1026 // Create an instance on demand (slow) │ │ │ │ │ -1027 (void)deviceContext; // unused │ │ │ │ │ -1028 instance = _C_r_e_a_t_e(srcDesc, dstDesc, duDesc, dvDesc, deviceContext); │ │ │ │ │ -1029 if (instance) { │ │ │ │ │ -1030 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s(srcBuffer, srcDesc, │ │ │ │ │ -1031 dstBuffer, dstDesc, │ │ │ │ │ -1032 duBuffer, duDesc, │ │ │ │ │ -1033 dvBuffer, dvDesc, │ │ │ │ │ -1034 numPatchCoords, patchCoords, │ │ │ │ │ -1035 patchTable, │ │ │ │ │ -1036 numStartEvents, startEvents, endEvent); │ │ │ │ │ -1037 delete instance; │ │ │ │ │ -1038 return r; │ │ │ │ │ -1039 } │ │ │ │ │ -1040 return false; │ │ │ │ │ -1041 } │ │ │ │ │ -1042 } │ │ │ │ │ -1043 │ │ │ │ │ -1122 template │ │ │ │ │ -_1_1_2_5 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ -1126 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1127 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1128 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -1129 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -1130 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -1131 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -1132 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -1133 int numPatchCoords, │ │ │ │ │ -1134 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1135 PATCH_TABLE *patchTable, │ │ │ │ │ -1136 _C_L_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ -1137 DEVICE_CONTEXT deviceContext, │ │ │ │ │ -1138 unsigned int numStartEvents=0, │ │ │ │ │ -1139 const cl_event* startEvents=NULL, │ │ │ │ │ -1140 cl_event* endEvent=NULL) { │ │ │ │ │ -1141 │ │ │ │ │ -1142 if (instance) { │ │ │ │ │ -1143 return instance->_E_v_a_l_P_a_t_c_h_e_s(srcBuffer, srcDesc, │ │ │ │ │ -1144 dstBuffer, dstDesc, │ │ │ │ │ -1145 duBuffer, duDesc, │ │ │ │ │ -1146 dvBuffer, dvDesc, │ │ │ │ │ -1147 duuBuffer, duuDesc, │ │ │ │ │ -1148 duvBuffer, duvDesc, │ │ │ │ │ -1149 dvvBuffer, dvvDesc, │ │ │ │ │ -1150 numPatchCoords, patchCoords, │ │ │ │ │ -1151 patchTable, │ │ │ │ │ -1152 numStartEvents, startEvents, endEvent); │ │ │ │ │ -1153 } else { │ │ │ │ │ -1154 // Create an instance on demand (slow) │ │ │ │ │ -1155 (void)deviceContext; // unused │ │ │ │ │ -1156 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ -1157 duDesc, dvDesc, │ │ │ │ │ -1158 duuDesc, duvDesc, dvvDesc, │ │ │ │ │ -1159 deviceContext); │ │ │ │ │ -1160 if (instance) { │ │ │ │ │ -1161 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s(srcBuffer, srcDesc, │ │ │ │ │ -1162 dstBuffer, dstDesc, │ │ │ │ │ -1163 duBuffer, duDesc, │ │ │ │ │ -1164 dvBuffer, dvDesc, │ │ │ │ │ -1165 duuBuffer, duuDesc, │ │ │ │ │ -1166 duvBuffer, duvDesc, │ │ │ │ │ -1167 dvvBuffer, dvvDesc, │ │ │ │ │ -1168 numPatchCoords, patchCoords, │ │ │ │ │ -1169 patchTable, │ │ │ │ │ -1170 numStartEvents, startEvents, endEvent); │ │ │ │ │ -1171 delete instance; │ │ │ │ │ -1172 return r; │ │ │ │ │ -1173 } │ │ │ │ │ -1174 return false; │ │ │ │ │ -1175 } │ │ │ │ │ -1176 } │ │ │ │ │ -1177 │ │ │ │ │ -1215 template │ │ │ │ │ -_1_2_1_7 bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ -1218 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1219 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1220 int numPatchCoords, │ │ │ │ │ -1221 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1222 PATCH_TABLE *patchTable, │ │ │ │ │ -1223 unsigned int numStartEvents=0, │ │ │ │ │ -1224 const cl_event* startEvents=NULL, │ │ │ │ │ -1225 cl_event* endEvent=NULL) const { │ │ │ │ │ -1226 │ │ │ │ │ -1227 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc, │ │ │ │ │ -1228 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc, │ │ │ │ │ -1229 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -1230 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -1231 numPatchCoords, │ │ │ │ │ -1232 patchCoords->BindCLBuffer(_clCommandQueue), │ │ │ │ │ -1233 patchTable->GetPatchArrayBuffer(), │ │ │ │ │ -1234 patchTable->GetPatchIndexBuffer(), │ │ │ │ │ -1235 patchTable->GetPatchParamBuffer(), │ │ │ │ │ -1236 numStartEvents, startEvents, endEvent); │ │ │ │ │ -1237 } │ │ │ │ │ -1238 │ │ │ │ │ -1286 template │ │ │ │ │ -_1_2_8_8 bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ -1289 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1290 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1291 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -1292 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -1293 int numPatchCoords, │ │ │ │ │ -1294 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1295 PATCH_TABLE *patchTable, │ │ │ │ │ -1296 unsigned int numStartEvents=0, │ │ │ │ │ -1297 const cl_event* startEvents=NULL, │ │ │ │ │ -1298 cl_event* endEvent=NULL) const { │ │ │ │ │ -1299 │ │ │ │ │ -1300 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc, │ │ │ │ │ -1301 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc, │ │ │ │ │ -1302 duBuffer->BindCLBuffer(_clCommandQueue), duDesc, │ │ │ │ │ -1303 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc, │ │ │ │ │ -1304 numPatchCoords, │ │ │ │ │ -1305 patchCoords->BindCLBuffer(_clCommandQueue), │ │ │ │ │ -1306 patchTable->GetPatchArrayBuffer(), │ │ │ │ │ -1307 patchTable->GetPatchIndexBuffer(), │ │ │ │ │ -1308 patchTable->GetPatchParamBuffer(), │ │ │ │ │ -1309 numStartEvents, startEvents, endEvent); │ │ │ │ │ -1310 } │ │ │ │ │ -1311 │ │ │ │ │ -1377 template │ │ │ │ │ -_1_3_7_9 bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ -1380 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1381 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1382 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -1383 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -1384 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -1385 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -1386 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -1387 int numPatchCoords, │ │ │ │ │ -1388 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1389 PATCH_TABLE *patchTable, │ │ │ │ │ -1390 unsigned int numStartEvents=0, │ │ │ │ │ -1391 const cl_event* startEvents=NULL, │ │ │ │ │ -1392 cl_event* endEvent=NULL) const { │ │ │ │ │ -1393 │ │ │ │ │ -1394 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc, │ │ │ │ │ -1395 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc, │ │ │ │ │ -1396 duBuffer->BindCLBuffer(_clCommandQueue), duDesc, │ │ │ │ │ -1397 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc, │ │ │ │ │ -1398 duuBuffer->BindCLBuffer(_clCommandQueue), duuDesc, │ │ │ │ │ -1399 duvBuffer->BindCLBuffer(_clCommandQueue), duvDesc, │ │ │ │ │ -1400 dvvBuffer->BindCLBuffer(_clCommandQueue), dvvDesc, │ │ │ │ │ -1401 numPatchCoords, │ │ │ │ │ -1402 patchCoords->BindCLBuffer(_clCommandQueue), │ │ │ │ │ -1403 patchTable->GetPatchArrayBuffer(), │ │ │ │ │ -1404 patchTable->GetPatchIndexBuffer(), │ │ │ │ │ -1405 patchTable->GetPatchParamBuffer(), │ │ │ │ │ -1406 numStartEvents, startEvents, endEvent); │ │ │ │ │ -1407 } │ │ │ │ │ -1408 │ │ │ │ │ -_1_4_0_9 bool _E_v_a_l_P_a_t_c_h_e_s(cl_mem src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1410 cl_mem dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1411 cl_mem du, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -1412 cl_mem dv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -1413 int numPatchCoords, │ │ │ │ │ -1414 cl_mem patchCoordsBuffer, │ │ │ │ │ -1415 cl_mem patchArrayBuffer, │ │ │ │ │ -1416 cl_mem patchIndexBuffer, │ │ │ │ │ -1417 cl_mem patchParamsBuffer, │ │ │ │ │ -1418 unsigned int numStartEvents=0, │ │ │ │ │ -1419 const cl_event* startEvents=NULL, │ │ │ │ │ -1420 cl_event* endEvent=NULL) const; │ │ │ │ │ -1421 │ │ │ │ │ -_1_4_2_2 bool _E_v_a_l_P_a_t_c_h_e_s(cl_mem src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1423 cl_mem dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1424 cl_mem du, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -1425 cl_mem dv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -1426 cl_mem duu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -1427 cl_mem duv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -1428 cl_mem dvv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -1429 int numPatchCoords, │ │ │ │ │ -1430 cl_mem patchCoordsBuffer, │ │ │ │ │ -1431 cl_mem patchArrayBuffer, │ │ │ │ │ -1432 cl_mem patchIndexBuffer, │ │ │ │ │ -1433 cl_mem patchParamsBuffer, │ │ │ │ │ -1434 unsigned int numStartEvents=0, │ │ │ │ │ -1435 const cl_event* startEvents=NULL, │ │ │ │ │ -1436 cl_event* endEvent=NULL) const; │ │ │ │ │ -1437 │ │ │ │ │ -1486 template │ │ │ │ │ -_1_4_8_9 static bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -1490 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1491 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1492 int numPatchCoords, │ │ │ │ │ -1493 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1494 PATCH_TABLE *patchTable, │ │ │ │ │ -1495 _C_L_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ -1496 DEVICE_CONTEXT deviceContext, │ │ │ │ │ -1497 unsigned int numStartEvents=0, │ │ │ │ │ -1498 const cl_event* startEvents=NULL, │ │ │ │ │ -1499 cl_event* endEvent=NULL) { │ │ │ │ │ -1500 │ │ │ │ │ -1501 if (instance) { │ │ │ │ │ -1502 return instance->_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -1503 srcBuffer, srcDesc, │ │ │ │ │ -1504 dstBuffer, dstDesc, │ │ │ │ │ -1505 numPatchCoords, patchCoords, │ │ │ │ │ -1506 patchTable, │ │ │ │ │ -1507 numStartEvents, startEvents, endEvent); │ │ │ │ │ -1508 } else { │ │ │ │ │ -1509 // Create an instance on demand (slow) │ │ │ │ │ -1510 (void)deviceContext; // unused │ │ │ │ │ -1511 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ -1512 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -1513 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -1514 deviceContext); │ │ │ │ │ -1515 if (instance) { │ │ │ │ │ -1516 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -1517 srcBuffer, srcDesc, │ │ │ │ │ -1518 dstBuffer, dstDesc, │ │ │ │ │ -1519 numPatchCoords, patchCoords, │ │ │ │ │ -1520 patchTable, │ │ │ │ │ -1521 numStartEvents, startEvents, endEvent); │ │ │ │ │ -1522 delete instance; │ │ │ │ │ -1523 return r; │ │ │ │ │ -1524 } │ │ │ │ │ -1525 return false; │ │ │ │ │ -1526 } │ │ │ │ │ -1527 } │ │ │ │ │ -1528 │ │ │ │ │ -1566 template │ │ │ │ │ -_1_5_6_8 bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -1569 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1570 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1571 int numPatchCoords, │ │ │ │ │ -1572 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1573 PATCH_TABLE *patchTable, │ │ │ │ │ -1574 unsigned int numStartEvents=0, │ │ │ │ │ -1575 const cl_event* startEvents=NULL, │ │ │ │ │ -1576 cl_event* endEvent=NULL) const { │ │ │ │ │ -1577 │ │ │ │ │ -1578 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc, │ │ │ │ │ -1579 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc, │ │ │ │ │ -1580 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -1581 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -1582 numPatchCoords, │ │ │ │ │ -1583 patchCoords->BindCLBuffer(_clCommandQueue), │ │ │ │ │ -1584 patchTable->GetVaryingPatchArrayBuffer(), │ │ │ │ │ -1585 patchTable->GetVaryingPatchIndexBuffer(), │ │ │ │ │ -1586 patchTable->GetPatchParamBuffer(), │ │ │ │ │ -1587 numStartEvents, startEvents, endEvent); │ │ │ │ │ -1588 } │ │ │ │ │ -1589 │ │ │ │ │ -1650 template │ │ │ │ │ -_1_6_5_3 static bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -1654 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1655 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1656 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -1657 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -1658 int numPatchCoords, │ │ │ │ │ -1659 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1660 PATCH_TABLE *patchTable, │ │ │ │ │ -1661 _C_L_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ -1662 DEVICE_CONTEXT deviceContext, │ │ │ │ │ -1663 unsigned int numStartEvents=0, │ │ │ │ │ -1664 const cl_event* startEvents=NULL, │ │ │ │ │ -1665 cl_event* endEvent=NULL) { │ │ │ │ │ -1666 │ │ │ │ │ -1667 if (instance) { │ │ │ │ │ -1668 return instance->_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -1669 srcBuffer, srcDesc, │ │ │ │ │ -1670 dstBuffer, dstDesc, │ │ │ │ │ -1671 duBuffer, duDesc, │ │ │ │ │ -1672 dvBuffer, dvDesc, │ │ │ │ │ -1673 numPatchCoords, patchCoords, │ │ │ │ │ -1674 patchTable, │ │ │ │ │ -1675 numStartEvents, startEvents, endEvent); │ │ │ │ │ -1676 } else { │ │ │ │ │ -1677 // Create an instance on demand (slow) │ │ │ │ │ -1678 (void)deviceContext; // unused │ │ │ │ │ -1679 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ -1680 duDesc, dvDesc, │ │ │ │ │ -1681 deviceContext); │ │ │ │ │ -1682 if (instance) { │ │ │ │ │ -1683 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -1684 srcBuffer, srcDesc, │ │ │ │ │ -1685 dstBuffer, dstDesc, │ │ │ │ │ -1686 duBuffer, duDesc, │ │ │ │ │ -1687 dvBuffer, dvDesc, │ │ │ │ │ -1688 numPatchCoords, patchCoords, │ │ │ │ │ -1689 patchTable, │ │ │ │ │ -1690 numStartEvents, startEvents, endEvent); │ │ │ │ │ -1691 delete instance; │ │ │ │ │ -1692 return r; │ │ │ │ │ -1693 } │ │ │ │ │ -1694 return false; │ │ │ │ │ -1695 } │ │ │ │ │ -1696 } │ │ │ │ │ -1697 │ │ │ │ │ -1747 template │ │ │ │ │ -_1_7_4_9 bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -1750 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1751 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1752 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -1753 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -1754 int numPatchCoords, │ │ │ │ │ -1755 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1756 PATCH_TABLE *patchTable, │ │ │ │ │ -1757 unsigned int numStartEvents=0, │ │ │ │ │ -1758 const cl_event* startEvents=NULL, │ │ │ │ │ -1759 cl_event* endEvent=NULL) const { │ │ │ │ │ -1760 │ │ │ │ │ -1761 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc, │ │ │ │ │ -1762 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc, │ │ │ │ │ -1763 duBuffer->BindCLBuffer(_clCommandQueue), duDesc, │ │ │ │ │ -1764 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc, │ │ │ │ │ -1765 numPatchCoords, │ │ │ │ │ -1766 patchCoords->BindCLBuffer(_clCommandQueue), │ │ │ │ │ -1767 patchTable->GetVaryingPatchArrayBuffer(), │ │ │ │ │ -1768 patchTable->GetVaryingPatchIndexBuffer(), │ │ │ │ │ -1769 patchTable->GetPatchParamBuffer(), │ │ │ │ │ -1770 numStartEvents, startEvents, endEvent); │ │ │ │ │ -1771 } │ │ │ │ │ -1772 │ │ │ │ │ -1851 template │ │ │ │ │ -_1_8_5_4 static bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -1855 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1856 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1857 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -1858 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -1859 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -1860 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -1861 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -1862 int numPatchCoords, │ │ │ │ │ -1863 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1864 PATCH_TABLE *patchTable, │ │ │ │ │ -1865 _C_L_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ -1866 DEVICE_CONTEXT deviceContext, │ │ │ │ │ -1867 unsigned int numStartEvents=0, │ │ │ │ │ -1868 const cl_event* startEvents=NULL, │ │ │ │ │ -1869 cl_event* endEvent=NULL) { │ │ │ │ │ -1870 │ │ │ │ │ -1871 if (instance) { │ │ │ │ │ -1872 return instance->_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -1873 srcBuffer, srcDesc, │ │ │ │ │ -1874 dstBuffer, dstDesc, │ │ │ │ │ -1875 duBuffer, duDesc, │ │ │ │ │ -1876 dvBuffer, dvDesc, │ │ │ │ │ -1877 duuBuffer, duuDesc, │ │ │ │ │ -1878 duvBuffer, duvDesc, │ │ │ │ │ -1879 dvvBuffer, dvvDesc, │ │ │ │ │ -1880 numPatchCoords, patchCoords, │ │ │ │ │ -1881 patchTable, │ │ │ │ │ -1882 numStartEvents, startEvents, endEvent); │ │ │ │ │ -1883 } else { │ │ │ │ │ -1884 // Create an instance on demand (slow) │ │ │ │ │ -1885 (void)deviceContext; // unused │ │ │ │ │ -1886 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ -1887 duDesc, dvDesc, │ │ │ │ │ -1888 duuDesc, duvDesc, dvvDesc, │ │ │ │ │ -1889 deviceContext); │ │ │ │ │ -1890 if (instance) { │ │ │ │ │ -1891 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -1892 srcBuffer, srcDesc, │ │ │ │ │ -1893 dstBuffer, dstDesc, │ │ │ │ │ -1894 duBuffer, duDesc, │ │ │ │ │ -1895 dvBuffer, dvDesc, │ │ │ │ │ -1896 duuBuffer, duuDesc, │ │ │ │ │ -1897 duvBuffer, duvDesc, │ │ │ │ │ -1898 dvvBuffer, dvvDesc, │ │ │ │ │ -1899 numPatchCoords, patchCoords, │ │ │ │ │ -1900 patchTable, │ │ │ │ │ -1901 numStartEvents, startEvents, endEvent); │ │ │ │ │ -1902 delete instance; │ │ │ │ │ -1903 return r; │ │ │ │ │ -1904 } │ │ │ │ │ -1905 return false; │ │ │ │ │ -1906 } │ │ │ │ │ -1907 } │ │ │ │ │ -1908 │ │ │ │ │ -1976 template │ │ │ │ │ -_1_9_7_8 bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -1979 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1980 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1981 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -1982 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -1983 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -1984 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -1985 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -1986 int numPatchCoords, │ │ │ │ │ -1987 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1988 PATCH_TABLE *patchTable, │ │ │ │ │ -1989 unsigned int numStartEvents=0, │ │ │ │ │ -1990 const cl_event* startEvents=NULL, │ │ │ │ │ -1991 cl_event* endEvent=NULL) const { │ │ │ │ │ -1992 │ │ │ │ │ -1993 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc, │ │ │ │ │ -1994 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc, │ │ │ │ │ -1995 duBuffer->BindCLBuffer(_clCommandQueue), duDesc, │ │ │ │ │ -1996 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc, │ │ │ │ │ -1997 duuBuffer->BindCLBuffer(_clCommandQueue), duuDesc, │ │ │ │ │ -1998 duvBuffer->BindCLBuffer(_clCommandQueue), duvDesc, │ │ │ │ │ -1999 dvvBuffer->BindCLBuffer(_clCommandQueue), dvvDesc, │ │ │ │ │ -2000 numPatchCoords, │ │ │ │ │ -2001 patchCoords->BindCLBuffer(_clCommandQueue), │ │ │ │ │ -2002 patchTable->GetVaryingPatchArrayBuffer(), │ │ │ │ │ -2003 patchTable->GetVaryingPatchIndexBuffer(), │ │ │ │ │ -2004 patchTable->GetPatchParamBuffer(), │ │ │ │ │ -2005 numStartEvents, startEvents, endEvent); │ │ │ │ │ -2006 } │ │ │ │ │ -2007 │ │ │ │ │ -2058 template │ │ │ │ │ -_2_0_6_1 static bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -2062 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -2063 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -2064 int numPatchCoords, │ │ │ │ │ -2065 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -2066 PATCH_TABLE *patchTable, │ │ │ │ │ -2067 int fvarChannel, │ │ │ │ │ -2068 _C_L_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ -2069 DEVICE_CONTEXT deviceContext, │ │ │ │ │ -2070 unsigned int numStartEvents=0, │ │ │ │ │ -2071 const cl_event* startEvents=NULL, │ │ │ │ │ -2072 cl_event* endEvent=NULL) { │ │ │ │ │ -2073 │ │ │ │ │ -2074 if (instance) { │ │ │ │ │ -2075 return instance->_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -2076 srcBuffer, srcDesc, │ │ │ │ │ -2077 dstBuffer, dstDesc, │ │ │ │ │ -2078 numPatchCoords, patchCoords, │ │ │ │ │ -2079 patchTable, fvarChannel, │ │ │ │ │ -2080 numStartEvents, startEvents, endEvent); │ │ │ │ │ -2081 } else { │ │ │ │ │ -2082 // Create an instance on demand (slow) │ │ │ │ │ -2083 (void)deviceContext; // unused │ │ │ │ │ -2084 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ -2085 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -2086 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -2087 deviceContext); │ │ │ │ │ -2088 if (instance) { │ │ │ │ │ -2089 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -2090 srcBuffer, srcDesc, │ │ │ │ │ -2091 dstBuffer, dstDesc, │ │ │ │ │ -2092 numPatchCoords, patchCoords, │ │ │ │ │ -2093 patchTable, fvarChannel, │ │ │ │ │ -2094 numStartEvents, startEvents, endEvent); │ │ │ │ │ -2095 delete instance; │ │ │ │ │ -2096 return r; │ │ │ │ │ -2097 } │ │ │ │ │ -2098 return false; │ │ │ │ │ -2099 } │ │ │ │ │ -2100 } │ │ │ │ │ -2101 │ │ │ │ │ -2141 template │ │ │ │ │ -_2_1_4_3 bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -2144 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -2145 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -2146 int numPatchCoords, │ │ │ │ │ -2147 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -2148 PATCH_TABLE *patchTable, │ │ │ │ │ -2149 int fvarChannel = 0, │ │ │ │ │ -2150 unsigned int numStartEvents=0, │ │ │ │ │ -2151 const cl_event* startEvents=NULL, │ │ │ │ │ -2152 cl_event* endEvent=NULL) const { │ │ │ │ │ -2153 │ │ │ │ │ -2154 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc, │ │ │ │ │ -2155 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc, │ │ │ │ │ -2156 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -2157 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -2158 numPatchCoords, │ │ │ │ │ -2159 patchCoords->BindCLBuffer(_clCommandQueue), │ │ │ │ │ -2160 patchTable->GetFVarPatchArrayBuffer(fvarChannel), │ │ │ │ │ -2161 patchTable->GetFVarPatchIndexBuffer(fvarChannel), │ │ │ │ │ -2162 patchTable->GetFVarPatchParamBuffer(fvarChannel), │ │ │ │ │ -2163 numStartEvents, startEvents, endEvent); │ │ │ │ │ -2164 } │ │ │ │ │ -2165 │ │ │ │ │ -2228 template │ │ │ │ │ -_2_2_3_1 static bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -2232 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -2233 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -2234 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -2235 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -2236 int numPatchCoords, │ │ │ │ │ -2237 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -2238 PATCH_TABLE *patchTable, │ │ │ │ │ -2239 int fvarChannel, │ │ │ │ │ -2240 _C_L_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ -2241 DEVICE_CONTEXT deviceContext, │ │ │ │ │ -2242 unsigned int numStartEvents=0, │ │ │ │ │ -2243 const cl_event* startEvents=NULL, │ │ │ │ │ -2244 cl_event* endEvent=NULL) { │ │ │ │ │ -2245 │ │ │ │ │ -2246 if (instance) { │ │ │ │ │ -2247 return instance->_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -2248 srcBuffer, srcDesc, │ │ │ │ │ -2249 dstBuffer, dstDesc, │ │ │ │ │ -2250 duBuffer, duDesc, │ │ │ │ │ -2251 dvBuffer, dvDesc, │ │ │ │ │ -2252 numPatchCoords, patchCoords, │ │ │ │ │ -2253 patchTable, fvarChannel, │ │ │ │ │ -2254 numStartEvents, startEvents, endEvent); │ │ │ │ │ -2255 } else { │ │ │ │ │ -2256 // Create an instance on demand (slow) │ │ │ │ │ -2257 (void)deviceContext; // unused │ │ │ │ │ -2258 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ -2259 duDesc, dvDesc, deviceContext); │ │ │ │ │ -2260 if (instance) { │ │ │ │ │ -2261 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -2262 srcBuffer, srcDesc, │ │ │ │ │ -2263 dstBuffer, dstDesc, │ │ │ │ │ -2264 duBuffer, duDesc, │ │ │ │ │ -2265 dvBuffer, dvDesc, │ │ │ │ │ -2266 numPatchCoords, patchCoords, │ │ │ │ │ -2267 patchTable, fvarChannel, │ │ │ │ │ -2268 numStartEvents, startEvents, endEvent); │ │ │ │ │ -2269 delete instance; │ │ │ │ │ -2270 return r; │ │ │ │ │ -2271 } │ │ │ │ │ -2272 return false; │ │ │ │ │ -2273 } │ │ │ │ │ -2274 } │ │ │ │ │ -2275 │ │ │ │ │ -2327 template │ │ │ │ │ -_2_3_2_9 bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -2330 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -2331 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -2332 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -2333 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -2334 int numPatchCoords, │ │ │ │ │ -2335 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -2336 PATCH_TABLE *patchTable, │ │ │ │ │ -2337 int fvarChannel = 0, │ │ │ │ │ -2338 unsigned int numStartEvents=0, │ │ │ │ │ -2339 const cl_event* startEvents=NULL, │ │ │ │ │ -2340 cl_event* endEvent=NULL) const { │ │ │ │ │ -2341 │ │ │ │ │ -2342 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc, │ │ │ │ │ -2343 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc, │ │ │ │ │ -2344 duBuffer->BindCLBuffer(_clCommandQueue), duDesc, │ │ │ │ │ -2345 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc, │ │ │ │ │ -2346 numPatchCoords, │ │ │ │ │ -2347 patchCoords->BindCLBuffer(_clCommandQueue), │ │ │ │ │ -2348 patchTable->GetFVarPatchArrayBuffer(fvarChannel), │ │ │ │ │ -2349 patchTable->GetFVarPatchIndexBuffer(fvarChannel), │ │ │ │ │ -2350 patchTable->GetFVarPatchParamBuffer(fvarChannel), │ │ │ │ │ -2351 numStartEvents, startEvents, endEvent); │ │ │ │ │ -2352 } │ │ │ │ │ -2353 │ │ │ │ │ -2434 template │ │ │ │ │ -_2_4_3_7 static bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -2438 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -2439 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -2440 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -2441 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -2442 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -2443 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -2444 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -2445 int numPatchCoords, │ │ │ │ │ -2446 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -2447 PATCH_TABLE *patchTable, │ │ │ │ │ -2448 int fvarChannel, │ │ │ │ │ -2449 _C_L_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ -2450 DEVICE_CONTEXT deviceContext, │ │ │ │ │ -2451 unsigned int numStartEvents=0, │ │ │ │ │ -2452 const cl_event* startEvents=NULL, │ │ │ │ │ -2453 cl_event* endEvent=NULL) { │ │ │ │ │ -2454 │ │ │ │ │ -2455 if (instance) { │ │ │ │ │ -2456 return instance->_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -2457 srcBuffer, srcDesc, │ │ │ │ │ -2458 dstBuffer, dstDesc, │ │ │ │ │ -2459 duBuffer, duDesc, │ │ │ │ │ -2460 dvBuffer, dvDesc, │ │ │ │ │ -2461 duuBuffer, duuDesc, │ │ │ │ │ -2462 duvBuffer, duvDesc, │ │ │ │ │ -2463 dvvBuffer, dvvDesc, │ │ │ │ │ -2464 numPatchCoords, patchCoords, │ │ │ │ │ -2465 patchTable, fvarChannel, │ │ │ │ │ -2466 numStartEvents, startEvents, endEvent); │ │ │ │ │ -2467 } else { │ │ │ │ │ -2468 // Create an instance on demand (slow) │ │ │ │ │ -2469 (void)deviceContext; // unused │ │ │ │ │ -2470 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ -2471 duDesc, dvDesc, │ │ │ │ │ -2472 duuDesc, duvDesc, dvvDesc, │ │ │ │ │ -2473 deviceContext); │ │ │ │ │ -2474 if (instance) { │ │ │ │ │ -2475 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -2476 srcBuffer, srcDesc, │ │ │ │ │ -2477 dstBuffer, dstDesc, │ │ │ │ │ -2478 duBuffer, duDesc, │ │ │ │ │ -2479 dvBuffer, dvDesc, │ │ │ │ │ -2480 duuBuffer, duuDesc, │ │ │ │ │ -2481 duvBuffer, duvDesc, │ │ │ │ │ -2482 dvvBuffer, dvvDesc, │ │ │ │ │ -2483 numPatchCoords, patchCoords, │ │ │ │ │ -2484 patchTable, fvarChannel, │ │ │ │ │ -2485 numStartEvents, startEvents, endEvent); │ │ │ │ │ -2486 delete instance; │ │ │ │ │ -2487 return r; │ │ │ │ │ -2488 } │ │ │ │ │ -2489 return false; │ │ │ │ │ -2490 } │ │ │ │ │ -2491 } │ │ │ │ │ -2492 │ │ │ │ │ -2562 template │ │ │ │ │ -_2_5_6_4 bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -2565 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -2566 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -2567 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -2568 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -2569 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -2570 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -2571 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -2572 int numPatchCoords, │ │ │ │ │ -2573 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -2574 PATCH_TABLE *patchTable, │ │ │ │ │ -2575 int fvarChannel = 0, │ │ │ │ │ -2576 unsigned int numStartEvents=0, │ │ │ │ │ -2577 const cl_event* startEvents=NULL, │ │ │ │ │ -2578 cl_event* endEvent=NULL) const { │ │ │ │ │ -2579 │ │ │ │ │ -2580 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc, │ │ │ │ │ -2581 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc, │ │ │ │ │ -2582 duBuffer->BindCLBuffer(_clCommandQueue), duDesc, │ │ │ │ │ -2583 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc, │ │ │ │ │ -2584 duuBuffer->BindCLBuffer(_clCommandQueue), duuDesc, │ │ │ │ │ -2585 duvBuffer->BindCLBuffer(_clCommandQueue), duvDesc, │ │ │ │ │ -2586 dvvBuffer->BindCLBuffer(_clCommandQueue), dvvDesc, │ │ │ │ │ -2587 numPatchCoords, │ │ │ │ │ -2588 patchCoords->BindCLBuffer(_clCommandQueue), │ │ │ │ │ -2589 patchTable->GetFVarPatchArrayBuffer(fvarChannel), │ │ │ │ │ -2590 patchTable->GetFVarPatchIndexBuffer(fvarChannel), │ │ │ │ │ -2591 patchTable->GetFVarPatchParamBuffer(fvarChannel), │ │ │ │ │ -2592 numStartEvents, startEvents, endEvent); │ │ │ │ │ -2593 } │ │ │ │ │ -2594 │ │ │ │ │ -2600 │ │ │ │ │ -_2_6_0_3 bool _C_o_m_p_i_l_e(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -2604 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -2605 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc = _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -2606 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc = _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -2607 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc = _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -2608 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc = _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -2609 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc = _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r()); │ │ │ │ │ -2610 │ │ │ │ │ -2612 template │ │ │ │ │ -_2_6_1_3 static void _S_y_n_c_h_r_o_n_i_z_e(DEVICE_CONTEXT deviceContext) { │ │ │ │ │ -2614 _S_y_n_c_h_r_o_n_i_z_e(deviceContext->GetCommandQueue()); │ │ │ │ │ -2615 } │ │ │ │ │ -2616 │ │ │ │ │ -_2_6_1_7 static void _S_y_n_c_h_r_o_n_i_z_e(cl_command_queue queue); │ │ │ │ │ -2618 │ │ │ │ │ -2619private: │ │ │ │ │ -2620 cl_context _clContext; │ │ │ │ │ -2621 cl_command_queue _clCommandQueue; │ │ │ │ │ -2622 cl_program _program; │ │ │ │ │ -2623 cl_kernel _stencilKernel; │ │ │ │ │ -2624 cl_kernel _stencilDerivKernel; │ │ │ │ │ -2625 cl_kernel _patchKernel; │ │ │ │ │ -2626}; │ │ │ │ │ -2627 │ │ │ │ │ -2628} // end namespace Osd │ │ │ │ │ -2629 │ │ │ │ │ -2630} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ -2631using namespace OPENSUBDIV_VERSION; │ │ │ │ │ -2632 │ │ │ │ │ -2633} // end namespace OpenSubdiv │ │ │ │ │ -2634 │ │ │ │ │ -2635 │ │ │ │ │ -2636#endif // OPENSUBDIV3_OSD_CL_EVALUATOR_H │ │ │ │ │ +_8_6 cl_mem _G_e_t_F_V_a_r_P_a_t_c_h_A_r_r_a_y_B_u_f_f_e_r(int fvarChannel = 0) const { return │ │ │ │ │ +___f_v_a_r_P_a_t_c_h_A_r_r_a_y_s[fvarChannel]; } │ │ │ │ │ +87 │ │ │ │ │ +_8_9 cl_mem _G_e_t_F_V_a_r_P_a_t_c_h_I_n_d_e_x_B_u_f_f_e_r(int fvarChannel = 0) const { return │ │ │ │ │ +___f_v_a_r_I_n_d_e_x_B_u_f_f_e_r_s[fvarChannel]; } │ │ │ │ │ +90 │ │ │ │ │ +_9_2 cl_mem _G_e_t_F_V_a_r_P_a_t_c_h_P_a_r_a_m_B_u_f_f_e_r(int fvarChannel = 0) const { return │ │ │ │ │ +___f_v_a_r_P_a_r_a_m_B_u_f_f_e_r_s[fvarChannel]; } │ │ │ │ │ +93 │ │ │ │ │ +94protected: │ │ │ │ │ +_9_5 _C_L_P_a_t_c_h_T_a_b_l_e(); │ │ │ │ │ +96 │ │ │ │ │ +_9_7 bool _a_l_l_o_c_a_t_e(_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e const *patchTable, cl_context clContext); │ │ │ │ │ +98 │ │ │ │ │ +_9_9 cl_mem ___p_a_t_c_h_A_r_r_a_y_s; │ │ │ │ │ +_1_0_0 cl_mem ___i_n_d_e_x_B_u_f_f_e_r; │ │ │ │ │ +_1_0_1 cl_mem ___p_a_t_c_h_P_a_r_a_m_B_u_f_f_e_r; │ │ │ │ │ +102 │ │ │ │ │ +_1_0_3 cl_mem ___v_a_r_y_i_n_g_P_a_t_c_h_A_r_r_a_y_s; │ │ │ │ │ +_1_0_4 cl_mem ___v_a_r_y_i_n_g_I_n_d_e_x_B_u_f_f_e_r; │ │ │ │ │ +105 │ │ │ │ │ +_1_0_6 std::vector ___f_v_a_r_P_a_t_c_h_A_r_r_a_y_s; │ │ │ │ │ +_1_0_7 std::vector ___f_v_a_r_I_n_d_e_x_B_u_f_f_e_r_s; │ │ │ │ │ +_1_0_8 std::vector ___f_v_a_r_P_a_r_a_m_B_u_f_f_e_r_s; │ │ │ │ │ +109 │ │ │ │ │ +110}; │ │ │ │ │ +111 │ │ │ │ │ +112} // end namespace Osd │ │ │ │ │ +113 │ │ │ │ │ +114} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ +115using namespace OPENSUBDIV_VERSION; │ │ │ │ │ +116 │ │ │ │ │ +117} // end namespace OpenSubdiv │ │ │ │ │ +118 │ │ │ │ │ +119#endif // OPENSUBDIV3_OSD_CL_PATCH_TABLE_H │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v │ │ │ │ │ DDeeffiinniittiioonn _l_i_m_i_t_s_._h_:_3_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ -Stencil table class wrapping the template for compatibility. │ │ │ │ │ -DDeeffiinniittiioonn _s_t_e_n_c_i_l_T_a_b_l_e_._h_:_2_7_3 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_L_i_m_i_t_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ -Limit stencil table class wrapping the template for compatibility. │ │ │ │ │ -DDeeffiinniittiioonn _s_t_e_n_c_i_l_T_a_b_l_e_._h_:_5_8_3 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ -BufferDescriptor is a struct which describes buffer elements in interleaved │ │ │ │ │ -data buffers.... │ │ │ │ │ -DDeeffiinniittiioonn _b_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r_._h_:_6_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ -OpenCL stencil table. │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_5_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_S_t_e_n_c_i_l_T_a_b_l_e_:_:_G_e_t_D_v_v_W_e_i_g_h_t_s_B_u_f_f_e_r │ │ │ │ │ -cl_mem GetDvvWeightsBuffer() const │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_8_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_S_t_e_n_c_i_l_T_a_b_l_e_:_:_C_L_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ -CLStencilTable(Far::StencilTable const *stencilTable, cl_context clContext) │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_S_t_e_n_c_i_l_T_a_b_l_e_:_:_G_e_t_O_f_f_s_e_t_s_B_u_f_f_e_r │ │ │ │ │ -cl_mem GetOffsetsBuffer() const │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_7_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_S_t_e_n_c_i_l_T_a_b_l_e_:_:_C_r_e_a_t_e │ │ │ │ │ -static CLStencilTable * Create(Far::LimitStencilTable const *limitStencilTable, │ │ │ │ │ -DEVICE_CONTEXT context) │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_6_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_S_t_e_n_c_i_l_T_a_b_l_e_:_:_G_e_t_I_n_d_i_c_e_s_B_u_f_f_e_r │ │ │ │ │ -cl_mem GetIndicesBuffer() const │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_7_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_S_t_e_n_c_i_l_T_a_b_l_e_:_:_G_e_t_N_u_m_S_t_e_n_c_i_l_s │ │ │ │ │ -int GetNumStencils() const │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_8_3 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_S_t_e_n_c_i_l_T_a_b_l_e_:_:_G_e_t_S_i_z_e_s_B_u_f_f_e_r │ │ │ │ │ -cl_mem GetSizesBuffer() const │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_7_4 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_S_t_e_n_c_i_l_T_a_b_l_e_:_:_G_e_t_D_u_u_W_e_i_g_h_t_s_B_u_f_f_e_r │ │ │ │ │ -cl_mem GetDuuWeightsBuffer() const │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_8_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_S_t_e_n_c_i_l_T_a_b_l_e_:_:_G_e_t_D_v_W_e_i_g_h_t_s_B_u_f_f_e_r │ │ │ │ │ -cl_mem GetDvWeightsBuffer() const │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_7_9 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_S_t_e_n_c_i_l_T_a_b_l_e_:_:_G_e_t_D_u_v_W_e_i_g_h_t_s_B_u_f_f_e_r │ │ │ │ │ -cl_mem GetDuvWeightsBuffer() const │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_8_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_S_t_e_n_c_i_l_T_a_b_l_e_:_:_G_e_t_D_u_W_e_i_g_h_t_s_B_u_f_f_e_r │ │ │ │ │ -cl_mem GetDuWeightsBuffer() const │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_7_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_S_t_e_n_c_i_l_T_a_b_l_e_:_:_~_C_L_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ -~CLStencilTable() │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_S_t_e_n_c_i_l_T_a_b_l_e_:_:_C_r_e_a_t_e │ │ │ │ │ -static CLStencilTable * Create(Far::StencilTable const *stencilTable, │ │ │ │ │ -DEVICE_CONTEXT context) │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_5_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_S_t_e_n_c_i_l_T_a_b_l_e_:_:_C_L_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ -CLStencilTable(Far::LimitStencilTable const *limitStencilTable, cl_context │ │ │ │ │ -clContext) │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_S_t_e_n_c_i_l_T_a_b_l_e_:_:_G_e_t_W_e_i_g_h_t_s_B_u_f_f_e_r │ │ │ │ │ -cl_mem GetWeightsBuffer() const │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_7_7 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_1_0_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ -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) │ │ │ │ │ -Generic static stencil function. This function has a same signature as other │ │ │ │ │ -device kernels have so t... │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_3_0_9 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_S_y_n_c_h_r_o_n_i_z_e │ │ │ │ │ -static void Synchronize(cl_command_queue queue) │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_~_C_L_E_v_a_l_u_a_t_o_r │ │ │ │ │ -~CLEvaluator() │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ +Container for arrays of parametric patches. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_5_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ +CL patch table. │ │ │ │ │ +DDeeffiinniittiioonn _c_l_P_a_t_c_h_T_a_b_l_e_._h_:_5_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:___f_v_a_r_P_a_t_c_h_A_r_r_a_y_s │ │ │ │ │ +std::vector< cl_mem > _fvarPatchArrays │ │ │ │ │ +DDeeffiinniittiioonn _c_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_0_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:_~_C_L_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ +~CLPatchTable() │ │ │ │ │ Destructor. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ -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 │ │ │ │ │ -Dispatch the CL compute kernel asynchronously. returns false if the kernel │ │ │ │ │ -hasn't been compiled yet. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ -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) │ │ │ │ │ -Generic static stencil function. This function has a same signature as other │ │ │ │ │ -device kernels have so t... │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_2_1_9 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_C_r_e_a_t_e │ │ │ │ │ -static CLEvaluator * Create(BufferDescriptor const &srcDesc, BufferDescriptor │ │ │ │ │ -const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, │ │ │ │ │ -cl_context clContext, cl_command_queue clCommandQueue) │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_1_1_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_2_2_3_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ -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 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ -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 │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_1_9_7_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ -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 │ │ │ │ │ -Generic stencil function. │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_5_6_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ -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 │ │ │ │ │ -Generic limit eval function with derivatives. This function has a same │ │ │ │ │ -signature as other device kern... │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_1_3_7_9 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_I_n_s_t_a_n_t_i_a_t_a_b_l_e │ │ │ │ │ -bool Instantiatable │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_1_0_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_C_r_e_a_t_e │ │ │ │ │ -static CLEvaluator * Create(BufferDescriptor const &srcDesc, BufferDescriptor │ │ │ │ │ -const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, │ │ │ │ │ -DEVICE_CONTEXT deviceContext) │ │ │ │ │ -Generic creator template. │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_1_0_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_2_0_6_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_C_r_e_a_t_e │ │ │ │ │ -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) │ │ │ │ │ -Generic creator template. │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_1_3_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ -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 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ -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 │ │ │ │ │ -Dispatch the CL compute kernel asynchronously. returns false if the kernel │ │ │ │ │ -hasn't been compiled yet. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ -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 │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_2_5_6_4 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ -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 │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_1_2_1_7 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ -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 │ │ │ │ │ -Generic stencil function. │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_6_4_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_1_6_5_3 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_S_y_n_c_h_r_o_n_i_z_e │ │ │ │ │ -static void Synchronize(DEVICE_CONTEXT deviceContext) │ │ │ │ │ -Wait the OpenCL kernels finish. │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_2_6_1_3 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_1_1_2_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ -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) │ │ │ │ │ -Generic static stencil function. This function has a same signature as other │ │ │ │ │ -device kernels have so t... │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_4_2_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ -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 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_1_4_8_9 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ -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 │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_2_3_2_9 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_2_4_3_7 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_C_r_e_a_t_e │ │ │ │ │ -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) │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_1_4_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_1_0_0_3 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ -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 │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_1_7_4_9 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_9_0_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ -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 │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_1_5_6_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_1_8_5_4 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ -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 │ │ │ │ │ -Generic stencil function. │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_5_0_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ -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 │ │ │ │ │ -Generic limit eval function with derivatives. This function has a same │ │ │ │ │ -signature as other device kern... │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_1_2_8_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_C_L_E_v_a_l_u_a_t_o_r │ │ │ │ │ -CLEvaluator(cl_context context, cl_command_queue queue) │ │ │ │ │ -Constructor. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_C_o_m_p_i_l_e │ │ │ │ │ -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()) │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ -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 │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_2_1_4_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:___p_a_t_c_h_P_a_r_a_m_B_u_f_f_e_r │ │ │ │ │ +cl_mem _patchParamBuffer │ │ │ │ │ +DDeeffiinniittiioonn _c_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_0_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_P_a_r_a_m_B_u_f_f_e_r │ │ │ │ │ +cl_mem GetPatchParamBuffer() const │ │ │ │ │ +Returns the CL memory of the array of Osd::PatchParam buffer. │ │ │ │ │ +DDeeffiinniittiioonn _c_l_P_a_t_c_h_T_a_b_l_e_._h_:_7_4 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:___i_n_d_e_x_B_u_f_f_e_r │ │ │ │ │ +cl_mem _indexBuffer │ │ │ │ │ +DDeeffiinniittiioonn _c_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_0_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_F_V_a_r_P_a_t_c_h_A_r_r_a_y_B_u_f_f_e_r │ │ │ │ │ +cl_mem GetFVarPatchArrayBuffer(int fvarChannel=0) const │ │ │ │ │ +Returns the CL memory of the array of Osd::PatchArray buffer. │ │ │ │ │ +DDeeffiinniittiioonn _c_l_P_a_t_c_h_T_a_b_l_e_._h_:_8_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_A_r_r_a_y_B_u_f_f_e_r │ │ │ │ │ +cl_mem GetPatchArrayBuffer() const │ │ │ │ │ +Returns the CL memory of the array of Osd::PatchArray buffer. │ │ │ │ │ +DDeeffiinniittiioonn _c_l_P_a_t_c_h_T_a_b_l_e_._h_:_6_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:_C_r_e_a_t_e │ │ │ │ │ +static CLPatchTable * Create(Far::PatchTable const *patchTable, cl_context │ │ │ │ │ +clContext) │ │ │ │ │ +Creator. Returns NULL if error. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:___p_a_t_c_h_A_r_r_a_y_s │ │ │ │ │ +cl_mem _patchArrays │ │ │ │ │ +DDeeffiinniittiioonn _c_l_P_a_t_c_h_T_a_b_l_e_._h_:_9_9 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_F_V_a_r_P_a_t_c_h_I_n_d_e_x_B_u_f_f_e_r │ │ │ │ │ +cl_mem GetFVarPatchIndexBuffer(int fvarChannel=0) const │ │ │ │ │ +Returns the CL memory of the face-varying control vertices. │ │ │ │ │ +DDeeffiinniittiioonn _c_l_P_a_t_c_h_T_a_b_l_e_._h_:_8_9 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:___v_a_r_y_i_n_g_I_n_d_e_x_B_u_f_f_e_r │ │ │ │ │ +cl_mem _varyingIndexBuffer │ │ │ │ │ +DDeeffiinniittiioonn _c_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_0_4 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_V_a_r_y_i_n_g_P_a_t_c_h_I_n_d_e_x_B_u_f_f_e_r │ │ │ │ │ +cl_mem GetVaryingPatchIndexBuffer() const │ │ │ │ │ +Returns the CL memory of the varying control vertices. │ │ │ │ │ +DDeeffiinniittiioonn _c_l_P_a_t_c_h_T_a_b_l_e_._h_:_8_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_N_u_m_F_V_a_r_C_h_a_n_n_e_l_s │ │ │ │ │ +int GetNumFVarChannels() const │ │ │ │ │ +Returns the number of face-varying channel buffers. │ │ │ │ │ +DDeeffiinniittiioonn _c_l_P_a_t_c_h_T_a_b_l_e_._h_:_8_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_I_n_d_e_x_B_u_f_f_e_r │ │ │ │ │ +cl_mem GetPatchIndexBuffer() const │ │ │ │ │ +Returns the CL memory of the patch control vertices. │ │ │ │ │ +DDeeffiinniittiioonn _c_l_P_a_t_c_h_T_a_b_l_e_._h_:_7_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:_C_r_e_a_t_e │ │ │ │ │ +static CLPatchTable * Create(Far::PatchTable const *patchTable, DEVICE_CONTEXT │ │ │ │ │ +context) │ │ │ │ │ +DDeeffiinniittiioonn _c_l_P_a_t_c_h_T_a_b_l_e_._h_:_5_9 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_F_V_a_r_P_a_t_c_h_P_a_r_a_m_B_u_f_f_e_r │ │ │ │ │ +cl_mem GetFVarPatchParamBuffer(int fvarChannel=0) const │ │ │ │ │ +Returns the CL memory of the array of Osd::PatchParam buffer. │ │ │ │ │ +DDeeffiinniittiioonn _c_l_P_a_t_c_h_T_a_b_l_e_._h_:_9_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:_C_L_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ +CLPatchTable() │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:_a_l_l_o_c_a_t_e │ │ │ │ │ +bool allocate(Far::PatchTable const *patchTable, cl_context clContext) │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:___f_v_a_r_P_a_r_a_m_B_u_f_f_e_r_s │ │ │ │ │ +std::vector< cl_mem > _fvarParamBuffers │ │ │ │ │ +DDeeffiinniittiioonn _c_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_0_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:___f_v_a_r_I_n_d_e_x_B_u_f_f_e_r_s │ │ │ │ │ +std::vector< cl_mem > _fvarIndexBuffers │ │ │ │ │ +DDeeffiinniittiioonn _c_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_0_7 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:___v_a_r_y_i_n_g_P_a_t_c_h_A_r_r_a_y_s │ │ │ │ │ +cl_mem _varyingPatchArrays │ │ │ │ │ +DDeeffiinniittiioonn _c_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_0_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_V_a_r_y_i_n_g_P_a_t_c_h_A_r_r_a_y_B_u_f_f_e_r │ │ │ │ │ +cl_mem GetVaryingPatchArrayBuffer() const │ │ │ │ │ +Returns the CL memory of the array of Osd::PatchArray buffer. │ │ │ │ │ +DDeeffiinniittiioonn _c_l_P_a_t_c_h_T_a_b_l_e_._h_:_7_7 │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _o_s_d │ │ │ │ │ - * _c_l_E_v_a_l_u_a_t_o_r_._h │ │ │ │ │ + * _c_l_P_a_t_c_h_T_a_b_l_e_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00800.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/osd/clPatchTable.h File Reference │ │ │ │ +OpenSubdiv: opensubdiv/osd/clVertexBuffer.h File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -90,46 +90,41 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
clPatchTable.h File Reference
│ │ │ │ +
clVertexBuffer.h File Reference
│ │ │ │
│ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ #include "../osd/opencl.h"
│ │ │ │ -#include "../osd/nonCopyable.h"
│ │ │ │ -#include "../osd/types.h"
│ │ │ │ -#include <vector>
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  CLPatchTable
 CL patch table. More...
class  CLVertexBuffer
 Concrete vertex buffer class for OpenCL subdivision. More...
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  OpenSubdiv
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION::Far
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION::Osd
 
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,29 +1,24 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -clPatchTable.h File Reference │ │ │ │ │ +clVertexBuffer.h File Reference │ │ │ │ │ #include "../version.h" │ │ │ │ │ #include "_._._/_o_s_d_/_o_p_e_n_c_l_._h" │ │ │ │ │ -#include "../osd/nonCopyable.h" │ │ │ │ │ -#include "_._._/_o_s_d_/_t_y_p_e_s_._h" │ │ │ │ │ -#include │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -class   _C_L_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ -  CL patch table. _M_o_r_e_._._. │ │ │ │ │ +class   _C_L_V_e_r_t_e_x_B_u_f_f_e_r │ │ │ │ │ +  Concrete vertex buffer class for OpenCL subdivision. _M_o_r_e_._._. │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N │ │ │ │ │   │ │ │ │ │ -namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r │ │ │ │ │ -  │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d │ │ │ │ │   │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _o_s_d │ │ │ │ │ - * _c_l_P_a_t_c_h_T_a_b_l_e_._h │ │ │ │ │ + * _c_l_V_e_r_t_e_x_B_u_f_f_e_r_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00800.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -1,3 +1,3 @@ │ │ │ │ │ var a00800 = [ │ │ │ │ │ - ["CLPatchTable", "a01153.html", "a01153"] │ │ │ │ │ + ["CLVertexBuffer", "a01157.html", "a01157"] │ │ │ │ │ ]; │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00800_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/osd/clPatchTable.h Source File │ │ │ │ +OpenSubdiv: opensubdiv/osd/clVertexBuffer.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -92,19 +92,19 @@ │ │ │ │
No Matches
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
clPatchTable.h
│ │ │ │ +
clVertexBuffer.h
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1//
│ │ │ │ -
2// Copyright 2015 Pixar
│ │ │ │ +
2// Copyright 2013 Pixar
│ │ │ │
3//
│ │ │ │
4// Licensed under the Apache License, Version 2.0 (the "Apache License")
│ │ │ │
5// with the following modification; you may not use this file except in
│ │ │ │
6// compliance with the Apache License and the following modification to it:
│ │ │ │
7// Section 6. Trademarks. is deleted and replaced with:
│ │ │ │
8//
│ │ │ │
9// 6. Trademarks. This License does not grant permission to use the trade
│ │ │ │ @@ -119,124 +119,95 @@ │ │ │ │
18// Unless required by applicable law or agreed to in writing, software
│ │ │ │
19// distributed under the Apache License with the above modification is
│ │ │ │
20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
│ │ │ │
21// KIND, either express or implied. See the Apache License for the specific
│ │ │ │
22// language governing permissions and limitations under the Apache License.
│ │ │ │
23//
│ │ │ │
24
│ │ │ │ -
25#ifndef OPENSUBDIV3_OSD_CL_PATCH_TABLE_H
│ │ │ │ -
26#define OPENSUBDIV3_OSD_CL_PATCH_TABLE_H
│ │ │ │ +
25#ifndef OPENSUBDIV3_OSD_CL_VERTEX_BUFFER_H
│ │ │ │ +
26#define OPENSUBDIV3_OSD_CL_VERTEX_BUFFER_H
│ │ │ │
27
│ │ │ │
28#include "../version.h"
│ │ │ │ -
29
│ │ │ │ -
30#include "../osd/opencl.h"
│ │ │ │ -
31#include "../osd/nonCopyable.h"
│ │ │ │ -
32#include "../osd/types.h"
│ │ │ │ +
29#include "../osd/opencl.h"
│ │ │ │ +
30
│ │ │ │ +
31namespace OpenSubdiv {
│ │ │ │ +
32namespace OPENSUBDIV_VERSION {
│ │ │ │
33
│ │ │ │ -
34#include <vector>
│ │ │ │ +
34namespace Osd {
│ │ │ │
35
│ │ │ │ -
36namespace OpenSubdiv {
│ │ │ │ -
37namespace OPENSUBDIV_VERSION {
│ │ │ │ -
38
│ │ │ │ -
39namespace Far{
│ │ │ │ -
40 class PatchTable;
│ │ │ │ -
41};
│ │ │ │ -
42
│ │ │ │ -
43namespace Osd {
│ │ │ │ -
44
│ │ │ │ -
│ │ │ │ -
52class CLPatchTable : private NonCopyable<CLPatchTable> {
│ │ │ │ -
53public:
│ │ │ │ -
55 static CLPatchTable *Create(Far::PatchTable const *patchTable,
│ │ │ │ -
56 cl_context clContext);
│ │ │ │ -
57
│ │ │ │ -
58 template <typename DEVICE_CONTEXT>
│ │ │ │ -
│ │ │ │ -
59 static CLPatchTable * Create(Far::PatchTable const *patchTable,
│ │ │ │ -
60 DEVICE_CONTEXT context) {
│ │ │ │ -
61 return Create(patchTable, context->GetContext());
│ │ │ │ -
62 }
│ │ │ │ -
│ │ │ │ -
63
│ │ │ │ - │ │ │ │ -
66
│ │ │ │ -
68 cl_mem GetPatchArrayBuffer() const { return _patchArrays; }
│ │ │ │ -
69
│ │ │ │ -
71 cl_mem GetPatchIndexBuffer() const { return _indexBuffer; }
│ │ │ │ -
72
│ │ │ │ -
74 cl_mem GetPatchParamBuffer() const { return _patchParamBuffer; }
│ │ │ │ -
75
│ │ │ │ - │ │ │ │ -
78
│ │ │ │ - │ │ │ │ +
│ │ │ │ + │ │ │ │ +
43
│ │ │ │ +
44public:
│ │ │ │ +
46 static CLVertexBuffer * Create(int numElements, int numVertices, cl_context clContext);
│ │ │ │ +
47
│ │ │ │ +
48 template <typename DEVICE_CONTEXT>
│ │ │ │ +
│ │ │ │ +
49 static CLVertexBuffer * Create(int numElements, int numVertices,
│ │ │ │ +
50 DEVICE_CONTEXT context) {
│ │ │ │ +
51 return Create(numElements, numVertices, context->GetContext());
│ │ │ │ +
52 }
│ │ │ │ +
│ │ │ │ +
53
│ │ │ │ + │ │ │ │ +
56
│ │ │ │ +
59 void UpdateData(const float *src, int startVertex, int numVertices, cl_command_queue clQueue,
│ │ │ │ +
60 cl_event* startEvents = NULL, unsigned int numStartEvents = 0, cl_event* endEvent = NULL);
│ │ │ │ +
61
│ │ │ │ +
62 template<typename DEVICE_CONTEXT>
│ │ │ │ +
│ │ │ │ +
63 void UpdateData(const float *src, int startVertex, int numVertices,
│ │ │ │ +
64 DEVICE_CONTEXT context,
│ │ │ │ +
65 cl_event* startEvents = NULL, unsigned int numStartEvents = 0, cl_event* endEvent = NULL) {
│ │ │ │ +
66 UpdateData(src, startVertex, numVertices, context->GetCommandQueue(), startEvents, numStartEvents, endEvent);
│ │ │ │ +
67 }
│ │ │ │ +
│ │ │ │ +
68
│ │ │ │ +
70 int GetNumElements() const;
│ │ │ │ +
71
│ │ │ │ +
73 int GetNumVertices() const;
│ │ │ │ +
74
│ │ │ │ +
76 cl_mem BindCLBuffer(cl_command_queue queue);
│ │ │ │ +
77
│ │ │ │ +
78protected:
│ │ │ │ +
80 CLVertexBuffer(int numElements, int numVertices, cl_context clContext);
│ │ │ │
81
│ │ │ │ -
83 int GetNumFVarChannels() const { return (int)_fvarPatchArrays.size(); }
│ │ │ │ -
84
│ │ │ │ -
86 cl_mem GetFVarPatchArrayBuffer(int fvarChannel = 0) const { return _fvarPatchArrays[fvarChannel]; }
│ │ │ │ -
87
│ │ │ │ -
89 cl_mem GetFVarPatchIndexBuffer(int fvarChannel = 0) const { return _fvarIndexBuffers[fvarChannel]; }
│ │ │ │ -
90
│ │ │ │ -
92 cl_mem GetFVarPatchParamBuffer(int fvarChannel = 0) const { return _fvarParamBuffers[fvarChannel]; }
│ │ │ │ +
84 bool allocate(cl_context clContext);
│ │ │ │ +
85
│ │ │ │ +
86private:
│ │ │ │ +
87 int _numElements;
│ │ │ │ +
88 int _numVertices;
│ │ │ │ +
89 cl_mem _clMemory;
│ │ │ │ +
90};
│ │ │ │ +
│ │ │ │ +
91
│ │ │ │ +
92} // end namespace Osd
│ │ │ │
93
│ │ │ │ -
94protected:
│ │ │ │ - │ │ │ │ +
94} // end namespace OPENSUBDIV_VERSION
│ │ │ │ +
95using namespace OPENSUBDIV_VERSION;
│ │ │ │
96
│ │ │ │ -
97 bool allocate(Far::PatchTable const *patchTable, cl_context clContext);
│ │ │ │ +
97} // end namespace OpenSubdiv
│ │ │ │
98
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
102
│ │ │ │ - │ │ │ │ - │ │ │ │ -
105
│ │ │ │ -
106 std::vector<cl_mem> _fvarPatchArrays;
│ │ │ │ -
107 std::vector<cl_mem> _fvarIndexBuffers;
│ │ │ │ -
108 std::vector<cl_mem> _fvarParamBuffers;
│ │ │ │ -
109
│ │ │ │ -
110};
│ │ │ │ -
│ │ │ │ -
111
│ │ │ │ -
112} // end namespace Osd
│ │ │ │ -
113
│ │ │ │ -
114} // end namespace OPENSUBDIV_VERSION
│ │ │ │ -
115using namespace OPENSUBDIV_VERSION;
│ │ │ │ -
116
│ │ │ │ -
117} // end namespace OpenSubdiv
│ │ │ │ -
118
│ │ │ │ -
119#endif // OPENSUBDIV3_OSD_CL_PATCH_TABLE_H
│ │ │ │ +
99#endif // OPENSUBDIV3_OSD_CL_VERTEX_BUFFER_H
│ │ │ │ │ │ │ │ -
Container for arrays of parametric patches.
Definition patchTable.h:55
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
cl_mem GetPatchParamBuffer() const
Returns the CL memory of the array of Osd::PatchParam buffer.
│ │ │ │ - │ │ │ │ -
cl_mem GetFVarPatchArrayBuffer(int fvarChannel=0) const
Returns the CL memory of the array of Osd::PatchArray buffer.
│ │ │ │ -
cl_mem GetPatchArrayBuffer() const
Returns the CL memory of the array of Osd::PatchArray buffer.
│ │ │ │ -
static CLPatchTable * Create(Far::PatchTable const *patchTable, cl_context clContext)
Creator. Returns NULL if error.
│ │ │ │ - │ │ │ │ -
cl_mem GetFVarPatchIndexBuffer(int fvarChannel=0) const
Returns the CL memory of the face-varying control vertices.
│ │ │ │ - │ │ │ │ -
cl_mem GetVaryingPatchIndexBuffer() const
Returns the CL memory of the varying control vertices.
│ │ │ │ -
int GetNumFVarChannels() const
Returns the number of face-varying channel buffers.
│ │ │ │ -
cl_mem GetPatchIndexBuffer() const
Returns the CL memory of the patch control vertices.
│ │ │ │ -
static CLPatchTable * Create(Far::PatchTable const *patchTable, DEVICE_CONTEXT context)
│ │ │ │ -
cl_mem GetFVarPatchParamBuffer(int fvarChannel=0) const
Returns the CL memory of the array of Osd::PatchParam buffer.
│ │ │ │ - │ │ │ │ -
bool allocate(Far::PatchTable const *patchTable, cl_context clContext)
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
cl_mem GetVaryingPatchArrayBuffer() const
Returns the CL memory of the array of Osd::PatchArray buffer.
│ │ │ │ +
Concrete vertex buffer class for OpenCL subdivision.
│ │ │ │ +
void UpdateData(const float *src, int startVertex, int numVertices, DEVICE_CONTEXT context, cl_event *startEvents=NULL, unsigned int numStartEvents=0, cl_event *endEvent=NULL)
│ │ │ │ + │ │ │ │ +
CLVertexBuffer(int numElements, int numVertices, cl_context clContext)
Constructor.
│ │ │ │ +
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)
│ │ │ │ +
int GetNumElements() const
Returns how many elements defined in this vertex buffer.
│ │ │ │ + │ │ │ │ +
int GetNumVertices() const
Returns how many vertices allocated in this vertex buffer.
│ │ │ │ +
static CLVertexBuffer * Create(int numElements, int numVertices, cl_context clContext)
Creator. Returns NULL if error.
│ │ │ │ +
static CLVertexBuffer * Create(int numElements, int numVertices, DEVICE_CONTEXT context)
│ │ │ │ +
cl_mem BindCLBuffer(cl_command_queue queue)
Returns the CL memory object.
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ -clPatchTable.h │ │ │ │ │ +clVertexBuffer.h │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// │ │ │ │ │ -2// Copyright 2015 Pixar │ │ │ │ │ +2// Copyright 2013 Pixar │ │ │ │ │ 3// │ │ │ │ │ 4// Licensed under the Apache License, Version 2.0 (the "Apache License") │ │ │ │ │ 5// with the following modification; you may not use this file except in │ │ │ │ │ 6// compliance with the Apache License and the following modification to it: │ │ │ │ │ 7// Section 6. Trademarks. is deleted and replaced with: │ │ │ │ │ 8// │ │ │ │ │ 9// 6. Trademarks. This License does not grant permission to use the trade │ │ │ │ │ @@ -24,174 +24,114 @@ │ │ │ │ │ 18// Unless required by applicable law or agreed to in writing, software │ │ │ │ │ 19// distributed under the Apache License with the above modification is │ │ │ │ │ 20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY │ │ │ │ │ 21// KIND, either express or implied. See the Apache License for the specific │ │ │ │ │ 22// language governing permissions and limitations under the Apache License. │ │ │ │ │ 23// │ │ │ │ │ 24 │ │ │ │ │ -25#ifndef OPENSUBDIV3_OSD_CL_PATCH_TABLE_H │ │ │ │ │ -26#define OPENSUBDIV3_OSD_CL_PATCH_TABLE_H │ │ │ │ │ +25#ifndef OPENSUBDIV3_OSD_CL_VERTEX_BUFFER_H │ │ │ │ │ +26#define OPENSUBDIV3_OSD_CL_VERTEX_BUFFER_H │ │ │ │ │ 27 │ │ │ │ │ 28#include "../version.h" │ │ │ │ │ -29 │ │ │ │ │ -30#include "../osd/opencl.h" │ │ │ │ │ -31#include "../osd/nonCopyable.h" │ │ │ │ │ -32#include "../osd/types.h" │ │ │ │ │ +29#include "../osd/opencl.h" │ │ │ │ │ +30 │ │ │ │ │ +31namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ +32namespace OPENSUBDIV_VERSION { │ │ │ │ │ 33 │ │ │ │ │ -34#include │ │ │ │ │ +34namespace Osd { │ │ │ │ │ 35 │ │ │ │ │ -36namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ -37namespace OPENSUBDIV_VERSION { │ │ │ │ │ -38 │ │ │ │ │ -39namespace Far{ │ │ │ │ │ -40 class PatchTable; │ │ │ │ │ -41}; │ │ │ │ │ -42 │ │ │ │ │ -43namespace Osd { │ │ │ │ │ -44 │ │ │ │ │ -_5_2class _C_L_P_a_t_c_h_T_a_b_l_e : private NonCopyable { │ │ │ │ │ -53public: │ │ │ │ │ -_5_5 static _C_L_P_a_t_c_h_T_a_b_l_e *_C_r_e_a_t_e(_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e const *patchTable, │ │ │ │ │ -56 cl_context clContext); │ │ │ │ │ -57 │ │ │ │ │ -58 template │ │ │ │ │ -_5_9 static _C_L_P_a_t_c_h_T_a_b_l_e * _C_r_e_a_t_e(_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e const *patchTable, │ │ │ │ │ -60 DEVICE_CONTEXT context) { │ │ │ │ │ -61 return _C_r_e_a_t_e(patchTable, context->GetContext()); │ │ │ │ │ -62 } │ │ │ │ │ -63 │ │ │ │ │ -_6_5 _~_C_L_P_a_t_c_h_T_a_b_l_e(); │ │ │ │ │ -66 │ │ │ │ │ -_6_8 cl_mem _G_e_t_P_a_t_c_h_A_r_r_a_y_B_u_f_f_e_r() const { return ___p_a_t_c_h_A_r_r_a_y_s; } │ │ │ │ │ -69 │ │ │ │ │ -_7_1 cl_mem _G_e_t_P_a_t_c_h_I_n_d_e_x_B_u_f_f_e_r() const { return ___i_n_d_e_x_B_u_f_f_e_r; } │ │ │ │ │ -72 │ │ │ │ │ -_7_4 cl_mem _G_e_t_P_a_t_c_h_P_a_r_a_m_B_u_f_f_e_r() const { return ___p_a_t_c_h_P_a_r_a_m_B_u_f_f_e_r; } │ │ │ │ │ -75 │ │ │ │ │ -_7_7 cl_mem _G_e_t_V_a_r_y_i_n_g_P_a_t_c_h_A_r_r_a_y_B_u_f_f_e_r() const { return ___v_a_r_y_i_n_g_P_a_t_c_h_A_r_r_a_y_s; } │ │ │ │ │ -78 │ │ │ │ │ -_8_0 cl_mem _G_e_t_V_a_r_y_i_n_g_P_a_t_c_h_I_n_d_e_x_B_u_f_f_e_r() const { return ___v_a_r_y_i_n_g_I_n_d_e_x_B_u_f_f_e_r; } │ │ │ │ │ +_4_2class _C_L_V_e_r_t_e_x_B_u_f_f_e_r { │ │ │ │ │ +43 │ │ │ │ │ +44public: │ │ │ │ │ +_4_6 static _C_L_V_e_r_t_e_x_B_u_f_f_e_r * _C_r_e_a_t_e(int numElements, int numVertices, cl_context │ │ │ │ │ +clContext); │ │ │ │ │ +47 │ │ │ │ │ +48 template │ │ │ │ │ +_4_9 static _C_L_V_e_r_t_e_x_B_u_f_f_e_r * _C_r_e_a_t_e(int numElements, int numVertices, │ │ │ │ │ +50 DEVICE_CONTEXT context) { │ │ │ │ │ +51 return _C_r_e_a_t_e(numElements, numVertices, context->GetContext()); │ │ │ │ │ +52 } │ │ │ │ │ +53 │ │ │ │ │ +_5_5 _~_C_L_V_e_r_t_e_x_B_u_f_f_e_r(); │ │ │ │ │ +56 │ │ │ │ │ +_5_9 void _U_p_d_a_t_e_D_a_t_a(const float *src, int startVertex, int numVertices, │ │ │ │ │ +cl_command_queue clQueue, │ │ │ │ │ +60 cl_event* startEvents = NULL, unsigned int numStartEvents = 0, cl_event* │ │ │ │ │ +endEvent = NULL); │ │ │ │ │ +61 │ │ │ │ │ +62 template │ │ │ │ │ +_6_3 void _U_p_d_a_t_e_D_a_t_a(const float *src, int startVertex, int numVertices, │ │ │ │ │ +64 DEVICE_CONTEXT context, │ │ │ │ │ +65 cl_event* startEvents = NULL, unsigned int numStartEvents = 0, cl_event* │ │ │ │ │ +endEvent = NULL) { │ │ │ │ │ +66 _U_p_d_a_t_e_D_a_t_a(src, startVertex, numVertices, context->GetCommandQueue(), │ │ │ │ │ +startEvents, numStartEvents, endEvent); │ │ │ │ │ +67 } │ │ │ │ │ +68 │ │ │ │ │ +_7_0 int _G_e_t_N_u_m_E_l_e_m_e_n_t_s() const; │ │ │ │ │ +71 │ │ │ │ │ +_7_3 int _G_e_t_N_u_m_V_e_r_t_i_c_e_s() const; │ │ │ │ │ +74 │ │ │ │ │ +_7_6 cl_mem _B_i_n_d_C_L_B_u_f_f_e_r(cl_command_queue queue); │ │ │ │ │ +77 │ │ │ │ │ +78protected: │ │ │ │ │ +_8_0 _C_L_V_e_r_t_e_x_B_u_f_f_e_r(int numElements, int numVertices, cl_context clContext); │ │ │ │ │ 81 │ │ │ │ │ -_8_3 int _G_e_t_N_u_m_F_V_a_r_C_h_a_n_n_e_l_s() const { return (int)___f_v_a_r_P_a_t_c_h_A_r_r_a_y_s.size(); } │ │ │ │ │ -84 │ │ │ │ │ -_8_6 cl_mem _G_e_t_F_V_a_r_P_a_t_c_h_A_r_r_a_y_B_u_f_f_e_r(int fvarChannel = 0) const { return │ │ │ │ │ -___f_v_a_r_P_a_t_c_h_A_r_r_a_y_s[fvarChannel]; } │ │ │ │ │ -87 │ │ │ │ │ -_8_9 cl_mem _G_e_t_F_V_a_r_P_a_t_c_h_I_n_d_e_x_B_u_f_f_e_r(int fvarChannel = 0) const { return │ │ │ │ │ -___f_v_a_r_I_n_d_e_x_B_u_f_f_e_r_s[fvarChannel]; } │ │ │ │ │ -90 │ │ │ │ │ -_9_2 cl_mem _G_e_t_F_V_a_r_P_a_t_c_h_P_a_r_a_m_B_u_f_f_e_r(int fvarChannel = 0) const { return │ │ │ │ │ -___f_v_a_r_P_a_r_a_m_B_u_f_f_e_r_s[fvarChannel]; } │ │ │ │ │ +_8_4 bool _a_l_l_o_c_a_t_e(cl_context clContext); │ │ │ │ │ +85 │ │ │ │ │ +86private: │ │ │ │ │ +87 int _numElements; │ │ │ │ │ +88 int _numVertices; │ │ │ │ │ +89 cl_mem _clMemory; │ │ │ │ │ +90}; │ │ │ │ │ +91 │ │ │ │ │ +92} // end namespace Osd │ │ │ │ │ 93 │ │ │ │ │ -94protected: │ │ │ │ │ -_9_5 _C_L_P_a_t_c_h_T_a_b_l_e(); │ │ │ │ │ +94} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ +95using namespace OPENSUBDIV_VERSION; │ │ │ │ │ 96 │ │ │ │ │ -_9_7 bool _a_l_l_o_c_a_t_e(_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e const *patchTable, cl_context clContext); │ │ │ │ │ +97} // end namespace OpenSubdiv │ │ │ │ │ 98 │ │ │ │ │ -_9_9 cl_mem ___p_a_t_c_h_A_r_r_a_y_s; │ │ │ │ │ -_1_0_0 cl_mem ___i_n_d_e_x_B_u_f_f_e_r; │ │ │ │ │ -_1_0_1 cl_mem ___p_a_t_c_h_P_a_r_a_m_B_u_f_f_e_r; │ │ │ │ │ -102 │ │ │ │ │ -_1_0_3 cl_mem ___v_a_r_y_i_n_g_P_a_t_c_h_A_r_r_a_y_s; │ │ │ │ │ -_1_0_4 cl_mem ___v_a_r_y_i_n_g_I_n_d_e_x_B_u_f_f_e_r; │ │ │ │ │ -105 │ │ │ │ │ -_1_0_6 std::vector ___f_v_a_r_P_a_t_c_h_A_r_r_a_y_s; │ │ │ │ │ -_1_0_7 std::vector ___f_v_a_r_I_n_d_e_x_B_u_f_f_e_r_s; │ │ │ │ │ -_1_0_8 std::vector ___f_v_a_r_P_a_r_a_m_B_u_f_f_e_r_s; │ │ │ │ │ -109 │ │ │ │ │ -110}; │ │ │ │ │ -111 │ │ │ │ │ -112} // end namespace Osd │ │ │ │ │ -113 │ │ │ │ │ -114} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ -115using namespace OPENSUBDIV_VERSION; │ │ │ │ │ -116 │ │ │ │ │ -117} // end namespace OpenSubdiv │ │ │ │ │ -118 │ │ │ │ │ -119#endif // OPENSUBDIV3_OSD_CL_PATCH_TABLE_H │ │ │ │ │ +99#endif // OPENSUBDIV3_OSD_CL_VERTEX_BUFFER_H │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v │ │ │ │ │ DDeeffiinniittiioonn _l_i_m_i_t_s_._h_:_3_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ -Container for arrays of parametric patches. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_5_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ -CL patch table. │ │ │ │ │ -DDeeffiinniittiioonn _c_l_P_a_t_c_h_T_a_b_l_e_._h_:_5_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:___f_v_a_r_P_a_t_c_h_A_r_r_a_y_s │ │ │ │ │ -std::vector< cl_mem > _fvarPatchArrays │ │ │ │ │ -DDeeffiinniittiioonn _c_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_0_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:_~_C_L_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ -~CLPatchTable() │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_V_e_r_t_e_x_B_u_f_f_e_r │ │ │ │ │ +Concrete vertex buffer class for OpenCL subdivision. │ │ │ │ │ +DDeeffiinniittiioonn _c_l_V_e_r_t_e_x_B_u_f_f_e_r_._h_:_4_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_V_e_r_t_e_x_B_u_f_f_e_r_:_:_U_p_d_a_t_e_D_a_t_a │ │ │ │ │ +void UpdateData(const float *src, int startVertex, int numVertices, │ │ │ │ │ +DEVICE_CONTEXT context, cl_event *startEvents=NULL, unsigned int │ │ │ │ │ +numStartEvents=0, cl_event *endEvent=NULL) │ │ │ │ │ +DDeeffiinniittiioonn _c_l_V_e_r_t_e_x_B_u_f_f_e_r_._h_:_6_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_V_e_r_t_e_x_B_u_f_f_e_r_:_:_~_C_L_V_e_r_t_e_x_B_u_f_f_e_r │ │ │ │ │ +~CLVertexBuffer() │ │ │ │ │ Destructor. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:___p_a_t_c_h_P_a_r_a_m_B_u_f_f_e_r │ │ │ │ │ -cl_mem _patchParamBuffer │ │ │ │ │ -DDeeffiinniittiioonn _c_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_0_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_P_a_r_a_m_B_u_f_f_e_r │ │ │ │ │ -cl_mem GetPatchParamBuffer() const │ │ │ │ │ -Returns the CL memory of the array of Osd::PatchParam buffer. │ │ │ │ │ -DDeeffiinniittiioonn _c_l_P_a_t_c_h_T_a_b_l_e_._h_:_7_4 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:___i_n_d_e_x_B_u_f_f_e_r │ │ │ │ │ -cl_mem _indexBuffer │ │ │ │ │ -DDeeffiinniittiioonn _c_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_0_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_F_V_a_r_P_a_t_c_h_A_r_r_a_y_B_u_f_f_e_r │ │ │ │ │ -cl_mem GetFVarPatchArrayBuffer(int fvarChannel=0) const │ │ │ │ │ -Returns the CL memory of the array of Osd::PatchArray buffer. │ │ │ │ │ -DDeeffiinniittiioonn _c_l_P_a_t_c_h_T_a_b_l_e_._h_:_8_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_A_r_r_a_y_B_u_f_f_e_r │ │ │ │ │ -cl_mem GetPatchArrayBuffer() const │ │ │ │ │ -Returns the CL memory of the array of Osd::PatchArray buffer. │ │ │ │ │ -DDeeffiinniittiioonn _c_l_P_a_t_c_h_T_a_b_l_e_._h_:_6_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:_C_r_e_a_t_e │ │ │ │ │ -static CLPatchTable * Create(Far::PatchTable const *patchTable, cl_context │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_V_e_r_t_e_x_B_u_f_f_e_r_:_:_C_L_V_e_r_t_e_x_B_u_f_f_e_r │ │ │ │ │ +CLVertexBuffer(int numElements, int numVertices, cl_context clContext) │ │ │ │ │ +Constructor. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_V_e_r_t_e_x_B_u_f_f_e_r_:_:_U_p_d_a_t_e_D_a_t_a │ │ │ │ │ +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) │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_V_e_r_t_e_x_B_u_f_f_e_r_:_:_G_e_t_N_u_m_E_l_e_m_e_n_t_s │ │ │ │ │ +int GetNumElements() const │ │ │ │ │ +Returns how many elements defined in this vertex buffer. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_V_e_r_t_e_x_B_u_f_f_e_r_:_:_a_l_l_o_c_a_t_e │ │ │ │ │ +bool allocate(cl_context clContext) │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_V_e_r_t_e_x_B_u_f_f_e_r_:_:_G_e_t_N_u_m_V_e_r_t_i_c_e_s │ │ │ │ │ +int GetNumVertices() const │ │ │ │ │ +Returns how many vertices allocated in this vertex buffer. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_V_e_r_t_e_x_B_u_f_f_e_r_:_:_C_r_e_a_t_e │ │ │ │ │ +static CLVertexBuffer * Create(int numElements, int numVertices, cl_context │ │ │ │ │ clContext) │ │ │ │ │ Creator. Returns NULL if error. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:___p_a_t_c_h_A_r_r_a_y_s │ │ │ │ │ -cl_mem _patchArrays │ │ │ │ │ -DDeeffiinniittiioonn _c_l_P_a_t_c_h_T_a_b_l_e_._h_:_9_9 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_F_V_a_r_P_a_t_c_h_I_n_d_e_x_B_u_f_f_e_r │ │ │ │ │ -cl_mem GetFVarPatchIndexBuffer(int fvarChannel=0) const │ │ │ │ │ -Returns the CL memory of the face-varying control vertices. │ │ │ │ │ -DDeeffiinniittiioonn _c_l_P_a_t_c_h_T_a_b_l_e_._h_:_8_9 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:___v_a_r_y_i_n_g_I_n_d_e_x_B_u_f_f_e_r │ │ │ │ │ -cl_mem _varyingIndexBuffer │ │ │ │ │ -DDeeffiinniittiioonn _c_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_0_4 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_V_a_r_y_i_n_g_P_a_t_c_h_I_n_d_e_x_B_u_f_f_e_r │ │ │ │ │ -cl_mem GetVaryingPatchIndexBuffer() const │ │ │ │ │ -Returns the CL memory of the varying control vertices. │ │ │ │ │ -DDeeffiinniittiioonn _c_l_P_a_t_c_h_T_a_b_l_e_._h_:_8_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_N_u_m_F_V_a_r_C_h_a_n_n_e_l_s │ │ │ │ │ -int GetNumFVarChannels() const │ │ │ │ │ -Returns the number of face-varying channel buffers. │ │ │ │ │ -DDeeffiinniittiioonn _c_l_P_a_t_c_h_T_a_b_l_e_._h_:_8_3 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_I_n_d_e_x_B_u_f_f_e_r │ │ │ │ │ -cl_mem GetPatchIndexBuffer() const │ │ │ │ │ -Returns the CL memory of the patch control vertices. │ │ │ │ │ -DDeeffiinniittiioonn _c_l_P_a_t_c_h_T_a_b_l_e_._h_:_7_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:_C_r_e_a_t_e │ │ │ │ │ -static CLPatchTable * Create(Far::PatchTable const *patchTable, DEVICE_CONTEXT │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_V_e_r_t_e_x_B_u_f_f_e_r_:_:_C_r_e_a_t_e │ │ │ │ │ +static CLVertexBuffer * Create(int numElements, int numVertices, DEVICE_CONTEXT │ │ │ │ │ context) │ │ │ │ │ -DDeeffiinniittiioonn _c_l_P_a_t_c_h_T_a_b_l_e_._h_:_5_9 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_F_V_a_r_P_a_t_c_h_P_a_r_a_m_B_u_f_f_e_r │ │ │ │ │ -cl_mem GetFVarPatchParamBuffer(int fvarChannel=0) const │ │ │ │ │ -Returns the CL memory of the array of Osd::PatchParam buffer. │ │ │ │ │ -DDeeffiinniittiioonn _c_l_P_a_t_c_h_T_a_b_l_e_._h_:_9_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:_C_L_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ -CLPatchTable() │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:_a_l_l_o_c_a_t_e │ │ │ │ │ -bool allocate(Far::PatchTable const *patchTable, cl_context clContext) │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:___f_v_a_r_P_a_r_a_m_B_u_f_f_e_r_s │ │ │ │ │ -std::vector< cl_mem > _fvarParamBuffers │ │ │ │ │ -DDeeffiinniittiioonn _c_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_0_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:___f_v_a_r_I_n_d_e_x_B_u_f_f_e_r_s │ │ │ │ │ -std::vector< cl_mem > _fvarIndexBuffers │ │ │ │ │ -DDeeffiinniittiioonn _c_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_0_7 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:___v_a_r_y_i_n_g_P_a_t_c_h_A_r_r_a_y_s │ │ │ │ │ -cl_mem _varyingPatchArrays │ │ │ │ │ -DDeeffiinniittiioonn _c_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_0_3 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_V_a_r_y_i_n_g_P_a_t_c_h_A_r_r_a_y_B_u_f_f_e_r │ │ │ │ │ -cl_mem GetVaryingPatchArrayBuffer() const │ │ │ │ │ -Returns the CL memory of the array of Osd::PatchArray buffer. │ │ │ │ │ -DDeeffiinniittiioonn _c_l_P_a_t_c_h_T_a_b_l_e_._h_:_7_7 │ │ │ │ │ +DDeeffiinniittiioonn _c_l_V_e_r_t_e_x_B_u_f_f_e_r_._h_:_4_9 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_V_e_r_t_e_x_B_u_f_f_e_r_:_:_B_i_n_d_C_L_B_u_f_f_e_r │ │ │ │ │ +cl_mem BindCLBuffer(cl_command_queue queue) │ │ │ │ │ +Returns the CL memory object. │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _o_s_d │ │ │ │ │ - * _c_l_P_a_t_c_h_T_a_b_l_e_._h │ │ │ │ │ + * _c_l_V_e_r_t_e_x_B_u_f_f_e_r_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00803.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/osd/clVertexBuffer.h File Reference │ │ │ │ +OpenSubdiv: opensubdiv/osd/mtlCommon.h File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -90,26 +90,25 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
clVertexBuffer.h File Reference
│ │ │ │ +
mtlCommon.h File Reference
│ │ │ │
│ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ -#include "../osd/opencl.h"
│ │ │ │ +#include <cstddef>
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  CLVertexBuffer
 Concrete vertex buffer class for OpenCL subdivision. More...
class  MTLContext
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -118,13 +117,13 @@ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  OpenSubdiv
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION
 
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,24 +1,23 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -clVertexBuffer.h File Reference │ │ │ │ │ +mtlCommon.h File Reference │ │ │ │ │ #include "../version.h" │ │ │ │ │ -#include "_._._/_o_s_d_/_o_p_e_n_c_l_._h" │ │ │ │ │ +#include │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -class   _C_L_V_e_r_t_e_x_B_u_f_f_e_r │ │ │ │ │ -  Concrete vertex buffer class for OpenCL subdivision. _M_o_r_e_._._. │ │ │ │ │ +class   _M_T_L_C_o_n_t_e_x_t │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d │ │ │ │ │   │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _o_s_d │ │ │ │ │ - * _c_l_V_e_r_t_e_x_B_u_f_f_e_r_._h │ │ │ │ │ + * _m_t_l_C_o_m_m_o_n_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00803.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -1,3 +1,3 @@ │ │ │ │ │ var a00803 = [ │ │ │ │ │ - ["CLVertexBuffer", "a01157.html", "a01157"] │ │ │ │ │ + ["MTLContext", "a01285.html", "a01285"] │ │ │ │ │ ]; │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00803_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/osd/clVertexBuffer.h Source File │ │ │ │ +OpenSubdiv: opensubdiv/osd/mtlCommon.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -92,15 +92,15 @@ │ │ │ │
No Matches
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
clVertexBuffer.h
│ │ │ │ +
mtlCommon.h
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1//
│ │ │ │
2// Copyright 2013 Pixar
│ │ │ │
3//
│ │ │ │
4// Licensed under the Apache License, Version 2.0 (the "Apache License")
│ │ │ │
5// with the following modification; you may not use this file except in
│ │ │ │ @@ -119,95 +119,53 @@ │ │ │ │
18// Unless required by applicable law or agreed to in writing, software
│ │ │ │
19// distributed under the Apache License with the above modification is
│ │ │ │
20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
│ │ │ │
21// KIND, either express or implied. See the Apache License for the specific
│ │ │ │
22// language governing permissions and limitations under the Apache License.
│ │ │ │
23//
│ │ │ │
24
│ │ │ │ -
25#ifndef OPENSUBDIV3_OSD_CL_VERTEX_BUFFER_H
│ │ │ │ -
26#define OPENSUBDIV3_OSD_CL_VERTEX_BUFFER_H
│ │ │ │ +
25#ifndef OPENSUBDIV3_OSD_MTL_COMMON_H
│ │ │ │ +
26#define OPENSUBDIV3_OSD_MTL_COMMON_H
│ │ │ │
27
│ │ │ │
28#include "../version.h"
│ │ │ │ -
29#include "../osd/opencl.h"
│ │ │ │ -
30
│ │ │ │ -
31namespace OpenSubdiv {
│ │ │ │ -
32namespace OPENSUBDIV_VERSION {
│ │ │ │ -
33
│ │ │ │ -
34namespace Osd {
│ │ │ │ -
35
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
43
│ │ │ │ -
44public:
│ │ │ │ -
46 static CLVertexBuffer * Create(int numElements, int numVertices, cl_context clContext);
│ │ │ │ +
29
│ │ │ │ +
30#include <cstddef>
│ │ │ │ +
31
│ │ │ │ +
32@protocol MTLDevice;
│ │ │ │ +
33@protocol MTLCommandQueue;
│ │ │ │ +
34
│ │ │ │ +
35namespace OpenSubdiv {
│ │ │ │ +
36namespace OPENSUBDIV_VERSION {
│ │ │ │ +
37
│ │ │ │ +
38namespace Osd {
│ │ │ │ +
39
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
41public:
│ │ │ │ +
42 id<MTLDevice> device = nullptr;
│ │ │ │ +
43 id<MTLCommandQueue> commandQueue = nullptr;
│ │ │ │ +
44};
│ │ │ │ +
│ │ │ │ +
45
│ │ │ │ +
46} // end namespace Osd
│ │ │ │
47
│ │ │ │ -
48 template <typename DEVICE_CONTEXT>
│ │ │ │ -
│ │ │ │ -
49 static CLVertexBuffer * Create(int numElements, int numVertices,
│ │ │ │ -
50 DEVICE_CONTEXT context) {
│ │ │ │ -
51 return Create(numElements, numVertices, context->GetContext());
│ │ │ │ -
52 }
│ │ │ │ -
│ │ │ │ -
53
│ │ │ │ - │ │ │ │ -
56
│ │ │ │ -
59 void UpdateData(const float *src, int startVertex, int numVertices, cl_command_queue clQueue,
│ │ │ │ -
60 cl_event* startEvents = NULL, unsigned int numStartEvents = 0, cl_event* endEvent = NULL);
│ │ │ │ -
61
│ │ │ │ -
62 template<typename DEVICE_CONTEXT>
│ │ │ │ -
│ │ │ │ -
63 void UpdateData(const float *src, int startVertex, int numVertices,
│ │ │ │ -
64 DEVICE_CONTEXT context,
│ │ │ │ -
65 cl_event* startEvents = NULL, unsigned int numStartEvents = 0, cl_event* endEvent = NULL) {
│ │ │ │ -
66 UpdateData(src, startVertex, numVertices, context->GetCommandQueue(), startEvents, numStartEvents, endEvent);
│ │ │ │ -
67 }
│ │ │ │ -
│ │ │ │ -
68
│ │ │ │ -
70 int GetNumElements() const;
│ │ │ │ -
71
│ │ │ │ -
73 int GetNumVertices() const;
│ │ │ │ -
74
│ │ │ │ -
76 cl_mem BindCLBuffer(cl_command_queue queue);
│ │ │ │ -
77
│ │ │ │ -
78protected:
│ │ │ │ -
80 CLVertexBuffer(int numElements, int numVertices, cl_context clContext);
│ │ │ │ -
81
│ │ │ │ -
84 bool allocate(cl_context clContext);
│ │ │ │ -
85
│ │ │ │ -
86private:
│ │ │ │ -
87 int _numElements;
│ │ │ │ -
88 int _numVertices;
│ │ │ │ -
89 cl_mem _clMemory;
│ │ │ │ -
90};
│ │ │ │ -
│ │ │ │ -
91
│ │ │ │ -
92} // end namespace Osd
│ │ │ │ -
93
│ │ │ │ -
94} // end namespace OPENSUBDIV_VERSION
│ │ │ │ -
95using namespace OPENSUBDIV_VERSION;
│ │ │ │ -
96
│ │ │ │ -
97} // end namespace OpenSubdiv
│ │ │ │ -
98
│ │ │ │ -
99#endif // OPENSUBDIV3_OSD_CL_VERTEX_BUFFER_H
│ │ │ │ +
48} // end namespace OPENSUBDIV_VERSION
│ │ │ │ +
49using namespace OPENSUBDIV_VERSION;
│ │ │ │ +
50
│ │ │ │ +
51} // end namespace OpenSubdiv
│ │ │ │ +
52
│ │ │ │ +
53#endif //OPENSUBDIV3_OSD_MTL_COMMON_H
│ │ │ │ │ │ │ │ -
Concrete vertex buffer class for OpenCL subdivision.
│ │ │ │ -
void UpdateData(const float *src, int startVertex, int numVertices, DEVICE_CONTEXT context, cl_event *startEvents=NULL, unsigned int numStartEvents=0, cl_event *endEvent=NULL)
│ │ │ │ - │ │ │ │ -
CLVertexBuffer(int numElements, int numVertices, cl_context clContext)
Constructor.
│ │ │ │ -
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)
│ │ │ │ -
int GetNumElements() const
Returns how many elements defined in this vertex buffer.
│ │ │ │ - │ │ │ │ -
int GetNumVertices() const
Returns how many vertices allocated in this vertex buffer.
│ │ │ │ -
static CLVertexBuffer * Create(int numElements, int numVertices, cl_context clContext)
Creator. Returns NULL if error.
│ │ │ │ -
static CLVertexBuffer * Create(int numElements, int numVertices, DEVICE_CONTEXT context)
│ │ │ │ -
cl_mem BindCLBuffer(cl_command_queue queue)
Returns the CL memory object.
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,12 +1,12 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ -clVertexBuffer.h │ │ │ │ │ +mtlCommon.h │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// │ │ │ │ │ 2// Copyright 2013 Pixar │ │ │ │ │ 3// │ │ │ │ │ 4// Licensed under the Apache License, Version 2.0 (the "Apache License") │ │ │ │ │ 5// with the following modification; you may not use this file except in │ │ │ │ │ 6// compliance with the Apache License and the following modification to it: │ │ │ │ │ @@ -24,114 +24,50 @@ │ │ │ │ │ 18// Unless required by applicable law or agreed to in writing, software │ │ │ │ │ 19// distributed under the Apache License with the above modification is │ │ │ │ │ 20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY │ │ │ │ │ 21// KIND, either express or implied. See the Apache License for the specific │ │ │ │ │ 22// language governing permissions and limitations under the Apache License. │ │ │ │ │ 23// │ │ │ │ │ 24 │ │ │ │ │ -25#ifndef OPENSUBDIV3_OSD_CL_VERTEX_BUFFER_H │ │ │ │ │ -26#define OPENSUBDIV3_OSD_CL_VERTEX_BUFFER_H │ │ │ │ │ +25#ifndef OPENSUBDIV3_OSD_MTL_COMMON_H │ │ │ │ │ +26#define OPENSUBDIV3_OSD_MTL_COMMON_H │ │ │ │ │ 27 │ │ │ │ │ 28#include "../version.h" │ │ │ │ │ -29#include "../osd/opencl.h" │ │ │ │ │ -30 │ │ │ │ │ -31namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ -32namespace OPENSUBDIV_VERSION { │ │ │ │ │ -33 │ │ │ │ │ -34namespace Osd { │ │ │ │ │ -35 │ │ │ │ │ -_4_2class _C_L_V_e_r_t_e_x_B_u_f_f_e_r { │ │ │ │ │ -43 │ │ │ │ │ -44public: │ │ │ │ │ -_4_6 static _C_L_V_e_r_t_e_x_B_u_f_f_e_r * _C_r_e_a_t_e(int numElements, int numVertices, cl_context │ │ │ │ │ -clContext); │ │ │ │ │ +29 │ │ │ │ │ +30#include │ │ │ │ │ +31 │ │ │ │ │ +32@protocol MTLDevice; │ │ │ │ │ +33@protocol MTLCommandQueue; │ │ │ │ │ +34 │ │ │ │ │ +35namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ +36namespace OPENSUBDIV_VERSION { │ │ │ │ │ +37 │ │ │ │ │ +38namespace Osd { │ │ │ │ │ +39 │ │ │ │ │ +_4_0class _M_T_L_C_o_n_t_e_x_t { │ │ │ │ │ +41public: │ │ │ │ │ +_4_2 id _d_e_v_i_c_e = nullptr; │ │ │ │ │ +_4_3 id _c_o_m_m_a_n_d_Q_u_e_u_e = nullptr; │ │ │ │ │ +44}; │ │ │ │ │ +45 │ │ │ │ │ +46} // end namespace Osd │ │ │ │ │ 47 │ │ │ │ │ -48 template │ │ │ │ │ -_4_9 static _C_L_V_e_r_t_e_x_B_u_f_f_e_r * _C_r_e_a_t_e(int numElements, int numVertices, │ │ │ │ │ -50 DEVICE_CONTEXT context) { │ │ │ │ │ -51 return _C_r_e_a_t_e(numElements, numVertices, context->GetContext()); │ │ │ │ │ -52 } │ │ │ │ │ -53 │ │ │ │ │ -_5_5 _~_C_L_V_e_r_t_e_x_B_u_f_f_e_r(); │ │ │ │ │ -56 │ │ │ │ │ -_5_9 void _U_p_d_a_t_e_D_a_t_a(const float *src, int startVertex, int numVertices, │ │ │ │ │ -cl_command_queue clQueue, │ │ │ │ │ -60 cl_event* startEvents = NULL, unsigned int numStartEvents = 0, cl_event* │ │ │ │ │ -endEvent = NULL); │ │ │ │ │ -61 │ │ │ │ │ -62 template │ │ │ │ │ -_6_3 void _U_p_d_a_t_e_D_a_t_a(const float *src, int startVertex, int numVertices, │ │ │ │ │ -64 DEVICE_CONTEXT context, │ │ │ │ │ -65 cl_event* startEvents = NULL, unsigned int numStartEvents = 0, cl_event* │ │ │ │ │ -endEvent = NULL) { │ │ │ │ │ -66 _U_p_d_a_t_e_D_a_t_a(src, startVertex, numVertices, context->GetCommandQueue(), │ │ │ │ │ -startEvents, numStartEvents, endEvent); │ │ │ │ │ -67 } │ │ │ │ │ -68 │ │ │ │ │ -_7_0 int _G_e_t_N_u_m_E_l_e_m_e_n_t_s() const; │ │ │ │ │ -71 │ │ │ │ │ -_7_3 int _G_e_t_N_u_m_V_e_r_t_i_c_e_s() const; │ │ │ │ │ -74 │ │ │ │ │ -_7_6 cl_mem _B_i_n_d_C_L_B_u_f_f_e_r(cl_command_queue queue); │ │ │ │ │ -77 │ │ │ │ │ -78protected: │ │ │ │ │ -_8_0 _C_L_V_e_r_t_e_x_B_u_f_f_e_r(int numElements, int numVertices, cl_context clContext); │ │ │ │ │ -81 │ │ │ │ │ -_8_4 bool _a_l_l_o_c_a_t_e(cl_context clContext); │ │ │ │ │ -85 │ │ │ │ │ -86private: │ │ │ │ │ -87 int _numElements; │ │ │ │ │ -88 int _numVertices; │ │ │ │ │ -89 cl_mem _clMemory; │ │ │ │ │ -90}; │ │ │ │ │ -91 │ │ │ │ │ -92} // end namespace Osd │ │ │ │ │ -93 │ │ │ │ │ -94} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ -95using namespace OPENSUBDIV_VERSION; │ │ │ │ │ -96 │ │ │ │ │ -97} // end namespace OpenSubdiv │ │ │ │ │ -98 │ │ │ │ │ -99#endif // OPENSUBDIV3_OSD_CL_VERTEX_BUFFER_H │ │ │ │ │ +48} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ +49using namespace OPENSUBDIV_VERSION; │ │ │ │ │ +50 │ │ │ │ │ +51} // end namespace OpenSubdiv │ │ │ │ │ +52 │ │ │ │ │ +53#endif //OPENSUBDIV3_OSD_MTL_COMMON_H │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v │ │ │ │ │ DDeeffiinniittiioonn _l_i_m_i_t_s_._h_:_3_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_V_e_r_t_e_x_B_u_f_f_e_r │ │ │ │ │ -Concrete vertex buffer class for OpenCL subdivision. │ │ │ │ │ -DDeeffiinniittiioonn _c_l_V_e_r_t_e_x_B_u_f_f_e_r_._h_:_4_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_V_e_r_t_e_x_B_u_f_f_e_r_:_:_U_p_d_a_t_e_D_a_t_a │ │ │ │ │ -void UpdateData(const float *src, int startVertex, int numVertices, │ │ │ │ │ -DEVICE_CONTEXT context, cl_event *startEvents=NULL, unsigned int │ │ │ │ │ -numStartEvents=0, cl_event *endEvent=NULL) │ │ │ │ │ -DDeeffiinniittiioonn _c_l_V_e_r_t_e_x_B_u_f_f_e_r_._h_:_6_3 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_V_e_r_t_e_x_B_u_f_f_e_r_:_:_~_C_L_V_e_r_t_e_x_B_u_f_f_e_r │ │ │ │ │ -~CLVertexBuffer() │ │ │ │ │ -Destructor. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_V_e_r_t_e_x_B_u_f_f_e_r_:_:_C_L_V_e_r_t_e_x_B_u_f_f_e_r │ │ │ │ │ -CLVertexBuffer(int numElements, int numVertices, cl_context clContext) │ │ │ │ │ -Constructor. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_V_e_r_t_e_x_B_u_f_f_e_r_:_:_U_p_d_a_t_e_D_a_t_a │ │ │ │ │ -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) │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_V_e_r_t_e_x_B_u_f_f_e_r_:_:_G_e_t_N_u_m_E_l_e_m_e_n_t_s │ │ │ │ │ -int GetNumElements() const │ │ │ │ │ -Returns how many elements defined in this vertex buffer. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_V_e_r_t_e_x_B_u_f_f_e_r_:_:_a_l_l_o_c_a_t_e │ │ │ │ │ -bool allocate(cl_context clContext) │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_V_e_r_t_e_x_B_u_f_f_e_r_:_:_G_e_t_N_u_m_V_e_r_t_i_c_e_s │ │ │ │ │ -int GetNumVertices() const │ │ │ │ │ -Returns how many vertices allocated in this vertex buffer. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_V_e_r_t_e_x_B_u_f_f_e_r_:_:_C_r_e_a_t_e │ │ │ │ │ -static CLVertexBuffer * Create(int numElements, int numVertices, cl_context │ │ │ │ │ -clContext) │ │ │ │ │ -Creator. Returns NULL if error. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_V_e_r_t_e_x_B_u_f_f_e_r_:_:_C_r_e_a_t_e │ │ │ │ │ -static CLVertexBuffer * Create(int numElements, int numVertices, DEVICE_CONTEXT │ │ │ │ │ -context) │ │ │ │ │ -DDeeffiinniittiioonn _c_l_V_e_r_t_e_x_B_u_f_f_e_r_._h_:_4_9 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_V_e_r_t_e_x_B_u_f_f_e_r_:_:_B_i_n_d_C_L_B_u_f_f_e_r │ │ │ │ │ -cl_mem BindCLBuffer(cl_command_queue queue) │ │ │ │ │ -Returns the CL memory object. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_M_T_L_C_o_n_t_e_x_t │ │ │ │ │ +DDeeffiinniittiioonn _m_t_l_C_o_m_m_o_n_._h_:_4_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_M_T_L_C_o_n_t_e_x_t_:_:_c_o_m_m_a_n_d_Q_u_e_u_e │ │ │ │ │ +id< MTLCommandQueue > commandQueue │ │ │ │ │ +DDeeffiinniittiioonn _m_t_l_C_o_m_m_o_n_._h_:_4_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_M_T_L_C_o_n_t_e_x_t_:_:_d_e_v_i_c_e │ │ │ │ │ +id< MTLDevice > device │ │ │ │ │ +DDeeffiinniittiioonn _m_t_l_C_o_m_m_o_n_._h_:_4_2 │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _o_s_d │ │ │ │ │ - * _c_l_V_e_r_t_e_x_B_u_f_f_e_r_._h │ │ │ │ │ + * _m_t_l_C_o_m_m_o_n_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00806.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/osd/mtlCommon.h File Reference │ │ │ │ +OpenSubdiv: opensubdiv/osd/clEvaluator.h File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -90,40 +90,47 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
mtlCommon.h File Reference
│ │ │ │ +
clEvaluator.h File Reference
│ │ │ │
│ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ -#include <cstddef>
│ │ │ │ +#include "../osd/opencl.h"
│ │ │ │ +#include "../osd/types.h"
│ │ │ │ +#include "../osd/bufferDescriptor.h"
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  MTLContext
class  CLStencilTable
 OpenCL stencil table. More...
 
class  CLEvaluator
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  OpenSubdiv
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION::Far
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION::Osd
 
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,23 +1,30 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -mtlCommon.h File Reference │ │ │ │ │ +clEvaluator.h File Reference │ │ │ │ │ #include "../version.h" │ │ │ │ │ -#include │ │ │ │ │ +#include "_._._/_o_s_d_/_o_p_e_n_c_l_._h" │ │ │ │ │ +#include "_._._/_o_s_d_/_t_y_p_e_s_._h" │ │ │ │ │ +#include "_._._/_o_s_d_/_b_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r_._h" │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -class   _M_T_L_C_o_n_t_e_x_t │ │ │ │ │ +class   _C_L_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ +  OpenCL stencil table. _M_o_r_e_._._. │ │ │ │ │ +  │ │ │ │ │ +class   _C_L_E_v_a_l_u_a_t_o_r │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N │ │ │ │ │   │ │ │ │ │ +namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r │ │ │ │ │ +  │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d │ │ │ │ │   │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _o_s_d │ │ │ │ │ - * _m_t_l_C_o_m_m_o_n_._h │ │ │ │ │ + * _c_l_E_v_a_l_u_a_t_o_r_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00806.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -1,3 +1,4 @@ │ │ │ │ │ var a00806 = [ │ │ │ │ │ - ["MTLContext", "a01285.html", "a01285"] │ │ │ │ │ + ["CLStencilTable", "a01145.html", "a01145"], │ │ │ │ │ + ["CLEvaluator", "a01149.html", "a01149"] │ │ │ │ │ ]; │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00806_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/osd/mtlCommon.h Source File │ │ │ │ +OpenSubdiv: opensubdiv/osd/clEvaluator.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -92,19 +92,19 @@ │ │ │ │
No Matches
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
mtlCommon.h
│ │ │ │ +
clEvaluator.h
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1//
│ │ │ │ -
2// Copyright 2013 Pixar
│ │ │ │ +
2// Copyright 2015 Pixar
│ │ │ │
3//
│ │ │ │
4// Licensed under the Apache License, Version 2.0 (the "Apache License")
│ │ │ │
5// with the following modification; you may not use this file except in
│ │ │ │
6// compliance with the Apache License and the following modification to it:
│ │ │ │
7// Section 6. Trademarks. is deleted and replaced with:
│ │ │ │
8//
│ │ │ │
9// 6. Trademarks. This License does not grant permission to use the trade
│ │ │ │ @@ -119,53 +119,1283 @@ │ │ │ │
18// Unless required by applicable law or agreed to in writing, software
│ │ │ │
19// distributed under the Apache License with the above modification is
│ │ │ │
20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
│ │ │ │
21// KIND, either express or implied. See the Apache License for the specific
│ │ │ │
22// language governing permissions and limitations under the Apache License.
│ │ │ │
23//
│ │ │ │
24
│ │ │ │ -
25#ifndef OPENSUBDIV3_OSD_MTL_COMMON_H
│ │ │ │ -
26#define OPENSUBDIV3_OSD_MTL_COMMON_H
│ │ │ │ +
25#ifndef OPENSUBDIV3_OSD_CL_EVALUATOR_H
│ │ │ │ +
26#define OPENSUBDIV3_OSD_CL_EVALUATOR_H
│ │ │ │
27
│ │ │ │
28#include "../version.h"
│ │ │ │
29
│ │ │ │ -
30#include <cstddef>
│ │ │ │ -
31
│ │ │ │ -
32@protocol MTLDevice;
│ │ │ │ -
33@protocol MTLCommandQueue;
│ │ │ │ -
34
│ │ │ │ -
35namespace OpenSubdiv {
│ │ │ │ -
36namespace OPENSUBDIV_VERSION {
│ │ │ │ -
37
│ │ │ │ -
38namespace Osd {
│ │ │ │ -
39
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
41public:
│ │ │ │ -
42 id<MTLDevice> device = nullptr;
│ │ │ │ -
43 id<MTLCommandQueue> commandQueue = nullptr;
│ │ │ │ -
44};
│ │ │ │ -
│ │ │ │ -
45
│ │ │ │ -
46} // end namespace Osd
│ │ │ │ -
47
│ │ │ │ -
48} // end namespace OPENSUBDIV_VERSION
│ │ │ │ -
49using namespace OPENSUBDIV_VERSION;
│ │ │ │ -
50
│ │ │ │ -
51} // end namespace OpenSubdiv
│ │ │ │ -
52
│ │ │ │ -
53#endif //OPENSUBDIV3_OSD_MTL_COMMON_H
│ │ │ │ +
30#include "../osd/opencl.h"
│ │ │ │ +
31#include "../osd/types.h"
│ │ │ │ +
32#include "../osd/bufferDescriptor.h"
│ │ │ │ +
33
│ │ │ │ +
34namespace OpenSubdiv {
│ │ │ │ +
35namespace OPENSUBDIV_VERSION {
│ │ │ │ +
36
│ │ │ │ +
37namespace Far {
│ │ │ │ +
38 class PatchTable;
│ │ │ │ +
39 class StencilTable;
│ │ │ │ +
40 class LimitStencilTable;
│ │ │ │ +
41}
│ │ │ │ +
42
│ │ │ │ +
43namespace Osd {
│ │ │ │ +
44
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
53public:
│ │ │ │ +
54 template <typename DEVICE_CONTEXT>
│ │ │ │ +
│ │ │ │ +
55 static CLStencilTable *Create(Far::StencilTable const *stencilTable,
│ │ │ │ +
56 DEVICE_CONTEXT context) {
│ │ │ │ +
57 return new CLStencilTable(stencilTable, context->GetContext());
│ │ │ │ +
58 }
│ │ │ │ +
│ │ │ │ +
59
│ │ │ │ +
60 template <typename DEVICE_CONTEXT>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
62 Far::LimitStencilTable const *limitStencilTable,
│ │ │ │ +
63 DEVICE_CONTEXT context) {
│ │ │ │ +
64 return new CLStencilTable(limitStencilTable, context->GetContext());
│ │ │ │ +
65 }
│ │ │ │ +
│ │ │ │ +
66
│ │ │ │ +
67 CLStencilTable(Far::StencilTable const *stencilTable,
│ │ │ │ +
68 cl_context clContext);
│ │ │ │ +
69 CLStencilTable(Far::LimitStencilTable const *limitStencilTable,
│ │ │ │ +
70 cl_context clContext);
│ │ │ │ + │ │ │ │ +
72
│ │ │ │ +
73 // interfaces needed for CLComputeKernel
│ │ │ │ +
74 cl_mem GetSizesBuffer() const { return _sizes; }
│ │ │ │ +
75 cl_mem GetOffsetsBuffer() const { return _offsets; }
│ │ │ │ +
76 cl_mem GetIndicesBuffer() const { return _indices; }
│ │ │ │ +
77 cl_mem GetWeightsBuffer() const { return _weights; }
│ │ │ │ +
78 cl_mem GetDuWeightsBuffer() const { return _duWeights; }
│ │ │ │ +
79 cl_mem GetDvWeightsBuffer() const { return _dvWeights; }
│ │ │ │ +
80 cl_mem GetDuuWeightsBuffer() const { return _duuWeights; }
│ │ │ │ +
81 cl_mem GetDuvWeightsBuffer() const { return _duvWeights; }
│ │ │ │ +
82 cl_mem GetDvvWeightsBuffer() const { return _dvvWeights; }
│ │ │ │ +
83 int GetNumStencils() const { return _numStencils; }
│ │ │ │ +
84
│ │ │ │ +
85private:
│ │ │ │ +
86 cl_mem _sizes;
│ │ │ │ +
87 cl_mem _offsets;
│ │ │ │ +
88 cl_mem _indices;
│ │ │ │ +
89 cl_mem _weights;
│ │ │ │ +
90 cl_mem _duWeights;
│ │ │ │ +
91 cl_mem _dvWeights;
│ │ │ │ +
92 cl_mem _duuWeights;
│ │ │ │ +
93 cl_mem _duvWeights;
│ │ │ │ +
94 cl_mem _dvvWeights;
│ │ │ │ +
95 int _numStencils;
│ │ │ │ +
96};
│ │ │ │ +
│ │ │ │ +
97
│ │ │ │ +
98// ---------------------------------------------------------------------------
│ │ │ │ +
99
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
101public:
│ │ │ │ +
102 typedef bool Instantiatable;
│ │ │ │ +
103
│ │ │ │ +
105 template <typename DEVICE_CONTEXT>
│ │ │ │ +
│ │ │ │ +
106 static CLEvaluator *Create(BufferDescriptor const &srcDesc,
│ │ │ │ +
107 BufferDescriptor const &dstDesc,
│ │ │ │ +
108 BufferDescriptor const &duDesc,
│ │ │ │ +
109 BufferDescriptor const &dvDesc,
│ │ │ │ +
110 DEVICE_CONTEXT deviceContext) {
│ │ │ │ +
111 return Create(srcDesc, dstDesc, duDesc, dvDesc,
│ │ │ │ +
112 deviceContext->GetContext(),
│ │ │ │ +
113 deviceContext->GetCommandQueue());
│ │ │ │ +
114 }
│ │ │ │ +
│ │ │ │ +
115
│ │ │ │ +
│ │ │ │ +
116 static CLEvaluator * Create(BufferDescriptor const &srcDesc,
│ │ │ │ +
117 BufferDescriptor const &dstDesc,
│ │ │ │ +
118 BufferDescriptor const &duDesc,
│ │ │ │ +
119 BufferDescriptor const &dvDesc,
│ │ │ │ +
120 cl_context clContext,
│ │ │ │ +
121 cl_command_queue clCommandQueue) {
│ │ │ │ +
122 CLEvaluator *instance = new CLEvaluator(clContext, clCommandQueue);
│ │ │ │ +
123 if (instance->Compile(srcDesc, dstDesc, duDesc, dvDesc))
│ │ │ │ +
124 return instance;
│ │ │ │ +
125 delete instance;
│ │ │ │ +
126 return NULL;
│ │ │ │ +
127 }
│ │ │ │ +
│ │ │ │ +
128
│ │ │ │ +
130 template <typename DEVICE_CONTEXT>
│ │ │ │ +
│ │ │ │ +
131 static CLEvaluator *Create(BufferDescriptor const &srcDesc,
│ │ │ │ +
132 BufferDescriptor const &dstDesc,
│ │ │ │ +
133 BufferDescriptor const &duDesc,
│ │ │ │ +
134 BufferDescriptor const &dvDesc,
│ │ │ │ +
135 BufferDescriptor const &duuDesc,
│ │ │ │ +
136 BufferDescriptor const &duvDesc,
│ │ │ │ +
137 BufferDescriptor const &dvvDesc,
│ │ │ │ +
138 DEVICE_CONTEXT deviceContext) {
│ │ │ │ +
139 return Create(srcDesc, dstDesc, duDesc, dvDesc,
│ │ │ │ +
140 duuDesc, duvDesc, dvvDesc,
│ │ │ │ +
141 deviceContext->GetContext(),
│ │ │ │ +
142 deviceContext->GetCommandQueue());
│ │ │ │ +
143 }
│ │ │ │ +
│ │ │ │ +
144
│ │ │ │ +
│ │ │ │ +
145 static CLEvaluator * Create(BufferDescriptor const &srcDesc,
│ │ │ │ +
146 BufferDescriptor const &dstDesc,
│ │ │ │ +
147 BufferDescriptor const &duDesc,
│ │ │ │ +
148 BufferDescriptor const &dvDesc,
│ │ │ │ +
149 BufferDescriptor const &duuDesc,
│ │ │ │ +
150 BufferDescriptor const &duvDesc,
│ │ │ │ +
151 BufferDescriptor const &dvvDesc,
│ │ │ │ +
152 cl_context clContext,
│ │ │ │ +
153 cl_command_queue clCommandQueue) {
│ │ │ │ +
154 CLEvaluator *instance = new CLEvaluator(clContext, clCommandQueue);
│ │ │ │ +
155 if (instance->Compile(srcDesc, dstDesc, duDesc, dvDesc,
│ │ │ │ +
156 duuDesc, duvDesc, dvvDesc))
│ │ │ │ +
157 return instance;
│ │ │ │ +
158 delete instance;
│ │ │ │ +
159 return NULL;
│ │ │ │ +
160 }
│ │ │ │ +
│ │ │ │ +
161
│ │ │ │ +
163 CLEvaluator(cl_context context, cl_command_queue queue);
│ │ │ │ +
164
│ │ │ │ + │ │ │ │ +
167
│ │ │ │ +
173
│ │ │ │ +
217 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
218 typename STENCIL_TABLE, typename DEVICE_CONTEXT>
│ │ │ │ +
│ │ │ │ +
219 static bool EvalStencils(
│ │ │ │ +
220 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
221 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
222 STENCIL_TABLE const *stencilTable,
│ │ │ │ +
223 CLEvaluator const *instance,
│ │ │ │ +
224 DEVICE_CONTEXT deviceContext,
│ │ │ │ +
225 unsigned int numStartEvents=0,
│ │ │ │ +
226 const cl_event* startEvents=NULL,
│ │ │ │ +
227 cl_event* endEvent=NULL) {
│ │ │ │ +
228
│ │ │ │ +
229 if (instance) {
│ │ │ │ +
230 return instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │ +
231 dstBuffer, dstDesc,
│ │ │ │ +
232 stencilTable,
│ │ │ │ +
233 numStartEvents, startEvents, endEvent);
│ │ │ │ +
234 } else {
│ │ │ │ +
235 // Create an instance on demand (slow)
│ │ │ │ +
236 instance = Create(srcDesc, dstDesc,
│ │ │ │ + │ │ │ │ + │ │ │ │ +
239 deviceContext);
│ │ │ │ +
240 if (instance) {
│ │ │ │ +
241 bool r = instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │ +
242 dstBuffer, dstDesc,
│ │ │ │ +
243 stencilTable,
│ │ │ │ +
244 numStartEvents, startEvents, endEvent);
│ │ │ │ +
245 delete instance;
│ │ │ │ +
246 return r;
│ │ │ │ +
247 }
│ │ │ │ +
248 return false;
│ │ │ │ +
249 }
│ │ │ │ +
250 }
│ │ │ │ +
│ │ │ │ +
251
│ │ │ │ +
307 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
308 typename STENCIL_TABLE, typename DEVICE_CONTEXT>
│ │ │ │ +
│ │ │ │ +
309 static bool EvalStencils(
│ │ │ │ +
310 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
311 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
312 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
313 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
314 STENCIL_TABLE const *stencilTable,
│ │ │ │ +
315 CLEvaluator const *instance,
│ │ │ │ +
316 DEVICE_CONTEXT deviceContext,
│ │ │ │ +
317 unsigned int numStartEvents=0,
│ │ │ │ +
318 const cl_event* startEvents=NULL,
│ │ │ │ +
319 cl_event* endEvent=NULL) {
│ │ │ │ +
320
│ │ │ │ +
321 if (instance) {
│ │ │ │ +
322 return instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │ +
323 dstBuffer, dstDesc,
│ │ │ │ +
324 duBuffer, duDesc,
│ │ │ │ +
325 dvBuffer, dvDesc,
│ │ │ │ +
326 stencilTable,
│ │ │ │ +
327 numStartEvents, startEvents, endEvent);
│ │ │ │ +
328 } else {
│ │ │ │ +
329 // Create an instance on demand (slow)
│ │ │ │ +
330 instance = Create(srcDesc, dstDesc, duDesc, dvDesc,
│ │ │ │ +
331 deviceContext);
│ │ │ │ +
332 if (instance) {
│ │ │ │ +
333 bool r = instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │ +
334 dstBuffer, dstDesc,
│ │ │ │ +
335 duBuffer, duDesc,
│ │ │ │ +
336 dvBuffer, dvDesc,
│ │ │ │ +
337 stencilTable,
│ │ │ │ +
338 numStartEvents, startEvents, endEvent);
│ │ │ │ +
339 delete instance;
│ │ │ │ +
340 return r;
│ │ │ │ +
341 }
│ │ │ │ +
342 return false;
│ │ │ │ +
343 }
│ │ │ │ +
344 }
│ │ │ │ +
│ │ │ │ +
345
│ │ │ │ +
419 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
420 typename STENCIL_TABLE, typename DEVICE_CONTEXT>
│ │ │ │ +
│ │ │ │ +
421 static bool EvalStencils(
│ │ │ │ +
422 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
423 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
424 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
425 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
426 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ +
427 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ +
428 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ +
429 STENCIL_TABLE const *stencilTable,
│ │ │ │ +
430 CLEvaluator const *instance,
│ │ │ │ +
431 DEVICE_CONTEXT deviceContext,
│ │ │ │ +
432 unsigned int numStartEvents=0,
│ │ │ │ +
433 const cl_event* startEvents=NULL,
│ │ │ │ +
434 cl_event* endEvent=NULL) {
│ │ │ │ +
435
│ │ │ │ +
436 if (instance) {
│ │ │ │ +
437 return instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │ +
438 dstBuffer, dstDesc,
│ │ │ │ +
439 duBuffer, duDesc,
│ │ │ │ +
440 dvBuffer, dvDesc,
│ │ │ │ +
441 duuBuffer, duuDesc,
│ │ │ │ +
442 duvBuffer, duvDesc,
│ │ │ │ +
443 dvvBuffer, dvvDesc,
│ │ │ │ +
444 stencilTable,
│ │ │ │ +
445 numStartEvents, startEvents, endEvent);
│ │ │ │ +
446 } else {
│ │ │ │ +
447 // Create an instance on demand (slow)
│ │ │ │ +
448 instance = Create(srcDesc, dstDesc,
│ │ │ │ +
449 duDesc, dvDesc,
│ │ │ │ +
450 duuDesc, duvDesc, dvvDesc,
│ │ │ │ +
451 deviceContext);
│ │ │ │ +
452 if (instance) {
│ │ │ │ +
453 bool r = instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │ +
454 dstBuffer, dstDesc,
│ │ │ │ +
455 duBuffer, duDesc,
│ │ │ │ +
456 dvBuffer, dvDesc,
│ │ │ │ +
457 duuBuffer, duuDesc,
│ │ │ │ +
458 duvBuffer, duvDesc,
│ │ │ │ +
459 dvvBuffer, dvvDesc,
│ │ │ │ +
460 stencilTable,
│ │ │ │ +
461 numStartEvents, startEvents, endEvent);
│ │ │ │ +
462 delete instance;
│ │ │ │ +
463 return r;
│ │ │ │ +
464 }
│ │ │ │ +
465 return false;
│ │ │ │ +
466 }
│ │ │ │ +
467 }
│ │ │ │ +
│ │ │ │ +
468
│ │ │ │ +
499 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
501 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
502 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
503 STENCIL_TABLE const *stencilTable,
│ │ │ │ +
504 unsigned int numStartEvents=0,
│ │ │ │ +
505 const cl_event* startEvents=NULL,
│ │ │ │ +
506 cl_event* endEvent=NULL) const {
│ │ │ │ +
507 return EvalStencils(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,
│ │ │ │ +
508 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,
│ │ │ │ +
509 stencilTable->GetSizesBuffer(),
│ │ │ │ +
510 stencilTable->GetOffsetsBuffer(),
│ │ │ │ +
511 stencilTable->GetIndicesBuffer(),
│ │ │ │ +
512 stencilTable->GetWeightsBuffer(),
│ │ │ │ +
513 0,
│ │ │ │ +
514 stencilTable->GetNumStencils(),
│ │ │ │ +
515 numStartEvents, startEvents, endEvent);
│ │ │ │ +
516 }
│ │ │ │ +
│ │ │ │ +
517
│ │ │ │ +
560 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
562 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
563 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
564 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
565 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
566 STENCIL_TABLE const *stencilTable,
│ │ │ │ +
567 unsigned int numStartEvents=0,
│ │ │ │ +
568 const cl_event* startEvents=NULL,
│ │ │ │ +
569 cl_event* endEvent=NULL) const {
│ │ │ │ +
570 return EvalStencils(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,
│ │ │ │ +
571 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,
│ │ │ │ +
572 duBuffer->BindCLBuffer(_clCommandQueue), duDesc,
│ │ │ │ +
573 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc,
│ │ │ │ +
574 stencilTable->GetSizesBuffer(),
│ │ │ │ +
575 stencilTable->GetOffsetsBuffer(),
│ │ │ │ +
576 stencilTable->GetIndicesBuffer(),
│ │ │ │ +
577 stencilTable->GetWeightsBuffer(),
│ │ │ │ +
578 stencilTable->GetDuWeightsBuffer(),
│ │ │ │ +
579 stencilTable->GetDvWeightsBuffer(),
│ │ │ │ +
580 0,
│ │ │ │ +
581 stencilTable->GetNumStencils(),
│ │ │ │ +
582 numStartEvents, startEvents, endEvent);
│ │ │ │ +
583 }
│ │ │ │ +
│ │ │ │ +
584
│ │ │ │ +
645 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
647 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
648 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
649 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
650 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
651 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ +
652 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ +
653 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ +
654 STENCIL_TABLE const *stencilTable,
│ │ │ │ +
655 unsigned int numStartEvents=0,
│ │ │ │ +
656 const cl_event* startEvents=NULL,
│ │ │ │ +
657 cl_event* endEvent=NULL) const {
│ │ │ │ +
658 return EvalStencils(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,
│ │ │ │ +
659 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,
│ │ │ │ +
660 duBuffer->BindCLBuffer(_clCommandQueue), duDesc,
│ │ │ │ +
661 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc,
│ │ │ │ +
662 duuBuffer->BindCLBuffer(_clCommandQueue), duuDesc,
│ │ │ │ +
663 duvBuffer->BindCLBuffer(_clCommandQueue), duvDesc,
│ │ │ │ +
664 dvvBuffer->BindCLBuffer(_clCommandQueue), dvvDesc,
│ │ │ │ +
665 stencilTable->GetSizesBuffer(),
│ │ │ │ +
666 stencilTable->GetOffsetsBuffer(),
│ │ │ │ +
667 stencilTable->GetIndicesBuffer(),
│ │ │ │ +
668 stencilTable->GetWeightsBuffer(),
│ │ │ │ +
669 stencilTable->GetDuWeightsBuffer(),
│ │ │ │ +
670 stencilTable->GetDvWeightsBuffer(),
│ │ │ │ +
671 stencilTable->GetDuuWeightsBuffer(),
│ │ │ │ +
672 stencilTable->GetDuvWeightsBuffer(),
│ │ │ │ +
673 stencilTable->GetDvvWeightsBuffer(),
│ │ │ │ +
674 0,
│ │ │ │ +
675 stencilTable->GetNumStencils(),
│ │ │ │ +
676 numStartEvents, startEvents, endEvent);
│ │ │ │ +
677 }
│ │ │ │ +
│ │ │ │ +
678
│ │ │ │ +
681 bool EvalStencils(cl_mem src, BufferDescriptor const &srcDesc,
│ │ │ │ +
682 cl_mem dst, BufferDescriptor const &dstDesc,
│ │ │ │ +
683 cl_mem sizes,
│ │ │ │ +
684 cl_mem offsets,
│ │ │ │ +
685 cl_mem indices,
│ │ │ │ +
686 cl_mem weights,
│ │ │ │ +
687 int start,
│ │ │ │ +
688 int end,
│ │ │ │ +
689 unsigned int numStartEvents=0,
│ │ │ │ +
690 const cl_event* startEvents=NULL,
│ │ │ │ +
691 cl_event* endEvent=NULL) const;
│ │ │ │ +
692
│ │ │ │ +
741 bool EvalStencils(cl_mem src, BufferDescriptor const &srcDesc,
│ │ │ │ +
742 cl_mem dst, BufferDescriptor const &dstDesc,
│ │ │ │ +
743 cl_mem du, BufferDescriptor const &duDesc,
│ │ │ │ +
744 cl_mem dv, BufferDescriptor const &dvDesc,
│ │ │ │ +
745 cl_mem sizes,
│ │ │ │ +
746 cl_mem offsets,
│ │ │ │ +
747 cl_mem indices,
│ │ │ │ +
748 cl_mem weights,
│ │ │ │ +
749 cl_mem duWeights,
│ │ │ │ +
750 cl_mem dvWeights,
│ │ │ │ +
751 int start,
│ │ │ │ +
752 int end,
│ │ │ │ +
753 unsigned int numStartEvents=0,
│ │ │ │ +
754 const cl_event* startEvents=NULL,
│ │ │ │ +
755 cl_event* endEvent=NULL) const;
│ │ │ │ +
756
│ │ │ │ +
823 bool EvalStencils(cl_mem src, BufferDescriptor const &srcDesc,
│ │ │ │ +
824 cl_mem dst, BufferDescriptor const &dstDesc,
│ │ │ │ +
825 cl_mem du, BufferDescriptor const &duDesc,
│ │ │ │ +
826 cl_mem dv, BufferDescriptor const &dvDesc,
│ │ │ │ +
827 cl_mem duu, BufferDescriptor const &duuDesc,
│ │ │ │ +
828 cl_mem duv, BufferDescriptor const &duvDesc,
│ │ │ │ +
829 cl_mem dvv, BufferDescriptor const &dvvDesc,
│ │ │ │ +
830 cl_mem sizes,
│ │ │ │ +
831 cl_mem offsets,
│ │ │ │ +
832 cl_mem indices,
│ │ │ │ +
833 cl_mem weights,
│ │ │ │ +
834 cl_mem duWeights,
│ │ │ │ +
835 cl_mem dvWeights,
│ │ │ │ +
836 cl_mem duuWeights,
│ │ │ │ +
837 cl_mem duvWeights,
│ │ │ │ +
838 cl_mem dvvWeights,
│ │ │ │ +
839 int start,
│ │ │ │ +
840 int end,
│ │ │ │ +
841 unsigned int numStartEvents=0,
│ │ │ │ +
842 const cl_event* startEvents=NULL,
│ │ │ │ +
843 cl_event* endEvent=NULL) const;
│ │ │ │ +
844
│ │ │ │ +
850
│ │ │ │ +
899 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
900 typename PATCHCOORD_BUFFER, typename PATCH_TABLE,
│ │ │ │ +
901 typename DEVICE_CONTEXT>
│ │ │ │ +
│ │ │ │ +
902 static bool EvalPatches(
│ │ │ │ +
903 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
904 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
905 int numPatchCoords,
│ │ │ │ +
906 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
907 PATCH_TABLE *patchTable,
│ │ │ │ +
908 CLEvaluator const *instance,
│ │ │ │ +
909 DEVICE_CONTEXT deviceContext,
│ │ │ │ +
910 unsigned int numStartEvents=0,
│ │ │ │ +
911 const cl_event* startEvents=NULL,
│ │ │ │ +
912 cl_event* endEvent=NULL) {
│ │ │ │ +
913
│ │ │ │ +
914 if (instance) {
│ │ │ │ +
915 return instance->EvalPatches(srcBuffer, srcDesc,
│ │ │ │ +
916 dstBuffer, dstDesc,
│ │ │ │ +
917 numPatchCoords, patchCoords,
│ │ │ │ +
918 patchTable,
│ │ │ │ +
919 numStartEvents, startEvents, endEvent);
│ │ │ │ +
920 } else {
│ │ │ │ +
921 // Create an instance on demand (slow)
│ │ │ │ +
922 (void)deviceContext; // unused
│ │ │ │ +
923 instance = Create(srcDesc, dstDesc,
│ │ │ │ + │ │ │ │ + │ │ │ │ +
926 deviceContext);
│ │ │ │ +
927 if (instance) {
│ │ │ │ +
928 bool r = instance->EvalPatches(srcBuffer, srcDesc,
│ │ │ │ +
929 dstBuffer, dstDesc,
│ │ │ │ +
930 numPatchCoords, patchCoords,
│ │ │ │ +
931 patchTable,
│ │ │ │ +
932 numStartEvents, startEvents, endEvent);
│ │ │ │ +
933 delete instance;
│ │ │ │ +
934 return r;
│ │ │ │ +
935 }
│ │ │ │ +
936 return false;
│ │ │ │ +
937 }
│ │ │ │ +
938 }
│ │ │ │ +
│ │ │ │ +
939
│ │ │ │ +
1000 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1001 typename PATCHCOORD_BUFFER, typename PATCH_TABLE,
│ │ │ │ +
1002 typename DEVICE_CONTEXT>
│ │ │ │ +
│ │ │ │ +
1003 static bool EvalPatches(
│ │ │ │ +
1004 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1005 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1006 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
1007 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
1008 int numPatchCoords,
│ │ │ │ +
1009 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1010 PATCH_TABLE *patchTable,
│ │ │ │ +
1011 CLEvaluator const *instance,
│ │ │ │ +
1012 DEVICE_CONTEXT deviceContext,
│ │ │ │ +
1013 unsigned int numStartEvents=0,
│ │ │ │ +
1014 const cl_event* startEvents=NULL,
│ │ │ │ +
1015 cl_event* endEvent=NULL) {
│ │ │ │ +
1016
│ │ │ │ +
1017 if (instance) {
│ │ │ │ +
1018 return instance->EvalPatches(srcBuffer, srcDesc,
│ │ │ │ +
1019 dstBuffer, dstDesc,
│ │ │ │ +
1020 duBuffer, duDesc,
│ │ │ │ +
1021 dvBuffer, dvDesc,
│ │ │ │ +
1022 numPatchCoords, patchCoords,
│ │ │ │ +
1023 patchTable,
│ │ │ │ +
1024 numStartEvents, startEvents, endEvent);
│ │ │ │ +
1025 } else {
│ │ │ │ +
1026 // Create an instance on demand (slow)
│ │ │ │ +
1027 (void)deviceContext; // unused
│ │ │ │ +
1028 instance = Create(srcDesc, dstDesc, duDesc, dvDesc, deviceContext);
│ │ │ │ +
1029 if (instance) {
│ │ │ │ +
1030 bool r = instance->EvalPatches(srcBuffer, srcDesc,
│ │ │ │ +
1031 dstBuffer, dstDesc,
│ │ │ │ +
1032 duBuffer, duDesc,
│ │ │ │ +
1033 dvBuffer, dvDesc,
│ │ │ │ +
1034 numPatchCoords, patchCoords,
│ │ │ │ +
1035 patchTable,
│ │ │ │ +
1036 numStartEvents, startEvents, endEvent);
│ │ │ │ +
1037 delete instance;
│ │ │ │ +
1038 return r;
│ │ │ │ +
1039 }
│ │ │ │ +
1040 return false;
│ │ │ │ +
1041 }
│ │ │ │ +
1042 }
│ │ │ │ +
│ │ │ │ +
1043
│ │ │ │ +
1122 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1123 typename PATCHCOORD_BUFFER, typename PATCH_TABLE,
│ │ │ │ +
1124 typename DEVICE_CONTEXT>
│ │ │ │ +
│ │ │ │ +
1125 static bool EvalPatches(
│ │ │ │ +
1126 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1127 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1128 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
1129 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
1130 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ +
1131 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ +
1132 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ +
1133 int numPatchCoords,
│ │ │ │ +
1134 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1135 PATCH_TABLE *patchTable,
│ │ │ │ +
1136 CLEvaluator const *instance,
│ │ │ │ +
1137 DEVICE_CONTEXT deviceContext,
│ │ │ │ +
1138 unsigned int numStartEvents=0,
│ │ │ │ +
1139 const cl_event* startEvents=NULL,
│ │ │ │ +
1140 cl_event* endEvent=NULL) {
│ │ │ │ +
1141
│ │ │ │ +
1142 if (instance) {
│ │ │ │ +
1143 return instance->EvalPatches(srcBuffer, srcDesc,
│ │ │ │ +
1144 dstBuffer, dstDesc,
│ │ │ │ +
1145 duBuffer, duDesc,
│ │ │ │ +
1146 dvBuffer, dvDesc,
│ │ │ │ +
1147 duuBuffer, duuDesc,
│ │ │ │ +
1148 duvBuffer, duvDesc,
│ │ │ │ +
1149 dvvBuffer, dvvDesc,
│ │ │ │ +
1150 numPatchCoords, patchCoords,
│ │ │ │ +
1151 patchTable,
│ │ │ │ +
1152 numStartEvents, startEvents, endEvent);
│ │ │ │ +
1153 } else {
│ │ │ │ +
1154 // Create an instance on demand (slow)
│ │ │ │ +
1155 (void)deviceContext; // unused
│ │ │ │ +
1156 instance = Create(srcDesc, dstDesc,
│ │ │ │ +
1157 duDesc, dvDesc,
│ │ │ │ +
1158 duuDesc, duvDesc, dvvDesc,
│ │ │ │ +
1159 deviceContext);
│ │ │ │ +
1160 if (instance) {
│ │ │ │ +
1161 bool r = instance->EvalPatches(srcBuffer, srcDesc,
│ │ │ │ +
1162 dstBuffer, dstDesc,
│ │ │ │ +
1163 duBuffer, duDesc,
│ │ │ │ +
1164 dvBuffer, dvDesc,
│ │ │ │ +
1165 duuBuffer, duuDesc,
│ │ │ │ +
1166 duvBuffer, duvDesc,
│ │ │ │ +
1167 dvvBuffer, dvvDesc,
│ │ │ │ +
1168 numPatchCoords, patchCoords,
│ │ │ │ +
1169 patchTable,
│ │ │ │ +
1170 numStartEvents, startEvents, endEvent);
│ │ │ │ +
1171 delete instance;
│ │ │ │ +
1172 return r;
│ │ │ │ +
1173 }
│ │ │ │ +
1174 return false;
│ │ │ │ +
1175 }
│ │ │ │ +
1176 }
│ │ │ │ +
│ │ │ │ +
1177
│ │ │ │ +
1215 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1216 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1218 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1219 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1220 int numPatchCoords,
│ │ │ │ +
1221 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1222 PATCH_TABLE *patchTable,
│ │ │ │ +
1223 unsigned int numStartEvents=0,
│ │ │ │ +
1224 const cl_event* startEvents=NULL,
│ │ │ │ +
1225 cl_event* endEvent=NULL) const {
│ │ │ │ +
1226
│ │ │ │ +
1227 return EvalPatches(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,
│ │ │ │ +
1228 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,
│ │ │ │ +
1229 0, BufferDescriptor(),
│ │ │ │ +
1230 0, BufferDescriptor(),
│ │ │ │ +
1231 numPatchCoords,
│ │ │ │ +
1232 patchCoords->BindCLBuffer(_clCommandQueue),
│ │ │ │ +
1233 patchTable->GetPatchArrayBuffer(),
│ │ │ │ +
1234 patchTable->GetPatchIndexBuffer(),
│ │ │ │ +
1235 patchTable->GetPatchParamBuffer(),
│ │ │ │ +
1236 numStartEvents, startEvents, endEvent);
│ │ │ │ +
1237 }
│ │ │ │ +
│ │ │ │ +
1238
│ │ │ │ +
1286 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1287 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1289 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1290 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1291 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
1292 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
1293 int numPatchCoords,
│ │ │ │ +
1294 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1295 PATCH_TABLE *patchTable,
│ │ │ │ +
1296 unsigned int numStartEvents=0,
│ │ │ │ +
1297 const cl_event* startEvents=NULL,
│ │ │ │ +
1298 cl_event* endEvent=NULL) const {
│ │ │ │ +
1299
│ │ │ │ +
1300 return EvalPatches(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,
│ │ │ │ +
1301 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,
│ │ │ │ +
1302 duBuffer->BindCLBuffer(_clCommandQueue), duDesc,
│ │ │ │ +
1303 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc,
│ │ │ │ +
1304 numPatchCoords,
│ │ │ │ +
1305 patchCoords->BindCLBuffer(_clCommandQueue),
│ │ │ │ +
1306 patchTable->GetPatchArrayBuffer(),
│ │ │ │ +
1307 patchTable->GetPatchIndexBuffer(),
│ │ │ │ +
1308 patchTable->GetPatchParamBuffer(),
│ │ │ │ +
1309 numStartEvents, startEvents, endEvent);
│ │ │ │ +
1310 }
│ │ │ │ +
│ │ │ │ +
1311
│ │ │ │ +
1377 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1378 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1380 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1381 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1382 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
1383 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
1384 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ +
1385 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ +
1386 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ +
1387 int numPatchCoords,
│ │ │ │ +
1388 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1389 PATCH_TABLE *patchTable,
│ │ │ │ +
1390 unsigned int numStartEvents=0,
│ │ │ │ +
1391 const cl_event* startEvents=NULL,
│ │ │ │ +
1392 cl_event* endEvent=NULL) const {
│ │ │ │ +
1393
│ │ │ │ +
1394 return EvalPatches(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,
│ │ │ │ +
1395 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,
│ │ │ │ +
1396 duBuffer->BindCLBuffer(_clCommandQueue), duDesc,
│ │ │ │ +
1397 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc,
│ │ │ │ +
1398 duuBuffer->BindCLBuffer(_clCommandQueue), duuDesc,
│ │ │ │ +
1399 duvBuffer->BindCLBuffer(_clCommandQueue), duvDesc,
│ │ │ │ +
1400 dvvBuffer->BindCLBuffer(_clCommandQueue), dvvDesc,
│ │ │ │ +
1401 numPatchCoords,
│ │ │ │ +
1402 patchCoords->BindCLBuffer(_clCommandQueue),
│ │ │ │ +
1403 patchTable->GetPatchArrayBuffer(),
│ │ │ │ +
1404 patchTable->GetPatchIndexBuffer(),
│ │ │ │ +
1405 patchTable->GetPatchParamBuffer(),
│ │ │ │ +
1406 numStartEvents, startEvents, endEvent);
│ │ │ │ +
1407 }
│ │ │ │ +
│ │ │ │ +
1408
│ │ │ │ +
1409 bool EvalPatches(cl_mem src, BufferDescriptor const &srcDesc,
│ │ │ │ +
1410 cl_mem dst, BufferDescriptor const &dstDesc,
│ │ │ │ +
1411 cl_mem du, BufferDescriptor const &duDesc,
│ │ │ │ +
1412 cl_mem dv, BufferDescriptor const &dvDesc,
│ │ │ │ +
1413 int numPatchCoords,
│ │ │ │ +
1414 cl_mem patchCoordsBuffer,
│ │ │ │ +
1415 cl_mem patchArrayBuffer,
│ │ │ │ +
1416 cl_mem patchIndexBuffer,
│ │ │ │ +
1417 cl_mem patchParamsBuffer,
│ │ │ │ +
1418 unsigned int numStartEvents=0,
│ │ │ │ +
1419 const cl_event* startEvents=NULL,
│ │ │ │ +
1420 cl_event* endEvent=NULL) const;
│ │ │ │ +
1421
│ │ │ │ +
1422 bool EvalPatches(cl_mem src, BufferDescriptor const &srcDesc,
│ │ │ │ +
1423 cl_mem dst, BufferDescriptor const &dstDesc,
│ │ │ │ +
1424 cl_mem du, BufferDescriptor const &duDesc,
│ │ │ │ +
1425 cl_mem dv, BufferDescriptor const &dvDesc,
│ │ │ │ +
1426 cl_mem duu, BufferDescriptor const &duuDesc,
│ │ │ │ +
1427 cl_mem duv, BufferDescriptor const &duvDesc,
│ │ │ │ +
1428 cl_mem dvv, BufferDescriptor const &dvvDesc,
│ │ │ │ +
1429 int numPatchCoords,
│ │ │ │ +
1430 cl_mem patchCoordsBuffer,
│ │ │ │ +
1431 cl_mem patchArrayBuffer,
│ │ │ │ +
1432 cl_mem patchIndexBuffer,
│ │ │ │ +
1433 cl_mem patchParamsBuffer,
│ │ │ │ +
1434 unsigned int numStartEvents=0,
│ │ │ │ +
1435 const cl_event* startEvents=NULL,
│ │ │ │ +
1436 cl_event* endEvent=NULL) const;
│ │ │ │ +
1437
│ │ │ │ +
1486 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1487 typename PATCHCOORD_BUFFER, typename PATCH_TABLE,
│ │ │ │ +
1488 typename DEVICE_CONTEXT>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1490 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1491 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1492 int numPatchCoords,
│ │ │ │ +
1493 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1494 PATCH_TABLE *patchTable,
│ │ │ │ +
1495 CLEvaluator const *instance,
│ │ │ │ +
1496 DEVICE_CONTEXT deviceContext,
│ │ │ │ +
1497 unsigned int numStartEvents=0,
│ │ │ │ +
1498 const cl_event* startEvents=NULL,
│ │ │ │ +
1499 cl_event* endEvent=NULL) {
│ │ │ │ +
1500
│ │ │ │ +
1501 if (instance) {
│ │ │ │ +
1502 return instance->EvalPatchesVarying(
│ │ │ │ +
1503 srcBuffer, srcDesc,
│ │ │ │ +
1504 dstBuffer, dstDesc,
│ │ │ │ +
1505 numPatchCoords, patchCoords,
│ │ │ │ +
1506 patchTable,
│ │ │ │ +
1507 numStartEvents, startEvents, endEvent);
│ │ │ │ +
1508 } else {
│ │ │ │ +
1509 // Create an instance on demand (slow)
│ │ │ │ +
1510 (void)deviceContext; // unused
│ │ │ │ +
1511 instance = Create(srcDesc, dstDesc,
│ │ │ │ + │ │ │ │ + │ │ │ │ +
1514 deviceContext);
│ │ │ │ +
1515 if (instance) {
│ │ │ │ +
1516 bool r = instance->EvalPatchesVarying(
│ │ │ │ +
1517 srcBuffer, srcDesc,
│ │ │ │ +
1518 dstBuffer, dstDesc,
│ │ │ │ +
1519 numPatchCoords, patchCoords,
│ │ │ │ +
1520 patchTable,
│ │ │ │ +
1521 numStartEvents, startEvents, endEvent);
│ │ │ │ +
1522 delete instance;
│ │ │ │ +
1523 return r;
│ │ │ │ +
1524 }
│ │ │ │ +
1525 return false;
│ │ │ │ +
1526 }
│ │ │ │ +
1527 }
│ │ │ │ +
│ │ │ │ +
1528
│ │ │ │ +
1566 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1567 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1569 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1570 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1571 int numPatchCoords,
│ │ │ │ +
1572 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1573 PATCH_TABLE *patchTable,
│ │ │ │ +
1574 unsigned int numStartEvents=0,
│ │ │ │ +
1575 const cl_event* startEvents=NULL,
│ │ │ │ +
1576 cl_event* endEvent=NULL) const {
│ │ │ │ +
1577
│ │ │ │ +
1578 return EvalPatches(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,
│ │ │ │ +
1579 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,
│ │ │ │ +
1580 0, BufferDescriptor(),
│ │ │ │ +
1581 0, BufferDescriptor(),
│ │ │ │ +
1582 numPatchCoords,
│ │ │ │ +
1583 patchCoords->BindCLBuffer(_clCommandQueue),
│ │ │ │ +
1584 patchTable->GetVaryingPatchArrayBuffer(),
│ │ │ │ +
1585 patchTable->GetVaryingPatchIndexBuffer(),
│ │ │ │ +
1586 patchTable->GetPatchParamBuffer(),
│ │ │ │ +
1587 numStartEvents, startEvents, endEvent);
│ │ │ │ +
1588 }
│ │ │ │ +
│ │ │ │ +
1589
│ │ │ │ +
1650 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1651 typename PATCHCOORD_BUFFER, typename PATCH_TABLE,
│ │ │ │ +
1652 typename DEVICE_CONTEXT>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1654 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1655 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1656 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
1657 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
1658 int numPatchCoords,
│ │ │ │ +
1659 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1660 PATCH_TABLE *patchTable,
│ │ │ │ +
1661 CLEvaluator const *instance,
│ │ │ │ +
1662 DEVICE_CONTEXT deviceContext,
│ │ │ │ +
1663 unsigned int numStartEvents=0,
│ │ │ │ +
1664 const cl_event* startEvents=NULL,
│ │ │ │ +
1665 cl_event* endEvent=NULL) {
│ │ │ │ +
1666
│ │ │ │ +
1667 if (instance) {
│ │ │ │ +
1668 return instance->EvalPatchesVarying(
│ │ │ │ +
1669 srcBuffer, srcDesc,
│ │ │ │ +
1670 dstBuffer, dstDesc,
│ │ │ │ +
1671 duBuffer, duDesc,
│ │ │ │ +
1672 dvBuffer, dvDesc,
│ │ │ │ +
1673 numPatchCoords, patchCoords,
│ │ │ │ +
1674 patchTable,
│ │ │ │ +
1675 numStartEvents, startEvents, endEvent);
│ │ │ │ +
1676 } else {
│ │ │ │ +
1677 // Create an instance on demand (slow)
│ │ │ │ +
1678 (void)deviceContext; // unused
│ │ │ │ +
1679 instance = Create(srcDesc, dstDesc,
│ │ │ │ +
1680 duDesc, dvDesc,
│ │ │ │ +
1681 deviceContext);
│ │ │ │ +
1682 if (instance) {
│ │ │ │ +
1683 bool r = instance->EvalPatchesVarying(
│ │ │ │ +
1684 srcBuffer, srcDesc,
│ │ │ │ +
1685 dstBuffer, dstDesc,
│ │ │ │ +
1686 duBuffer, duDesc,
│ │ │ │ +
1687 dvBuffer, dvDesc,
│ │ │ │ +
1688 numPatchCoords, patchCoords,
│ │ │ │ +
1689 patchTable,
│ │ │ │ +
1690 numStartEvents, startEvents, endEvent);
│ │ │ │ +
1691 delete instance;
│ │ │ │ +
1692 return r;
│ │ │ │ +
1693 }
│ │ │ │ +
1694 return false;
│ │ │ │ +
1695 }
│ │ │ │ +
1696 }
│ │ │ │ +
│ │ │ │ +
1697
│ │ │ │ +
1747 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1748 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1750 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1751 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1752 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
1753 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
1754 int numPatchCoords,
│ │ │ │ +
1755 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1756 PATCH_TABLE *patchTable,
│ │ │ │ +
1757 unsigned int numStartEvents=0,
│ │ │ │ +
1758 const cl_event* startEvents=NULL,
│ │ │ │ +
1759 cl_event* endEvent=NULL) const {
│ │ │ │ +
1760
│ │ │ │ +
1761 return EvalPatches(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,
│ │ │ │ +
1762 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,
│ │ │ │ +
1763 duBuffer->BindCLBuffer(_clCommandQueue), duDesc,
│ │ │ │ +
1764 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc,
│ │ │ │ +
1765 numPatchCoords,
│ │ │ │ +
1766 patchCoords->BindCLBuffer(_clCommandQueue),
│ │ │ │ +
1767 patchTable->GetVaryingPatchArrayBuffer(),
│ │ │ │ +
1768 patchTable->GetVaryingPatchIndexBuffer(),
│ │ │ │ +
1769 patchTable->GetPatchParamBuffer(),
│ │ │ │ +
1770 numStartEvents, startEvents, endEvent);
│ │ │ │ +
1771 }
│ │ │ │ +
│ │ │ │ +
1772
│ │ │ │ +
1851 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1852 typename PATCHCOORD_BUFFER, typename PATCH_TABLE,
│ │ │ │ +
1853 typename DEVICE_CONTEXT>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1855 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1856 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1857 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
1858 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
1859 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ +
1860 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ +
1861 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ +
1862 int numPatchCoords,
│ │ │ │ +
1863 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1864 PATCH_TABLE *patchTable,
│ │ │ │ +
1865 CLEvaluator const *instance,
│ │ │ │ +
1866 DEVICE_CONTEXT deviceContext,
│ │ │ │ +
1867 unsigned int numStartEvents=0,
│ │ │ │ +
1868 const cl_event* startEvents=NULL,
│ │ │ │ +
1869 cl_event* endEvent=NULL) {
│ │ │ │ +
1870
│ │ │ │ +
1871 if (instance) {
│ │ │ │ +
1872 return instance->EvalPatchesVarying(
│ │ │ │ +
1873 srcBuffer, srcDesc,
│ │ │ │ +
1874 dstBuffer, dstDesc,
│ │ │ │ +
1875 duBuffer, duDesc,
│ │ │ │ +
1876 dvBuffer, dvDesc,
│ │ │ │ +
1877 duuBuffer, duuDesc,
│ │ │ │ +
1878 duvBuffer, duvDesc,
│ │ │ │ +
1879 dvvBuffer, dvvDesc,
│ │ │ │ +
1880 numPatchCoords, patchCoords,
│ │ │ │ +
1881 patchTable,
│ │ │ │ +
1882 numStartEvents, startEvents, endEvent);
│ │ │ │ +
1883 } else {
│ │ │ │ +
1884 // Create an instance on demand (slow)
│ │ │ │ +
1885 (void)deviceContext; // unused
│ │ │ │ +
1886 instance = Create(srcDesc, dstDesc,
│ │ │ │ +
1887 duDesc, dvDesc,
│ │ │ │ +
1888 duuDesc, duvDesc, dvvDesc,
│ │ │ │ +
1889 deviceContext);
│ │ │ │ +
1890 if (instance) {
│ │ │ │ +
1891 bool r = instance->EvalPatchesVarying(
│ │ │ │ +
1892 srcBuffer, srcDesc,
│ │ │ │ +
1893 dstBuffer, dstDesc,
│ │ │ │ +
1894 duBuffer, duDesc,
│ │ │ │ +
1895 dvBuffer, dvDesc,
│ │ │ │ +
1896 duuBuffer, duuDesc,
│ │ │ │ +
1897 duvBuffer, duvDesc,
│ │ │ │ +
1898 dvvBuffer, dvvDesc,
│ │ │ │ +
1899 numPatchCoords, patchCoords,
│ │ │ │ +
1900 patchTable,
│ │ │ │ +
1901 numStartEvents, startEvents, endEvent);
│ │ │ │ +
1902 delete instance;
│ │ │ │ +
1903 return r;
│ │ │ │ +
1904 }
│ │ │ │ +
1905 return false;
│ │ │ │ +
1906 }
│ │ │ │ +
1907 }
│ │ │ │ +
│ │ │ │ +
1908
│ │ │ │ +
1976 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1977 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1979 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1980 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1981 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
1982 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
1983 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ +
1984 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ +
1985 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ +
1986 int numPatchCoords,
│ │ │ │ +
1987 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1988 PATCH_TABLE *patchTable,
│ │ │ │ +
1989 unsigned int numStartEvents=0,
│ │ │ │ +
1990 const cl_event* startEvents=NULL,
│ │ │ │ +
1991 cl_event* endEvent=NULL) const {
│ │ │ │ +
1992
│ │ │ │ +
1993 return EvalPatches(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,
│ │ │ │ +
1994 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,
│ │ │ │ +
1995 duBuffer->BindCLBuffer(_clCommandQueue), duDesc,
│ │ │ │ +
1996 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc,
│ │ │ │ +
1997 duuBuffer->BindCLBuffer(_clCommandQueue), duuDesc,
│ │ │ │ +
1998 duvBuffer->BindCLBuffer(_clCommandQueue), duvDesc,
│ │ │ │ +
1999 dvvBuffer->BindCLBuffer(_clCommandQueue), dvvDesc,
│ │ │ │ +
2000 numPatchCoords,
│ │ │ │ +
2001 patchCoords->BindCLBuffer(_clCommandQueue),
│ │ │ │ +
2002 patchTable->GetVaryingPatchArrayBuffer(),
│ │ │ │ +
2003 patchTable->GetVaryingPatchIndexBuffer(),
│ │ │ │ +
2004 patchTable->GetPatchParamBuffer(),
│ │ │ │ +
2005 numStartEvents, startEvents, endEvent);
│ │ │ │ +
2006 }
│ │ │ │ +
│ │ │ │ +
2007
│ │ │ │ +
2058 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
2059 typename PATCHCOORD_BUFFER, typename PATCH_TABLE,
│ │ │ │ +
2060 typename DEVICE_CONTEXT>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
2062 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
2063 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
2064 int numPatchCoords,
│ │ │ │ +
2065 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
2066 PATCH_TABLE *patchTable,
│ │ │ │ +
2067 int fvarChannel,
│ │ │ │ +
2068 CLEvaluator const *instance,
│ │ │ │ +
2069 DEVICE_CONTEXT deviceContext,
│ │ │ │ +
2070 unsigned int numStartEvents=0,
│ │ │ │ +
2071 const cl_event* startEvents=NULL,
│ │ │ │ +
2072 cl_event* endEvent=NULL) {
│ │ │ │ +
2073
│ │ │ │ +
2074 if (instance) {
│ │ │ │ +
2075 return instance->EvalPatchesFaceVarying(
│ │ │ │ +
2076 srcBuffer, srcDesc,
│ │ │ │ +
2077 dstBuffer, dstDesc,
│ │ │ │ +
2078 numPatchCoords, patchCoords,
│ │ │ │ +
2079 patchTable, fvarChannel,
│ │ │ │ +
2080 numStartEvents, startEvents, endEvent);
│ │ │ │ +
2081 } else {
│ │ │ │ +
2082 // Create an instance on demand (slow)
│ │ │ │ +
2083 (void)deviceContext; // unused
│ │ │ │ +
2084 instance = Create(srcDesc, dstDesc,
│ │ │ │ + │ │ │ │ + │ │ │ │ +
2087 deviceContext);
│ │ │ │ +
2088 if (instance) {
│ │ │ │ +
2089 bool r = instance->EvalPatchesFaceVarying(
│ │ │ │ +
2090 srcBuffer, srcDesc,
│ │ │ │ +
2091 dstBuffer, dstDesc,
│ │ │ │ +
2092 numPatchCoords, patchCoords,
│ │ │ │ +
2093 patchTable, fvarChannel,
│ │ │ │ +
2094 numStartEvents, startEvents, endEvent);
│ │ │ │ +
2095 delete instance;
│ │ │ │ +
2096 return r;
│ │ │ │ +
2097 }
│ │ │ │ +
2098 return false;
│ │ │ │ +
2099 }
│ │ │ │ +
2100 }
│ │ │ │ +
│ │ │ │ +
2101
│ │ │ │ +
2141 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
2142 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
2144 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
2145 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
2146 int numPatchCoords,
│ │ │ │ +
2147 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
2148 PATCH_TABLE *patchTable,
│ │ │ │ +
2149 int fvarChannel = 0,
│ │ │ │ +
2150 unsigned int numStartEvents=0,
│ │ │ │ +
2151 const cl_event* startEvents=NULL,
│ │ │ │ +
2152 cl_event* endEvent=NULL) const {
│ │ │ │ +
2153
│ │ │ │ +
2154 return EvalPatches(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,
│ │ │ │ +
2155 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,
│ │ │ │ +
2156 0, BufferDescriptor(),
│ │ │ │ +
2157 0, BufferDescriptor(),
│ │ │ │ +
2158 numPatchCoords,
│ │ │ │ +
2159 patchCoords->BindCLBuffer(_clCommandQueue),
│ │ │ │ +
2160 patchTable->GetFVarPatchArrayBuffer(fvarChannel),
│ │ │ │ +
2161 patchTable->GetFVarPatchIndexBuffer(fvarChannel),
│ │ │ │ +
2162 patchTable->GetFVarPatchParamBuffer(fvarChannel),
│ │ │ │ +
2163 numStartEvents, startEvents, endEvent);
│ │ │ │ +
2164 }
│ │ │ │ +
│ │ │ │ +
2165
│ │ │ │ +
2228 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
2229 typename PATCHCOORD_BUFFER, typename PATCH_TABLE,
│ │ │ │ +
2230 typename DEVICE_CONTEXT>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
2232 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
2233 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
2234 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
2235 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
2236 int numPatchCoords,
│ │ │ │ +
2237 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
2238 PATCH_TABLE *patchTable,
│ │ │ │ +
2239 int fvarChannel,
│ │ │ │ +
2240 CLEvaluator const *instance,
│ │ │ │ +
2241 DEVICE_CONTEXT deviceContext,
│ │ │ │ +
2242 unsigned int numStartEvents=0,
│ │ │ │ +
2243 const cl_event* startEvents=NULL,
│ │ │ │ +
2244 cl_event* endEvent=NULL) {
│ │ │ │ +
2245
│ │ │ │ +
2246 if (instance) {
│ │ │ │ +
2247 return instance->EvalPatchesFaceVarying(
│ │ │ │ +
2248 srcBuffer, srcDesc,
│ │ │ │ +
2249 dstBuffer, dstDesc,
│ │ │ │ +
2250 duBuffer, duDesc,
│ │ │ │ +
2251 dvBuffer, dvDesc,
│ │ │ │ +
2252 numPatchCoords, patchCoords,
│ │ │ │ +
2253 patchTable, fvarChannel,
│ │ │ │ +
2254 numStartEvents, startEvents, endEvent);
│ │ │ │ +
2255 } else {
│ │ │ │ +
2256 // Create an instance on demand (slow)
│ │ │ │ +
2257 (void)deviceContext; // unused
│ │ │ │ +
2258 instance = Create(srcDesc, dstDesc,
│ │ │ │ +
2259 duDesc, dvDesc, deviceContext);
│ │ │ │ +
2260 if (instance) {
│ │ │ │ +
2261 bool r = instance->EvalPatchesFaceVarying(
│ │ │ │ +
2262 srcBuffer, srcDesc,
│ │ │ │ +
2263 dstBuffer, dstDesc,
│ │ │ │ +
2264 duBuffer, duDesc,
│ │ │ │ +
2265 dvBuffer, dvDesc,
│ │ │ │ +
2266 numPatchCoords, patchCoords,
│ │ │ │ +
2267 patchTable, fvarChannel,
│ │ │ │ +
2268 numStartEvents, startEvents, endEvent);
│ │ │ │ +
2269 delete instance;
│ │ │ │ +
2270 return r;
│ │ │ │ +
2271 }
│ │ │ │ +
2272 return false;
│ │ │ │ +
2273 }
│ │ │ │ +
2274 }
│ │ │ │ +
│ │ │ │ +
2275
│ │ │ │ +
2327 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
2328 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
2330 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
2331 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
2332 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
2333 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
2334 int numPatchCoords,
│ │ │ │ +
2335 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
2336 PATCH_TABLE *patchTable,
│ │ │ │ +
2337 int fvarChannel = 0,
│ │ │ │ +
2338 unsigned int numStartEvents=0,
│ │ │ │ +
2339 const cl_event* startEvents=NULL,
│ │ │ │ +
2340 cl_event* endEvent=NULL) const {
│ │ │ │ +
2341
│ │ │ │ +
2342 return EvalPatches(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,
│ │ │ │ +
2343 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,
│ │ │ │ +
2344 duBuffer->BindCLBuffer(_clCommandQueue), duDesc,
│ │ │ │ +
2345 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc,
│ │ │ │ +
2346 numPatchCoords,
│ │ │ │ +
2347 patchCoords->BindCLBuffer(_clCommandQueue),
│ │ │ │ +
2348 patchTable->GetFVarPatchArrayBuffer(fvarChannel),
│ │ │ │ +
2349 patchTable->GetFVarPatchIndexBuffer(fvarChannel),
│ │ │ │ +
2350 patchTable->GetFVarPatchParamBuffer(fvarChannel),
│ │ │ │ +
2351 numStartEvents, startEvents, endEvent);
│ │ │ │ +
2352 }
│ │ │ │ +
│ │ │ │ +
2353
│ │ │ │ +
2434 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
2435 typename PATCHCOORD_BUFFER, typename PATCH_TABLE,
│ │ │ │ +
2436 typename DEVICE_CONTEXT>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
2438 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
2439 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
2440 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
2441 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
2442 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ +
2443 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ +
2444 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ +
2445 int numPatchCoords,
│ │ │ │ +
2446 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
2447 PATCH_TABLE *patchTable,
│ │ │ │ +
2448 int fvarChannel,
│ │ │ │ +
2449 CLEvaluator const *instance,
│ │ │ │ +
2450 DEVICE_CONTEXT deviceContext,
│ │ │ │ +
2451 unsigned int numStartEvents=0,
│ │ │ │ +
2452 const cl_event* startEvents=NULL,
│ │ │ │ +
2453 cl_event* endEvent=NULL) {
│ │ │ │ +
2454
│ │ │ │ +
2455 if (instance) {
│ │ │ │ +
2456 return instance->EvalPatchesFaceVarying(
│ │ │ │ +
2457 srcBuffer, srcDesc,
│ │ │ │ +
2458 dstBuffer, dstDesc,
│ │ │ │ +
2459 duBuffer, duDesc,
│ │ │ │ +
2460 dvBuffer, dvDesc,
│ │ │ │ +
2461 duuBuffer, duuDesc,
│ │ │ │ +
2462 duvBuffer, duvDesc,
│ │ │ │ +
2463 dvvBuffer, dvvDesc,
│ │ │ │ +
2464 numPatchCoords, patchCoords,
│ │ │ │ +
2465 patchTable, fvarChannel,
│ │ │ │ +
2466 numStartEvents, startEvents, endEvent);
│ │ │ │ +
2467 } else {
│ │ │ │ +
2468 // Create an instance on demand (slow)
│ │ │ │ +
2469 (void)deviceContext; // unused
│ │ │ │ +
2470 instance = Create(srcDesc, dstDesc,
│ │ │ │ +
2471 duDesc, dvDesc,
│ │ │ │ +
2472 duuDesc, duvDesc, dvvDesc,
│ │ │ │ +
2473 deviceContext);
│ │ │ │ +
2474 if (instance) {
│ │ │ │ +
2475 bool r = instance->EvalPatchesFaceVarying(
│ │ │ │ +
2476 srcBuffer, srcDesc,
│ │ │ │ +
2477 dstBuffer, dstDesc,
│ │ │ │ +
2478 duBuffer, duDesc,
│ │ │ │ +
2479 dvBuffer, dvDesc,
│ │ │ │ +
2480 duuBuffer, duuDesc,
│ │ │ │ +
2481 duvBuffer, duvDesc,
│ │ │ │ +
2482 dvvBuffer, dvvDesc,
│ │ │ │ +
2483 numPatchCoords, patchCoords,
│ │ │ │ +
2484 patchTable, fvarChannel,
│ │ │ │ +
2485 numStartEvents, startEvents, endEvent);
│ │ │ │ +
2486 delete instance;
│ │ │ │ +
2487 return r;
│ │ │ │ +
2488 }
│ │ │ │ +
2489 return false;
│ │ │ │ +
2490 }
│ │ │ │ +
2491 }
│ │ │ │ +
│ │ │ │ +
2492
│ │ │ │ +
2562 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
2563 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
2565 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
2566 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
2567 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
2568 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
2569 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ +
2570 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ +
2571 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ +
2572 int numPatchCoords,
│ │ │ │ +
2573 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
2574 PATCH_TABLE *patchTable,
│ │ │ │ +
2575 int fvarChannel = 0,
│ │ │ │ +
2576 unsigned int numStartEvents=0,
│ │ │ │ +
2577 const cl_event* startEvents=NULL,
│ │ │ │ +
2578 cl_event* endEvent=NULL) const {
│ │ │ │ +
2579
│ │ │ │ +
2580 return EvalPatches(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,
│ │ │ │ +
2581 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,
│ │ │ │ +
2582 duBuffer->BindCLBuffer(_clCommandQueue), duDesc,
│ │ │ │ +
2583 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc,
│ │ │ │ +
2584 duuBuffer->BindCLBuffer(_clCommandQueue), duuDesc,
│ │ │ │ +
2585 duvBuffer->BindCLBuffer(_clCommandQueue), duvDesc,
│ │ │ │ +
2586 dvvBuffer->BindCLBuffer(_clCommandQueue), dvvDesc,
│ │ │ │ +
2587 numPatchCoords,
│ │ │ │ +
2588 patchCoords->BindCLBuffer(_clCommandQueue),
│ │ │ │ +
2589 patchTable->GetFVarPatchArrayBuffer(fvarChannel),
│ │ │ │ +
2590 patchTable->GetFVarPatchIndexBuffer(fvarChannel),
│ │ │ │ +
2591 patchTable->GetFVarPatchParamBuffer(fvarChannel),
│ │ │ │ +
2592 numStartEvents, startEvents, endEvent);
│ │ │ │ +
2593 }
│ │ │ │ +
│ │ │ │ +
2594
│ │ │ │ +
2600
│ │ │ │ +
2603 bool Compile(BufferDescriptor const &srcDesc,
│ │ │ │ +
2604 BufferDescriptor const &dstDesc,
│ │ │ │ +
2605 BufferDescriptor const &duDesc = BufferDescriptor(),
│ │ │ │ +
2606 BufferDescriptor const &dvDesc = BufferDescriptor(),
│ │ │ │ +
2607 BufferDescriptor const &duuDesc = BufferDescriptor(),
│ │ │ │ +
2608 BufferDescriptor const &duvDesc = BufferDescriptor(),
│ │ │ │ +
2609 BufferDescriptor const &dvvDesc = BufferDescriptor());
│ │ │ │ +
2610
│ │ │ │ +
2612 template <typename DEVICE_CONTEXT>
│ │ │ │ +
│ │ │ │ +
2613 static void Synchronize(DEVICE_CONTEXT deviceContext) {
│ │ │ │ +
2614 Synchronize(deviceContext->GetCommandQueue());
│ │ │ │ +
2615 }
│ │ │ │ +
│ │ │ │ +
2616
│ │ │ │ +
2617 static void Synchronize(cl_command_queue queue);
│ │ │ │ +
2618
│ │ │ │ +
2619private:
│ │ │ │ +
2620 cl_context _clContext;
│ │ │ │ +
2621 cl_command_queue _clCommandQueue;
│ │ │ │ +
2622 cl_program _program;
│ │ │ │ +
2623 cl_kernel _stencilKernel;
│ │ │ │ +
2624 cl_kernel _stencilDerivKernel;
│ │ │ │ +
2625 cl_kernel _patchKernel;
│ │ │ │ +
2626};
│ │ │ │ +
│ │ │ │ +
2627
│ │ │ │ +
2628} // end namespace Osd
│ │ │ │ +
2629
│ │ │ │ +
2630} // end namespace OPENSUBDIV_VERSION
│ │ │ │ +
2631using namespace OPENSUBDIV_VERSION;
│ │ │ │ +
2632
│ │ │ │ +
2633} // end namespace OpenSubdiv
│ │ │ │ +
2634
│ │ │ │ +
2635
│ │ │ │ +
2636#endif // OPENSUBDIV3_OSD_CL_EVALUATOR_H
│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ +
Stencil table class wrapping the template for compatibility.
│ │ │ │ +
Limit stencil table class wrapping the template for compatibility.
│ │ │ │ +
BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....
│ │ │ │ + │ │ │ │ + │ │ │ │ +
CLStencilTable(Far::StencilTable const *stencilTable, cl_context clContext)
│ │ │ │ + │ │ │ │ +
static CLStencilTable * Create(Far::LimitStencilTable const *limitStencilTable, DEVICE_CONTEXT context)
Definition clEvaluator.h:61
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
static CLStencilTable * Create(Far::StencilTable const *stencilTable, DEVICE_CONTEXT context)
Definition clEvaluator.h:55
│ │ │ │ +
CLStencilTable(Far::LimitStencilTable const *limitStencilTable, cl_context clContext)
│ │ │ │ + │ │ │ │ + │ │ │ │ +
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)
Generic static stencil function. This function has a same signature as other device kernels have so t...
│ │ │ │ +
static void Synchronize(cl_command_queue queue)
│ │ │ │ + │ │ │ │ +
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
Dispatch the CL compute kernel asynchronously. returns false if the kernel hasn't been compiled yet.
│ │ │ │ +
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)
Generic static stencil function. This function has a same signature as other device kernels have so t...
│ │ │ │ +
static CLEvaluator * Create(BufferDescriptor const &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, cl_context clContext, cl_command_queue clCommandQueue)
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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
│ │ │ │ +
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
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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
Generic stencil function.
│ │ │ │ +
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
Generic limit eval function with derivatives. This function has a same signature as other device kern...
│ │ │ │ + │ │ │ │ +
static CLEvaluator * Create(BufferDescriptor const &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, DEVICE_CONTEXT deviceContext)
Generic creator template.
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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)
Generic creator template.
│ │ │ │ +
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
│ │ │ │ +
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
Dispatch the CL compute kernel asynchronously. returns false if the kernel hasn't been compiled yet.
│ │ │ │ +
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
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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
Generic stencil function.
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
static void Synchronize(DEVICE_CONTEXT deviceContext)
Wait the OpenCL kernels finish.
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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)
Generic static stencil function. This function has a same signature as other device kernels have so t...
│ │ │ │ +
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
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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)
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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
Generic stencil function.
│ │ │ │ +
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
Generic limit eval function with derivatives. This function has a same signature as other device kern...
│ │ │ │ +
CLEvaluator(cl_context context, cl_command_queue queue)
Constructor.
│ │ │ │ +
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())
│ │ │ │ +
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
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ -mtlCommon.h │ │ │ │ │ +clEvaluator.h │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// │ │ │ │ │ -2// Copyright 2013 Pixar │ │ │ │ │ +2// Copyright 2015 Pixar │ │ │ │ │ 3// │ │ │ │ │ 4// Licensed under the Apache License, Version 2.0 (the "Apache License") │ │ │ │ │ 5// with the following modification; you may not use this file except in │ │ │ │ │ 6// compliance with the Apache License and the following modification to it: │ │ │ │ │ 7// Section 6. Trademarks. is deleted and replaced with: │ │ │ │ │ 8// │ │ │ │ │ 9// 6. Trademarks. This License does not grant permission to use the trade │ │ │ │ │ @@ -24,50 +24,1553 @@ │ │ │ │ │ 18// Unless required by applicable law or agreed to in writing, software │ │ │ │ │ 19// distributed under the Apache License with the above modification is │ │ │ │ │ 20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY │ │ │ │ │ 21// KIND, either express or implied. See the Apache License for the specific │ │ │ │ │ 22// language governing permissions and limitations under the Apache License. │ │ │ │ │ 23// │ │ │ │ │ 24 │ │ │ │ │ -25#ifndef OPENSUBDIV3_OSD_MTL_COMMON_H │ │ │ │ │ -26#define OPENSUBDIV3_OSD_MTL_COMMON_H │ │ │ │ │ +25#ifndef OPENSUBDIV3_OSD_CL_EVALUATOR_H │ │ │ │ │ +26#define OPENSUBDIV3_OSD_CL_EVALUATOR_H │ │ │ │ │ 27 │ │ │ │ │ 28#include "../version.h" │ │ │ │ │ 29 │ │ │ │ │ -30#include │ │ │ │ │ -31 │ │ │ │ │ -32@protocol MTLDevice; │ │ │ │ │ -33@protocol MTLCommandQueue; │ │ │ │ │ -34 │ │ │ │ │ -35namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ -36namespace OPENSUBDIV_VERSION { │ │ │ │ │ -37 │ │ │ │ │ -38namespace Osd { │ │ │ │ │ -39 │ │ │ │ │ -_4_0class _M_T_L_C_o_n_t_e_x_t { │ │ │ │ │ -41public: │ │ │ │ │ -_4_2 id _d_e_v_i_c_e = nullptr; │ │ │ │ │ -_4_3 id _c_o_m_m_a_n_d_Q_u_e_u_e = nullptr; │ │ │ │ │ -44}; │ │ │ │ │ -45 │ │ │ │ │ -46} // end namespace Osd │ │ │ │ │ -47 │ │ │ │ │ -48} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ -49using namespace OPENSUBDIV_VERSION; │ │ │ │ │ -50 │ │ │ │ │ -51} // end namespace OpenSubdiv │ │ │ │ │ -52 │ │ │ │ │ -53#endif //OPENSUBDIV3_OSD_MTL_COMMON_H │ │ │ │ │ +30#include "../osd/opencl.h" │ │ │ │ │ +31#include "../osd/types.h" │ │ │ │ │ +32#include "../osd/bufferDescriptor.h" │ │ │ │ │ +33 │ │ │ │ │ +34namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ +35namespace OPENSUBDIV_VERSION { │ │ │ │ │ +36 │ │ │ │ │ +37namespace Far { │ │ │ │ │ +38 class PatchTable; │ │ │ │ │ +39 class StencilTable; │ │ │ │ │ +40 class LimitStencilTable; │ │ │ │ │ +41} │ │ │ │ │ +42 │ │ │ │ │ +43namespace Osd { │ │ │ │ │ +44 │ │ │ │ │ +_5_2class _C_L_S_t_e_n_c_i_l_T_a_b_l_e { │ │ │ │ │ +53public: │ │ │ │ │ +54 template │ │ │ │ │ +_5_5 static _C_L_S_t_e_n_c_i_l_T_a_b_l_e *_C_r_e_a_t_e(_F_a_r_:_:_S_t_e_n_c_i_l_T_a_b_l_e const *stencilTable, │ │ │ │ │ +56 DEVICE_CONTEXT context) { │ │ │ │ │ +57 return new _C_L_S_t_e_n_c_i_l_T_a_b_l_e(stencilTable, context->GetContext()); │ │ │ │ │ +58 } │ │ │ │ │ +59 │ │ │ │ │ +60 template │ │ │ │ │ +_6_1 static _C_L_S_t_e_n_c_i_l_T_a_b_l_e *_C_r_e_a_t_e( │ │ │ │ │ +62 _F_a_r_:_:_L_i_m_i_t_S_t_e_n_c_i_l_T_a_b_l_e const *limitStencilTable, │ │ │ │ │ +63 DEVICE_CONTEXT context) { │ │ │ │ │ +64 return new _C_L_S_t_e_n_c_i_l_T_a_b_l_e(limitStencilTable, context->GetContext()); │ │ │ │ │ +65 } │ │ │ │ │ +66 │ │ │ │ │ +_6_7 _C_L_S_t_e_n_c_i_l_T_a_b_l_e(_F_a_r_:_:_S_t_e_n_c_i_l_T_a_b_l_e const *stencilTable, │ │ │ │ │ +68 cl_context clContext); │ │ │ │ │ +_6_9 _C_L_S_t_e_n_c_i_l_T_a_b_l_e(_F_a_r_:_:_L_i_m_i_t_S_t_e_n_c_i_l_T_a_b_l_e const *limitStencilTable, │ │ │ │ │ +70 cl_context clContext); │ │ │ │ │ +_7_1 _~_C_L_S_t_e_n_c_i_l_T_a_b_l_e(); │ │ │ │ │ +72 │ │ │ │ │ +73 // interfaces needed for CLComputeKernel │ │ │ │ │ +_7_4 cl_mem _G_e_t_S_i_z_e_s_B_u_f_f_e_r() const { return _sizes; } │ │ │ │ │ +_7_5 cl_mem _G_e_t_O_f_f_s_e_t_s_B_u_f_f_e_r() const { return _offsets; } │ │ │ │ │ +_7_6 cl_mem _G_e_t_I_n_d_i_c_e_s_B_u_f_f_e_r() const { return _indices; } │ │ │ │ │ +_7_7 cl_mem _G_e_t_W_e_i_g_h_t_s_B_u_f_f_e_r() const { return _weights; } │ │ │ │ │ +_7_8 cl_mem _G_e_t_D_u_W_e_i_g_h_t_s_B_u_f_f_e_r() const { return _duWeights; } │ │ │ │ │ +_7_9 cl_mem _G_e_t_D_v_W_e_i_g_h_t_s_B_u_f_f_e_r() const { return _dvWeights; } │ │ │ │ │ +_8_0 cl_mem _G_e_t_D_u_u_W_e_i_g_h_t_s_B_u_f_f_e_r() const { return _duuWeights; } │ │ │ │ │ +_8_1 cl_mem _G_e_t_D_u_v_W_e_i_g_h_t_s_B_u_f_f_e_r() const { return _duvWeights; } │ │ │ │ │ +_8_2 cl_mem _G_e_t_D_v_v_W_e_i_g_h_t_s_B_u_f_f_e_r() const { return _dvvWeights; } │ │ │ │ │ +_8_3 int _G_e_t_N_u_m_S_t_e_n_c_i_l_s() const { return _numStencils; } │ │ │ │ │ +84 │ │ │ │ │ +85private: │ │ │ │ │ +86 cl_mem _sizes; │ │ │ │ │ +87 cl_mem _offsets; │ │ │ │ │ +88 cl_mem _indices; │ │ │ │ │ +89 cl_mem _weights; │ │ │ │ │ +90 cl_mem _duWeights; │ │ │ │ │ +91 cl_mem _dvWeights; │ │ │ │ │ +92 cl_mem _duuWeights; │ │ │ │ │ +93 cl_mem _duvWeights; │ │ │ │ │ +94 cl_mem _dvvWeights; │ │ │ │ │ +95 int _numStencils; │ │ │ │ │ +96}; │ │ │ │ │ +97 │ │ │ │ │ +98// -------------------------------------------------------------------------- │ │ │ │ │ +- │ │ │ │ │ +99 │ │ │ │ │ +_1_0_0class _C_L_E_v_a_l_u_a_t_o_r { │ │ │ │ │ +101public: │ │ │ │ │ +_1_0_2 typedef bool _I_n_s_t_a_n_t_i_a_t_a_b_l_e; │ │ │ │ │ +103 │ │ │ │ │ +105 template │ │ │ │ │ +_1_0_6 static _C_L_E_v_a_l_u_a_t_o_r *_C_r_e_a_t_e(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +107 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +108 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +109 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +110 DEVICE_CONTEXT deviceContext) { │ │ │ │ │ +111 return _C_r_e_a_t_e(srcDesc, dstDesc, duDesc, dvDesc, │ │ │ │ │ +112 deviceContext->GetContext(), │ │ │ │ │ +113 deviceContext->GetCommandQueue()); │ │ │ │ │ +114 } │ │ │ │ │ +115 │ │ │ │ │ +_1_1_6 static _C_L_E_v_a_l_u_a_t_o_r * _C_r_e_a_t_e(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +117 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +118 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +119 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +120 cl_context clContext, │ │ │ │ │ +121 cl_command_queue clCommandQueue) { │ │ │ │ │ +122 _C_L_E_v_a_l_u_a_t_o_r *instance = new _C_L_E_v_a_l_u_a_t_o_r(clContext, clCommandQueue); │ │ │ │ │ +123 if (instance->_C_o_m_p_i_l_e(srcDesc, dstDesc, duDesc, dvDesc)) │ │ │ │ │ +124 return instance; │ │ │ │ │ +125 delete instance; │ │ │ │ │ +126 return NULL; │ │ │ │ │ +127 } │ │ │ │ │ +128 │ │ │ │ │ +130 template │ │ │ │ │ +_1_3_1 static _C_L_E_v_a_l_u_a_t_o_r *_C_r_e_a_t_e(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +132 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +133 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +134 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +135 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +136 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +137 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +138 DEVICE_CONTEXT deviceContext) { │ │ │ │ │ +139 return _C_r_e_a_t_e(srcDesc, dstDesc, duDesc, dvDesc, │ │ │ │ │ +140 duuDesc, duvDesc, dvvDesc, │ │ │ │ │ +141 deviceContext->GetContext(), │ │ │ │ │ +142 deviceContext->GetCommandQueue()); │ │ │ │ │ +143 } │ │ │ │ │ +144 │ │ │ │ │ +_1_4_5 static _C_L_E_v_a_l_u_a_t_o_r * _C_r_e_a_t_e(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +146 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +147 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +148 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +149 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +150 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +151 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +152 cl_context clContext, │ │ │ │ │ +153 cl_command_queue clCommandQueue) { │ │ │ │ │ +154 _C_L_E_v_a_l_u_a_t_o_r *instance = new _C_L_E_v_a_l_u_a_t_o_r(clContext, clCommandQueue); │ │ │ │ │ +155 if (instance->_C_o_m_p_i_l_e(srcDesc, dstDesc, duDesc, dvDesc, │ │ │ │ │ +156 duuDesc, duvDesc, dvvDesc)) │ │ │ │ │ +157 return instance; │ │ │ │ │ +158 delete instance; │ │ │ │ │ +159 return NULL; │ │ │ │ │ +160 } │ │ │ │ │ +161 │ │ │ │ │ +_1_6_3 _C_L_E_v_a_l_u_a_t_o_r(cl_context context, cl_command_queue queue); │ │ │ │ │ +164 │ │ │ │ │ +_1_6_6 _~_C_L_E_v_a_l_u_a_t_o_r(); │ │ │ │ │ +167 │ │ │ │ │ +173 │ │ │ │ │ +217 template │ │ │ │ │ +_2_1_9 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ +220 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +221 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +222 STENCIL_TABLE const *stencilTable, │ │ │ │ │ +223 _C_L_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ +224 DEVICE_CONTEXT deviceContext, │ │ │ │ │ +225 unsigned int numStartEvents=0, │ │ │ │ │ +226 const cl_event* startEvents=NULL, │ │ │ │ │ +227 cl_event* endEvent=NULL) { │ │ │ │ │ +228 │ │ │ │ │ +229 if (instance) { │ │ │ │ │ +230 return instance->_E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer, srcDesc, │ │ │ │ │ +231 dstBuffer, dstDesc, │ │ │ │ │ +232 stencilTable, │ │ │ │ │ +233 numStartEvents, startEvents, endEvent); │ │ │ │ │ +234 } else { │ │ │ │ │ +235 // Create an instance on demand (slow) │ │ │ │ │ +236 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ +237 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +238 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +239 deviceContext); │ │ │ │ │ +240 if (instance) { │ │ │ │ │ +241 bool r = instance->_E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer, srcDesc, │ │ │ │ │ +242 dstBuffer, dstDesc, │ │ │ │ │ +243 stencilTable, │ │ │ │ │ +244 numStartEvents, startEvents, endEvent); │ │ │ │ │ +245 delete instance; │ │ │ │ │ +246 return r; │ │ │ │ │ +247 } │ │ │ │ │ +248 return false; │ │ │ │ │ +249 } │ │ │ │ │ +250 } │ │ │ │ │ +251 │ │ │ │ │ +307 template │ │ │ │ │ +_3_0_9 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ +310 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +311 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +312 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +313 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +314 STENCIL_TABLE const *stencilTable, │ │ │ │ │ +315 _C_L_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ +316 DEVICE_CONTEXT deviceContext, │ │ │ │ │ +317 unsigned int numStartEvents=0, │ │ │ │ │ +318 const cl_event* startEvents=NULL, │ │ │ │ │ +319 cl_event* endEvent=NULL) { │ │ │ │ │ +320 │ │ │ │ │ +321 if (instance) { │ │ │ │ │ +322 return instance->_E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer, srcDesc, │ │ │ │ │ +323 dstBuffer, dstDesc, │ │ │ │ │ +324 duBuffer, duDesc, │ │ │ │ │ +325 dvBuffer, dvDesc, │ │ │ │ │ +326 stencilTable, │ │ │ │ │ +327 numStartEvents, startEvents, endEvent); │ │ │ │ │ +328 } else { │ │ │ │ │ +329 // Create an instance on demand (slow) │ │ │ │ │ +330 instance = _C_r_e_a_t_e(srcDesc, dstDesc, duDesc, dvDesc, │ │ │ │ │ +331 deviceContext); │ │ │ │ │ +332 if (instance) { │ │ │ │ │ +333 bool r = instance->_E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer, srcDesc, │ │ │ │ │ +334 dstBuffer, dstDesc, │ │ │ │ │ +335 duBuffer, duDesc, │ │ │ │ │ +336 dvBuffer, dvDesc, │ │ │ │ │ +337 stencilTable, │ │ │ │ │ +338 numStartEvents, startEvents, endEvent); │ │ │ │ │ +339 delete instance; │ │ │ │ │ +340 return r; │ │ │ │ │ +341 } │ │ │ │ │ +342 return false; │ │ │ │ │ +343 } │ │ │ │ │ +344 } │ │ │ │ │ +345 │ │ │ │ │ +419 template │ │ │ │ │ +_4_2_1 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ +422 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +423 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +424 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +425 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +426 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +427 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +428 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +429 STENCIL_TABLE const *stencilTable, │ │ │ │ │ +430 _C_L_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ +431 DEVICE_CONTEXT deviceContext, │ │ │ │ │ +432 unsigned int numStartEvents=0, │ │ │ │ │ +433 const cl_event* startEvents=NULL, │ │ │ │ │ +434 cl_event* endEvent=NULL) { │ │ │ │ │ +435 │ │ │ │ │ +436 if (instance) { │ │ │ │ │ +437 return instance->_E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer, srcDesc, │ │ │ │ │ +438 dstBuffer, dstDesc, │ │ │ │ │ +439 duBuffer, duDesc, │ │ │ │ │ +440 dvBuffer, dvDesc, │ │ │ │ │ +441 duuBuffer, duuDesc, │ │ │ │ │ +442 duvBuffer, duvDesc, │ │ │ │ │ +443 dvvBuffer, dvvDesc, │ │ │ │ │ +444 stencilTable, │ │ │ │ │ +445 numStartEvents, startEvents, endEvent); │ │ │ │ │ +446 } else { │ │ │ │ │ +447 // Create an instance on demand (slow) │ │ │ │ │ +448 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ +449 duDesc, dvDesc, │ │ │ │ │ +450 duuDesc, duvDesc, dvvDesc, │ │ │ │ │ +451 deviceContext); │ │ │ │ │ +452 if (instance) { │ │ │ │ │ +453 bool r = instance->_E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer, srcDesc, │ │ │ │ │ +454 dstBuffer, dstDesc, │ │ │ │ │ +455 duBuffer, duDesc, │ │ │ │ │ +456 dvBuffer, dvDesc, │ │ │ │ │ +457 duuBuffer, duuDesc, │ │ │ │ │ +458 duvBuffer, duvDesc, │ │ │ │ │ +459 dvvBuffer, dvvDesc, │ │ │ │ │ +460 stencilTable, │ │ │ │ │ +461 numStartEvents, startEvents, endEvent); │ │ │ │ │ +462 delete instance; │ │ │ │ │ +463 return r; │ │ │ │ │ +464 } │ │ │ │ │ +465 return false; │ │ │ │ │ +466 } │ │ │ │ │ +467 } │ │ │ │ │ +468 │ │ │ │ │ +499 template │ │ │ │ │ +_5_0_0 bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ +501 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +502 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +503 STENCIL_TABLE const *stencilTable, │ │ │ │ │ +504 unsigned int numStartEvents=0, │ │ │ │ │ +505 const cl_event* startEvents=NULL, │ │ │ │ │ +506 cl_event* endEvent=NULL) const { │ │ │ │ │ +507 return _E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc, │ │ │ │ │ +508 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc, │ │ │ │ │ +509 stencilTable->GetSizesBuffer(), │ │ │ │ │ +510 stencilTable->GetOffsetsBuffer(), │ │ │ │ │ +511 stencilTable->GetIndicesBuffer(), │ │ │ │ │ +512 stencilTable->GetWeightsBuffer(), │ │ │ │ │ +513 0, │ │ │ │ │ +514 stencilTable->GetNumStencils(), │ │ │ │ │ +515 numStartEvents, startEvents, endEvent); │ │ │ │ │ +516 } │ │ │ │ │ +517 │ │ │ │ │ +560 template │ │ │ │ │ +_5_6_1 bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ +562 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +563 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +564 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +565 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +566 STENCIL_TABLE const *stencilTable, │ │ │ │ │ +567 unsigned int numStartEvents=0, │ │ │ │ │ +568 const cl_event* startEvents=NULL, │ │ │ │ │ +569 cl_event* endEvent=NULL) const { │ │ │ │ │ +570 return _E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc, │ │ │ │ │ +571 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc, │ │ │ │ │ +572 duBuffer->BindCLBuffer(_clCommandQueue), duDesc, │ │ │ │ │ +573 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc, │ │ │ │ │ +574 stencilTable->GetSizesBuffer(), │ │ │ │ │ +575 stencilTable->GetOffsetsBuffer(), │ │ │ │ │ +576 stencilTable->GetIndicesBuffer(), │ │ │ │ │ +577 stencilTable->GetWeightsBuffer(), │ │ │ │ │ +578 stencilTable->GetDuWeightsBuffer(), │ │ │ │ │ +579 stencilTable->GetDvWeightsBuffer(), │ │ │ │ │ +580 0, │ │ │ │ │ +581 stencilTable->GetNumStencils(), │ │ │ │ │ +582 numStartEvents, startEvents, endEvent); │ │ │ │ │ +583 } │ │ │ │ │ +584 │ │ │ │ │ +645 template │ │ │ │ │ +_6_4_6 bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ +647 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +648 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +649 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +650 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +651 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +652 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +653 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +654 STENCIL_TABLE const *stencilTable, │ │ │ │ │ +655 unsigned int numStartEvents=0, │ │ │ │ │ +656 const cl_event* startEvents=NULL, │ │ │ │ │ +657 cl_event* endEvent=NULL) const { │ │ │ │ │ +658 return _E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc, │ │ │ │ │ +659 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc, │ │ │ │ │ +660 duBuffer->BindCLBuffer(_clCommandQueue), duDesc, │ │ │ │ │ +661 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc, │ │ │ │ │ +662 duuBuffer->BindCLBuffer(_clCommandQueue), duuDesc, │ │ │ │ │ +663 duvBuffer->BindCLBuffer(_clCommandQueue), duvDesc, │ │ │ │ │ +664 dvvBuffer->BindCLBuffer(_clCommandQueue), dvvDesc, │ │ │ │ │ +665 stencilTable->GetSizesBuffer(), │ │ │ │ │ +666 stencilTable->GetOffsetsBuffer(), │ │ │ │ │ +667 stencilTable->GetIndicesBuffer(), │ │ │ │ │ +668 stencilTable->GetWeightsBuffer(), │ │ │ │ │ +669 stencilTable->GetDuWeightsBuffer(), │ │ │ │ │ +670 stencilTable->GetDvWeightsBuffer(), │ │ │ │ │ +671 stencilTable->GetDuuWeightsBuffer(), │ │ │ │ │ +672 stencilTable->GetDuvWeightsBuffer(), │ │ │ │ │ +673 stencilTable->GetDvvWeightsBuffer(), │ │ │ │ │ +674 0, │ │ │ │ │ +675 stencilTable->GetNumStencils(), │ │ │ │ │ +676 numStartEvents, startEvents, endEvent); │ │ │ │ │ +677 } │ │ │ │ │ +678 │ │ │ │ │ +_6_8_1 bool _E_v_a_l_S_t_e_n_c_i_l_s(cl_mem src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +682 cl_mem dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +683 cl_mem sizes, │ │ │ │ │ +684 cl_mem offsets, │ │ │ │ │ +685 cl_mem indices, │ │ │ │ │ +686 cl_mem weights, │ │ │ │ │ +687 int start, │ │ │ │ │ +688 int end, │ │ │ │ │ +689 unsigned int numStartEvents=0, │ │ │ │ │ +690 const cl_event* startEvents=NULL, │ │ │ │ │ +691 cl_event* endEvent=NULL) const; │ │ │ │ │ +692 │ │ │ │ │ +_7_4_1 bool _E_v_a_l_S_t_e_n_c_i_l_s(cl_mem src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +742 cl_mem dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +743 cl_mem du, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +744 cl_mem dv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +745 cl_mem sizes, │ │ │ │ │ +746 cl_mem offsets, │ │ │ │ │ +747 cl_mem indices, │ │ │ │ │ +748 cl_mem weights, │ │ │ │ │ +749 cl_mem duWeights, │ │ │ │ │ +750 cl_mem dvWeights, │ │ │ │ │ +751 int start, │ │ │ │ │ +752 int end, │ │ │ │ │ +753 unsigned int numStartEvents=0, │ │ │ │ │ +754 const cl_event* startEvents=NULL, │ │ │ │ │ +755 cl_event* endEvent=NULL) const; │ │ │ │ │ +756 │ │ │ │ │ +_8_2_3 bool _E_v_a_l_S_t_e_n_c_i_l_s(cl_mem src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +824 cl_mem dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +825 cl_mem du, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +826 cl_mem dv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +827 cl_mem duu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +828 cl_mem duv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +829 cl_mem dvv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +830 cl_mem sizes, │ │ │ │ │ +831 cl_mem offsets, │ │ │ │ │ +832 cl_mem indices, │ │ │ │ │ +833 cl_mem weights, │ │ │ │ │ +834 cl_mem duWeights, │ │ │ │ │ +835 cl_mem dvWeights, │ │ │ │ │ +836 cl_mem duuWeights, │ │ │ │ │ +837 cl_mem duvWeights, │ │ │ │ │ +838 cl_mem dvvWeights, │ │ │ │ │ +839 int start, │ │ │ │ │ +840 int end, │ │ │ │ │ +841 unsigned int numStartEvents=0, │ │ │ │ │ +842 const cl_event* startEvents=NULL, │ │ │ │ │ +843 cl_event* endEvent=NULL) const; │ │ │ │ │ +844 │ │ │ │ │ +850 │ │ │ │ │ +899 template │ │ │ │ │ +_9_0_2 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ +903 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +904 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +905 int numPatchCoords, │ │ │ │ │ +906 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +907 PATCH_TABLE *patchTable, │ │ │ │ │ +908 _C_L_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ +909 DEVICE_CONTEXT deviceContext, │ │ │ │ │ +910 unsigned int numStartEvents=0, │ │ │ │ │ +911 const cl_event* startEvents=NULL, │ │ │ │ │ +912 cl_event* endEvent=NULL) { │ │ │ │ │ +913 │ │ │ │ │ +914 if (instance) { │ │ │ │ │ +915 return instance->_E_v_a_l_P_a_t_c_h_e_s(srcBuffer, srcDesc, │ │ │ │ │ +916 dstBuffer, dstDesc, │ │ │ │ │ +917 numPatchCoords, patchCoords, │ │ │ │ │ +918 patchTable, │ │ │ │ │ +919 numStartEvents, startEvents, endEvent); │ │ │ │ │ +920 } else { │ │ │ │ │ +921 // Create an instance on demand (slow) │ │ │ │ │ +922 (void)deviceContext; // unused │ │ │ │ │ +923 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ +924 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +925 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +926 deviceContext); │ │ │ │ │ +927 if (instance) { │ │ │ │ │ +928 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s(srcBuffer, srcDesc, │ │ │ │ │ +929 dstBuffer, dstDesc, │ │ │ │ │ +930 numPatchCoords, patchCoords, │ │ │ │ │ +931 patchTable, │ │ │ │ │ +932 numStartEvents, startEvents, endEvent); │ │ │ │ │ +933 delete instance; │ │ │ │ │ +934 return r; │ │ │ │ │ +935 } │ │ │ │ │ +936 return false; │ │ │ │ │ +937 } │ │ │ │ │ +938 } │ │ │ │ │ +939 │ │ │ │ │ +1000 template │ │ │ │ │ +_1_0_0_3 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ +1004 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1005 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1006 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +1007 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +1008 int numPatchCoords, │ │ │ │ │ +1009 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1010 PATCH_TABLE *patchTable, │ │ │ │ │ +1011 _C_L_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ +1012 DEVICE_CONTEXT deviceContext, │ │ │ │ │ +1013 unsigned int numStartEvents=0, │ │ │ │ │ +1014 const cl_event* startEvents=NULL, │ │ │ │ │ +1015 cl_event* endEvent=NULL) { │ │ │ │ │ +1016 │ │ │ │ │ +1017 if (instance) { │ │ │ │ │ +1018 return instance->_E_v_a_l_P_a_t_c_h_e_s(srcBuffer, srcDesc, │ │ │ │ │ +1019 dstBuffer, dstDesc, │ │ │ │ │ +1020 duBuffer, duDesc, │ │ │ │ │ +1021 dvBuffer, dvDesc, │ │ │ │ │ +1022 numPatchCoords, patchCoords, │ │ │ │ │ +1023 patchTable, │ │ │ │ │ +1024 numStartEvents, startEvents, endEvent); │ │ │ │ │ +1025 } else { │ │ │ │ │ +1026 // Create an instance on demand (slow) │ │ │ │ │ +1027 (void)deviceContext; // unused │ │ │ │ │ +1028 instance = _C_r_e_a_t_e(srcDesc, dstDesc, duDesc, dvDesc, deviceContext); │ │ │ │ │ +1029 if (instance) { │ │ │ │ │ +1030 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s(srcBuffer, srcDesc, │ │ │ │ │ +1031 dstBuffer, dstDesc, │ │ │ │ │ +1032 duBuffer, duDesc, │ │ │ │ │ +1033 dvBuffer, dvDesc, │ │ │ │ │ +1034 numPatchCoords, patchCoords, │ │ │ │ │ +1035 patchTable, │ │ │ │ │ +1036 numStartEvents, startEvents, endEvent); │ │ │ │ │ +1037 delete instance; │ │ │ │ │ +1038 return r; │ │ │ │ │ +1039 } │ │ │ │ │ +1040 return false; │ │ │ │ │ +1041 } │ │ │ │ │ +1042 } │ │ │ │ │ +1043 │ │ │ │ │ +1122 template │ │ │ │ │ +_1_1_2_5 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ +1126 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1127 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1128 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +1129 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +1130 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +1131 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +1132 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +1133 int numPatchCoords, │ │ │ │ │ +1134 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1135 PATCH_TABLE *patchTable, │ │ │ │ │ +1136 _C_L_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ +1137 DEVICE_CONTEXT deviceContext, │ │ │ │ │ +1138 unsigned int numStartEvents=0, │ │ │ │ │ +1139 const cl_event* startEvents=NULL, │ │ │ │ │ +1140 cl_event* endEvent=NULL) { │ │ │ │ │ +1141 │ │ │ │ │ +1142 if (instance) { │ │ │ │ │ +1143 return instance->_E_v_a_l_P_a_t_c_h_e_s(srcBuffer, srcDesc, │ │ │ │ │ +1144 dstBuffer, dstDesc, │ │ │ │ │ +1145 duBuffer, duDesc, │ │ │ │ │ +1146 dvBuffer, dvDesc, │ │ │ │ │ +1147 duuBuffer, duuDesc, │ │ │ │ │ +1148 duvBuffer, duvDesc, │ │ │ │ │ +1149 dvvBuffer, dvvDesc, │ │ │ │ │ +1150 numPatchCoords, patchCoords, │ │ │ │ │ +1151 patchTable, │ │ │ │ │ +1152 numStartEvents, startEvents, endEvent); │ │ │ │ │ +1153 } else { │ │ │ │ │ +1154 // Create an instance on demand (slow) │ │ │ │ │ +1155 (void)deviceContext; // unused │ │ │ │ │ +1156 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ +1157 duDesc, dvDesc, │ │ │ │ │ +1158 duuDesc, duvDesc, dvvDesc, │ │ │ │ │ +1159 deviceContext); │ │ │ │ │ +1160 if (instance) { │ │ │ │ │ +1161 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s(srcBuffer, srcDesc, │ │ │ │ │ +1162 dstBuffer, dstDesc, │ │ │ │ │ +1163 duBuffer, duDesc, │ │ │ │ │ +1164 dvBuffer, dvDesc, │ │ │ │ │ +1165 duuBuffer, duuDesc, │ │ │ │ │ +1166 duvBuffer, duvDesc, │ │ │ │ │ +1167 dvvBuffer, dvvDesc, │ │ │ │ │ +1168 numPatchCoords, patchCoords, │ │ │ │ │ +1169 patchTable, │ │ │ │ │ +1170 numStartEvents, startEvents, endEvent); │ │ │ │ │ +1171 delete instance; │ │ │ │ │ +1172 return r; │ │ │ │ │ +1173 } │ │ │ │ │ +1174 return false; │ │ │ │ │ +1175 } │ │ │ │ │ +1176 } │ │ │ │ │ +1177 │ │ │ │ │ +1215 template │ │ │ │ │ +_1_2_1_7 bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ +1218 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1219 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1220 int numPatchCoords, │ │ │ │ │ +1221 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1222 PATCH_TABLE *patchTable, │ │ │ │ │ +1223 unsigned int numStartEvents=0, │ │ │ │ │ +1224 const cl_event* startEvents=NULL, │ │ │ │ │ +1225 cl_event* endEvent=NULL) const { │ │ │ │ │ +1226 │ │ │ │ │ +1227 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc, │ │ │ │ │ +1228 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc, │ │ │ │ │ +1229 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +1230 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +1231 numPatchCoords, │ │ │ │ │ +1232 patchCoords->BindCLBuffer(_clCommandQueue), │ │ │ │ │ +1233 patchTable->GetPatchArrayBuffer(), │ │ │ │ │ +1234 patchTable->GetPatchIndexBuffer(), │ │ │ │ │ +1235 patchTable->GetPatchParamBuffer(), │ │ │ │ │ +1236 numStartEvents, startEvents, endEvent); │ │ │ │ │ +1237 } │ │ │ │ │ +1238 │ │ │ │ │ +1286 template │ │ │ │ │ +_1_2_8_8 bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ +1289 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1290 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1291 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +1292 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +1293 int numPatchCoords, │ │ │ │ │ +1294 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1295 PATCH_TABLE *patchTable, │ │ │ │ │ +1296 unsigned int numStartEvents=0, │ │ │ │ │ +1297 const cl_event* startEvents=NULL, │ │ │ │ │ +1298 cl_event* endEvent=NULL) const { │ │ │ │ │ +1299 │ │ │ │ │ +1300 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc, │ │ │ │ │ +1301 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc, │ │ │ │ │ +1302 duBuffer->BindCLBuffer(_clCommandQueue), duDesc, │ │ │ │ │ +1303 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc, │ │ │ │ │ +1304 numPatchCoords, │ │ │ │ │ +1305 patchCoords->BindCLBuffer(_clCommandQueue), │ │ │ │ │ +1306 patchTable->GetPatchArrayBuffer(), │ │ │ │ │ +1307 patchTable->GetPatchIndexBuffer(), │ │ │ │ │ +1308 patchTable->GetPatchParamBuffer(), │ │ │ │ │ +1309 numStartEvents, startEvents, endEvent); │ │ │ │ │ +1310 } │ │ │ │ │ +1311 │ │ │ │ │ +1377 template │ │ │ │ │ +_1_3_7_9 bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ +1380 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1381 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1382 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +1383 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +1384 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +1385 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +1386 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +1387 int numPatchCoords, │ │ │ │ │ +1388 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1389 PATCH_TABLE *patchTable, │ │ │ │ │ +1390 unsigned int numStartEvents=0, │ │ │ │ │ +1391 const cl_event* startEvents=NULL, │ │ │ │ │ +1392 cl_event* endEvent=NULL) const { │ │ │ │ │ +1393 │ │ │ │ │ +1394 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc, │ │ │ │ │ +1395 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc, │ │ │ │ │ +1396 duBuffer->BindCLBuffer(_clCommandQueue), duDesc, │ │ │ │ │ +1397 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc, │ │ │ │ │ +1398 duuBuffer->BindCLBuffer(_clCommandQueue), duuDesc, │ │ │ │ │ +1399 duvBuffer->BindCLBuffer(_clCommandQueue), duvDesc, │ │ │ │ │ +1400 dvvBuffer->BindCLBuffer(_clCommandQueue), dvvDesc, │ │ │ │ │ +1401 numPatchCoords, │ │ │ │ │ +1402 patchCoords->BindCLBuffer(_clCommandQueue), │ │ │ │ │ +1403 patchTable->GetPatchArrayBuffer(), │ │ │ │ │ +1404 patchTable->GetPatchIndexBuffer(), │ │ │ │ │ +1405 patchTable->GetPatchParamBuffer(), │ │ │ │ │ +1406 numStartEvents, startEvents, endEvent); │ │ │ │ │ +1407 } │ │ │ │ │ +1408 │ │ │ │ │ +_1_4_0_9 bool _E_v_a_l_P_a_t_c_h_e_s(cl_mem src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1410 cl_mem dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1411 cl_mem du, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +1412 cl_mem dv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +1413 int numPatchCoords, │ │ │ │ │ +1414 cl_mem patchCoordsBuffer, │ │ │ │ │ +1415 cl_mem patchArrayBuffer, │ │ │ │ │ +1416 cl_mem patchIndexBuffer, │ │ │ │ │ +1417 cl_mem patchParamsBuffer, │ │ │ │ │ +1418 unsigned int numStartEvents=0, │ │ │ │ │ +1419 const cl_event* startEvents=NULL, │ │ │ │ │ +1420 cl_event* endEvent=NULL) const; │ │ │ │ │ +1421 │ │ │ │ │ +_1_4_2_2 bool _E_v_a_l_P_a_t_c_h_e_s(cl_mem src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1423 cl_mem dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1424 cl_mem du, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +1425 cl_mem dv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +1426 cl_mem duu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +1427 cl_mem duv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +1428 cl_mem dvv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +1429 int numPatchCoords, │ │ │ │ │ +1430 cl_mem patchCoordsBuffer, │ │ │ │ │ +1431 cl_mem patchArrayBuffer, │ │ │ │ │ +1432 cl_mem patchIndexBuffer, │ │ │ │ │ +1433 cl_mem patchParamsBuffer, │ │ │ │ │ +1434 unsigned int numStartEvents=0, │ │ │ │ │ +1435 const cl_event* startEvents=NULL, │ │ │ │ │ +1436 cl_event* endEvent=NULL) const; │ │ │ │ │ +1437 │ │ │ │ │ +1486 template │ │ │ │ │ +_1_4_8_9 static bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +1490 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1491 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1492 int numPatchCoords, │ │ │ │ │ +1493 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1494 PATCH_TABLE *patchTable, │ │ │ │ │ +1495 _C_L_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ +1496 DEVICE_CONTEXT deviceContext, │ │ │ │ │ +1497 unsigned int numStartEvents=0, │ │ │ │ │ +1498 const cl_event* startEvents=NULL, │ │ │ │ │ +1499 cl_event* endEvent=NULL) { │ │ │ │ │ +1500 │ │ │ │ │ +1501 if (instance) { │ │ │ │ │ +1502 return instance->_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +1503 srcBuffer, srcDesc, │ │ │ │ │ +1504 dstBuffer, dstDesc, │ │ │ │ │ +1505 numPatchCoords, patchCoords, │ │ │ │ │ +1506 patchTable, │ │ │ │ │ +1507 numStartEvents, startEvents, endEvent); │ │ │ │ │ +1508 } else { │ │ │ │ │ +1509 // Create an instance on demand (slow) │ │ │ │ │ +1510 (void)deviceContext; // unused │ │ │ │ │ +1511 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ +1512 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +1513 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +1514 deviceContext); │ │ │ │ │ +1515 if (instance) { │ │ │ │ │ +1516 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +1517 srcBuffer, srcDesc, │ │ │ │ │ +1518 dstBuffer, dstDesc, │ │ │ │ │ +1519 numPatchCoords, patchCoords, │ │ │ │ │ +1520 patchTable, │ │ │ │ │ +1521 numStartEvents, startEvents, endEvent); │ │ │ │ │ +1522 delete instance; │ │ │ │ │ +1523 return r; │ │ │ │ │ +1524 } │ │ │ │ │ +1525 return false; │ │ │ │ │ +1526 } │ │ │ │ │ +1527 } │ │ │ │ │ +1528 │ │ │ │ │ +1566 template │ │ │ │ │ +_1_5_6_8 bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +1569 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1570 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1571 int numPatchCoords, │ │ │ │ │ +1572 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1573 PATCH_TABLE *patchTable, │ │ │ │ │ +1574 unsigned int numStartEvents=0, │ │ │ │ │ +1575 const cl_event* startEvents=NULL, │ │ │ │ │ +1576 cl_event* endEvent=NULL) const { │ │ │ │ │ +1577 │ │ │ │ │ +1578 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc, │ │ │ │ │ +1579 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc, │ │ │ │ │ +1580 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +1581 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +1582 numPatchCoords, │ │ │ │ │ +1583 patchCoords->BindCLBuffer(_clCommandQueue), │ │ │ │ │ +1584 patchTable->GetVaryingPatchArrayBuffer(), │ │ │ │ │ +1585 patchTable->GetVaryingPatchIndexBuffer(), │ │ │ │ │ +1586 patchTable->GetPatchParamBuffer(), │ │ │ │ │ +1587 numStartEvents, startEvents, endEvent); │ │ │ │ │ +1588 } │ │ │ │ │ +1589 │ │ │ │ │ +1650 template │ │ │ │ │ +_1_6_5_3 static bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +1654 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1655 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1656 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +1657 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +1658 int numPatchCoords, │ │ │ │ │ +1659 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1660 PATCH_TABLE *patchTable, │ │ │ │ │ +1661 _C_L_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ +1662 DEVICE_CONTEXT deviceContext, │ │ │ │ │ +1663 unsigned int numStartEvents=0, │ │ │ │ │ +1664 const cl_event* startEvents=NULL, │ │ │ │ │ +1665 cl_event* endEvent=NULL) { │ │ │ │ │ +1666 │ │ │ │ │ +1667 if (instance) { │ │ │ │ │ +1668 return instance->_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +1669 srcBuffer, srcDesc, │ │ │ │ │ +1670 dstBuffer, dstDesc, │ │ │ │ │ +1671 duBuffer, duDesc, │ │ │ │ │ +1672 dvBuffer, dvDesc, │ │ │ │ │ +1673 numPatchCoords, patchCoords, │ │ │ │ │ +1674 patchTable, │ │ │ │ │ +1675 numStartEvents, startEvents, endEvent); │ │ │ │ │ +1676 } else { │ │ │ │ │ +1677 // Create an instance on demand (slow) │ │ │ │ │ +1678 (void)deviceContext; // unused │ │ │ │ │ +1679 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ +1680 duDesc, dvDesc, │ │ │ │ │ +1681 deviceContext); │ │ │ │ │ +1682 if (instance) { │ │ │ │ │ +1683 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +1684 srcBuffer, srcDesc, │ │ │ │ │ +1685 dstBuffer, dstDesc, │ │ │ │ │ +1686 duBuffer, duDesc, │ │ │ │ │ +1687 dvBuffer, dvDesc, │ │ │ │ │ +1688 numPatchCoords, patchCoords, │ │ │ │ │ +1689 patchTable, │ │ │ │ │ +1690 numStartEvents, startEvents, endEvent); │ │ │ │ │ +1691 delete instance; │ │ │ │ │ +1692 return r; │ │ │ │ │ +1693 } │ │ │ │ │ +1694 return false; │ │ │ │ │ +1695 } │ │ │ │ │ +1696 } │ │ │ │ │ +1697 │ │ │ │ │ +1747 template │ │ │ │ │ +_1_7_4_9 bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +1750 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1751 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1752 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +1753 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +1754 int numPatchCoords, │ │ │ │ │ +1755 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1756 PATCH_TABLE *patchTable, │ │ │ │ │ +1757 unsigned int numStartEvents=0, │ │ │ │ │ +1758 const cl_event* startEvents=NULL, │ │ │ │ │ +1759 cl_event* endEvent=NULL) const { │ │ │ │ │ +1760 │ │ │ │ │ +1761 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc, │ │ │ │ │ +1762 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc, │ │ │ │ │ +1763 duBuffer->BindCLBuffer(_clCommandQueue), duDesc, │ │ │ │ │ +1764 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc, │ │ │ │ │ +1765 numPatchCoords, │ │ │ │ │ +1766 patchCoords->BindCLBuffer(_clCommandQueue), │ │ │ │ │ +1767 patchTable->GetVaryingPatchArrayBuffer(), │ │ │ │ │ +1768 patchTable->GetVaryingPatchIndexBuffer(), │ │ │ │ │ +1769 patchTable->GetPatchParamBuffer(), │ │ │ │ │ +1770 numStartEvents, startEvents, endEvent); │ │ │ │ │ +1771 } │ │ │ │ │ +1772 │ │ │ │ │ +1851 template │ │ │ │ │ +_1_8_5_4 static bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +1855 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1856 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1857 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +1858 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +1859 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +1860 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +1861 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +1862 int numPatchCoords, │ │ │ │ │ +1863 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1864 PATCH_TABLE *patchTable, │ │ │ │ │ +1865 _C_L_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ +1866 DEVICE_CONTEXT deviceContext, │ │ │ │ │ +1867 unsigned int numStartEvents=0, │ │ │ │ │ +1868 const cl_event* startEvents=NULL, │ │ │ │ │ +1869 cl_event* endEvent=NULL) { │ │ │ │ │ +1870 │ │ │ │ │ +1871 if (instance) { │ │ │ │ │ +1872 return instance->_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +1873 srcBuffer, srcDesc, │ │ │ │ │ +1874 dstBuffer, dstDesc, │ │ │ │ │ +1875 duBuffer, duDesc, │ │ │ │ │ +1876 dvBuffer, dvDesc, │ │ │ │ │ +1877 duuBuffer, duuDesc, │ │ │ │ │ +1878 duvBuffer, duvDesc, │ │ │ │ │ +1879 dvvBuffer, dvvDesc, │ │ │ │ │ +1880 numPatchCoords, patchCoords, │ │ │ │ │ +1881 patchTable, │ │ │ │ │ +1882 numStartEvents, startEvents, endEvent); │ │ │ │ │ +1883 } else { │ │ │ │ │ +1884 // Create an instance on demand (slow) │ │ │ │ │ +1885 (void)deviceContext; // unused │ │ │ │ │ +1886 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ +1887 duDesc, dvDesc, │ │ │ │ │ +1888 duuDesc, duvDesc, dvvDesc, │ │ │ │ │ +1889 deviceContext); │ │ │ │ │ +1890 if (instance) { │ │ │ │ │ +1891 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +1892 srcBuffer, srcDesc, │ │ │ │ │ +1893 dstBuffer, dstDesc, │ │ │ │ │ +1894 duBuffer, duDesc, │ │ │ │ │ +1895 dvBuffer, dvDesc, │ │ │ │ │ +1896 duuBuffer, duuDesc, │ │ │ │ │ +1897 duvBuffer, duvDesc, │ │ │ │ │ +1898 dvvBuffer, dvvDesc, │ │ │ │ │ +1899 numPatchCoords, patchCoords, │ │ │ │ │ +1900 patchTable, │ │ │ │ │ +1901 numStartEvents, startEvents, endEvent); │ │ │ │ │ +1902 delete instance; │ │ │ │ │ +1903 return r; │ │ │ │ │ +1904 } │ │ │ │ │ +1905 return false; │ │ │ │ │ +1906 } │ │ │ │ │ +1907 } │ │ │ │ │ +1908 │ │ │ │ │ +1976 template │ │ │ │ │ +_1_9_7_8 bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +1979 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1980 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1981 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +1982 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +1983 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +1984 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +1985 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +1986 int numPatchCoords, │ │ │ │ │ +1987 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1988 PATCH_TABLE *patchTable, │ │ │ │ │ +1989 unsigned int numStartEvents=0, │ │ │ │ │ +1990 const cl_event* startEvents=NULL, │ │ │ │ │ +1991 cl_event* endEvent=NULL) const { │ │ │ │ │ +1992 │ │ │ │ │ +1993 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc, │ │ │ │ │ +1994 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc, │ │ │ │ │ +1995 duBuffer->BindCLBuffer(_clCommandQueue), duDesc, │ │ │ │ │ +1996 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc, │ │ │ │ │ +1997 duuBuffer->BindCLBuffer(_clCommandQueue), duuDesc, │ │ │ │ │ +1998 duvBuffer->BindCLBuffer(_clCommandQueue), duvDesc, │ │ │ │ │ +1999 dvvBuffer->BindCLBuffer(_clCommandQueue), dvvDesc, │ │ │ │ │ +2000 numPatchCoords, │ │ │ │ │ +2001 patchCoords->BindCLBuffer(_clCommandQueue), │ │ │ │ │ +2002 patchTable->GetVaryingPatchArrayBuffer(), │ │ │ │ │ +2003 patchTable->GetVaryingPatchIndexBuffer(), │ │ │ │ │ +2004 patchTable->GetPatchParamBuffer(), │ │ │ │ │ +2005 numStartEvents, startEvents, endEvent); │ │ │ │ │ +2006 } │ │ │ │ │ +2007 │ │ │ │ │ +2058 template │ │ │ │ │ +_2_0_6_1 static bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +2062 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +2063 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +2064 int numPatchCoords, │ │ │ │ │ +2065 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +2066 PATCH_TABLE *patchTable, │ │ │ │ │ +2067 int fvarChannel, │ │ │ │ │ +2068 _C_L_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ +2069 DEVICE_CONTEXT deviceContext, │ │ │ │ │ +2070 unsigned int numStartEvents=0, │ │ │ │ │ +2071 const cl_event* startEvents=NULL, │ │ │ │ │ +2072 cl_event* endEvent=NULL) { │ │ │ │ │ +2073 │ │ │ │ │ +2074 if (instance) { │ │ │ │ │ +2075 return instance->_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +2076 srcBuffer, srcDesc, │ │ │ │ │ +2077 dstBuffer, dstDesc, │ │ │ │ │ +2078 numPatchCoords, patchCoords, │ │ │ │ │ +2079 patchTable, fvarChannel, │ │ │ │ │ +2080 numStartEvents, startEvents, endEvent); │ │ │ │ │ +2081 } else { │ │ │ │ │ +2082 // Create an instance on demand (slow) │ │ │ │ │ +2083 (void)deviceContext; // unused │ │ │ │ │ +2084 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ +2085 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +2086 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +2087 deviceContext); │ │ │ │ │ +2088 if (instance) { │ │ │ │ │ +2089 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +2090 srcBuffer, srcDesc, │ │ │ │ │ +2091 dstBuffer, dstDesc, │ │ │ │ │ +2092 numPatchCoords, patchCoords, │ │ │ │ │ +2093 patchTable, fvarChannel, │ │ │ │ │ +2094 numStartEvents, startEvents, endEvent); │ │ │ │ │ +2095 delete instance; │ │ │ │ │ +2096 return r; │ │ │ │ │ +2097 } │ │ │ │ │ +2098 return false; │ │ │ │ │ +2099 } │ │ │ │ │ +2100 } │ │ │ │ │ +2101 │ │ │ │ │ +2141 template │ │ │ │ │ +_2_1_4_3 bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +2144 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +2145 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +2146 int numPatchCoords, │ │ │ │ │ +2147 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +2148 PATCH_TABLE *patchTable, │ │ │ │ │ +2149 int fvarChannel = 0, │ │ │ │ │ +2150 unsigned int numStartEvents=0, │ │ │ │ │ +2151 const cl_event* startEvents=NULL, │ │ │ │ │ +2152 cl_event* endEvent=NULL) const { │ │ │ │ │ +2153 │ │ │ │ │ +2154 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc, │ │ │ │ │ +2155 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc, │ │ │ │ │ +2156 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +2157 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +2158 numPatchCoords, │ │ │ │ │ +2159 patchCoords->BindCLBuffer(_clCommandQueue), │ │ │ │ │ +2160 patchTable->GetFVarPatchArrayBuffer(fvarChannel), │ │ │ │ │ +2161 patchTable->GetFVarPatchIndexBuffer(fvarChannel), │ │ │ │ │ +2162 patchTable->GetFVarPatchParamBuffer(fvarChannel), │ │ │ │ │ +2163 numStartEvents, startEvents, endEvent); │ │ │ │ │ +2164 } │ │ │ │ │ +2165 │ │ │ │ │ +2228 template │ │ │ │ │ +_2_2_3_1 static bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +2232 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +2233 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +2234 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +2235 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +2236 int numPatchCoords, │ │ │ │ │ +2237 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +2238 PATCH_TABLE *patchTable, │ │ │ │ │ +2239 int fvarChannel, │ │ │ │ │ +2240 _C_L_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ +2241 DEVICE_CONTEXT deviceContext, │ │ │ │ │ +2242 unsigned int numStartEvents=0, │ │ │ │ │ +2243 const cl_event* startEvents=NULL, │ │ │ │ │ +2244 cl_event* endEvent=NULL) { │ │ │ │ │ +2245 │ │ │ │ │ +2246 if (instance) { │ │ │ │ │ +2247 return instance->_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +2248 srcBuffer, srcDesc, │ │ │ │ │ +2249 dstBuffer, dstDesc, │ │ │ │ │ +2250 duBuffer, duDesc, │ │ │ │ │ +2251 dvBuffer, dvDesc, │ │ │ │ │ +2252 numPatchCoords, patchCoords, │ │ │ │ │ +2253 patchTable, fvarChannel, │ │ │ │ │ +2254 numStartEvents, startEvents, endEvent); │ │ │ │ │ +2255 } else { │ │ │ │ │ +2256 // Create an instance on demand (slow) │ │ │ │ │ +2257 (void)deviceContext; // unused │ │ │ │ │ +2258 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ +2259 duDesc, dvDesc, deviceContext); │ │ │ │ │ +2260 if (instance) { │ │ │ │ │ +2261 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +2262 srcBuffer, srcDesc, │ │ │ │ │ +2263 dstBuffer, dstDesc, │ │ │ │ │ +2264 duBuffer, duDesc, │ │ │ │ │ +2265 dvBuffer, dvDesc, │ │ │ │ │ +2266 numPatchCoords, patchCoords, │ │ │ │ │ +2267 patchTable, fvarChannel, │ │ │ │ │ +2268 numStartEvents, startEvents, endEvent); │ │ │ │ │ +2269 delete instance; │ │ │ │ │ +2270 return r; │ │ │ │ │ +2271 } │ │ │ │ │ +2272 return false; │ │ │ │ │ +2273 } │ │ │ │ │ +2274 } │ │ │ │ │ +2275 │ │ │ │ │ +2327 template │ │ │ │ │ +_2_3_2_9 bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +2330 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +2331 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +2332 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +2333 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +2334 int numPatchCoords, │ │ │ │ │ +2335 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +2336 PATCH_TABLE *patchTable, │ │ │ │ │ +2337 int fvarChannel = 0, │ │ │ │ │ +2338 unsigned int numStartEvents=0, │ │ │ │ │ +2339 const cl_event* startEvents=NULL, │ │ │ │ │ +2340 cl_event* endEvent=NULL) const { │ │ │ │ │ +2341 │ │ │ │ │ +2342 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc, │ │ │ │ │ +2343 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc, │ │ │ │ │ +2344 duBuffer->BindCLBuffer(_clCommandQueue), duDesc, │ │ │ │ │ +2345 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc, │ │ │ │ │ +2346 numPatchCoords, │ │ │ │ │ +2347 patchCoords->BindCLBuffer(_clCommandQueue), │ │ │ │ │ +2348 patchTable->GetFVarPatchArrayBuffer(fvarChannel), │ │ │ │ │ +2349 patchTable->GetFVarPatchIndexBuffer(fvarChannel), │ │ │ │ │ +2350 patchTable->GetFVarPatchParamBuffer(fvarChannel), │ │ │ │ │ +2351 numStartEvents, startEvents, endEvent); │ │ │ │ │ +2352 } │ │ │ │ │ +2353 │ │ │ │ │ +2434 template │ │ │ │ │ +_2_4_3_7 static bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +2438 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +2439 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +2440 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +2441 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +2442 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +2443 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +2444 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +2445 int numPatchCoords, │ │ │ │ │ +2446 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +2447 PATCH_TABLE *patchTable, │ │ │ │ │ +2448 int fvarChannel, │ │ │ │ │ +2449 _C_L_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ +2450 DEVICE_CONTEXT deviceContext, │ │ │ │ │ +2451 unsigned int numStartEvents=0, │ │ │ │ │ +2452 const cl_event* startEvents=NULL, │ │ │ │ │ +2453 cl_event* endEvent=NULL) { │ │ │ │ │ +2454 │ │ │ │ │ +2455 if (instance) { │ │ │ │ │ +2456 return instance->_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +2457 srcBuffer, srcDesc, │ │ │ │ │ +2458 dstBuffer, dstDesc, │ │ │ │ │ +2459 duBuffer, duDesc, │ │ │ │ │ +2460 dvBuffer, dvDesc, │ │ │ │ │ +2461 duuBuffer, duuDesc, │ │ │ │ │ +2462 duvBuffer, duvDesc, │ │ │ │ │ +2463 dvvBuffer, dvvDesc, │ │ │ │ │ +2464 numPatchCoords, patchCoords, │ │ │ │ │ +2465 patchTable, fvarChannel, │ │ │ │ │ +2466 numStartEvents, startEvents, endEvent); │ │ │ │ │ +2467 } else { │ │ │ │ │ +2468 // Create an instance on demand (slow) │ │ │ │ │ +2469 (void)deviceContext; // unused │ │ │ │ │ +2470 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ +2471 duDesc, dvDesc, │ │ │ │ │ +2472 duuDesc, duvDesc, dvvDesc, │ │ │ │ │ +2473 deviceContext); │ │ │ │ │ +2474 if (instance) { │ │ │ │ │ +2475 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +2476 srcBuffer, srcDesc, │ │ │ │ │ +2477 dstBuffer, dstDesc, │ │ │ │ │ +2478 duBuffer, duDesc, │ │ │ │ │ +2479 dvBuffer, dvDesc, │ │ │ │ │ +2480 duuBuffer, duuDesc, │ │ │ │ │ +2481 duvBuffer, duvDesc, │ │ │ │ │ +2482 dvvBuffer, dvvDesc, │ │ │ │ │ +2483 numPatchCoords, patchCoords, │ │ │ │ │ +2484 patchTable, fvarChannel, │ │ │ │ │ +2485 numStartEvents, startEvents, endEvent); │ │ │ │ │ +2486 delete instance; │ │ │ │ │ +2487 return r; │ │ │ │ │ +2488 } │ │ │ │ │ +2489 return false; │ │ │ │ │ +2490 } │ │ │ │ │ +2491 } │ │ │ │ │ +2492 │ │ │ │ │ +2562 template │ │ │ │ │ +_2_5_6_4 bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +2565 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +2566 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +2567 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +2568 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +2569 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +2570 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +2571 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +2572 int numPatchCoords, │ │ │ │ │ +2573 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +2574 PATCH_TABLE *patchTable, │ │ │ │ │ +2575 int fvarChannel = 0, │ │ │ │ │ +2576 unsigned int numStartEvents=0, │ │ │ │ │ +2577 const cl_event* startEvents=NULL, │ │ │ │ │ +2578 cl_event* endEvent=NULL) const { │ │ │ │ │ +2579 │ │ │ │ │ +2580 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc, │ │ │ │ │ +2581 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc, │ │ │ │ │ +2582 duBuffer->BindCLBuffer(_clCommandQueue), duDesc, │ │ │ │ │ +2583 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc, │ │ │ │ │ +2584 duuBuffer->BindCLBuffer(_clCommandQueue), duuDesc, │ │ │ │ │ +2585 duvBuffer->BindCLBuffer(_clCommandQueue), duvDesc, │ │ │ │ │ +2586 dvvBuffer->BindCLBuffer(_clCommandQueue), dvvDesc, │ │ │ │ │ +2587 numPatchCoords, │ │ │ │ │ +2588 patchCoords->BindCLBuffer(_clCommandQueue), │ │ │ │ │ +2589 patchTable->GetFVarPatchArrayBuffer(fvarChannel), │ │ │ │ │ +2590 patchTable->GetFVarPatchIndexBuffer(fvarChannel), │ │ │ │ │ +2591 patchTable->GetFVarPatchParamBuffer(fvarChannel), │ │ │ │ │ +2592 numStartEvents, startEvents, endEvent); │ │ │ │ │ +2593 } │ │ │ │ │ +2594 │ │ │ │ │ +2600 │ │ │ │ │ +_2_6_0_3 bool _C_o_m_p_i_l_e(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +2604 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +2605 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc = _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +2606 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc = _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +2607 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc = _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +2608 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc = _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +2609 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc = _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r()); │ │ │ │ │ +2610 │ │ │ │ │ +2612 template │ │ │ │ │ +_2_6_1_3 static void _S_y_n_c_h_r_o_n_i_z_e(DEVICE_CONTEXT deviceContext) { │ │ │ │ │ +2614 _S_y_n_c_h_r_o_n_i_z_e(deviceContext->GetCommandQueue()); │ │ │ │ │ +2615 } │ │ │ │ │ +2616 │ │ │ │ │ +_2_6_1_7 static void _S_y_n_c_h_r_o_n_i_z_e(cl_command_queue queue); │ │ │ │ │ +2618 │ │ │ │ │ +2619private: │ │ │ │ │ +2620 cl_context _clContext; │ │ │ │ │ +2621 cl_command_queue _clCommandQueue; │ │ │ │ │ +2622 cl_program _program; │ │ │ │ │ +2623 cl_kernel _stencilKernel; │ │ │ │ │ +2624 cl_kernel _stencilDerivKernel; │ │ │ │ │ +2625 cl_kernel _patchKernel; │ │ │ │ │ +2626}; │ │ │ │ │ +2627 │ │ │ │ │ +2628} // end namespace Osd │ │ │ │ │ +2629 │ │ │ │ │ +2630} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ +2631using namespace OPENSUBDIV_VERSION; │ │ │ │ │ +2632 │ │ │ │ │ +2633} // end namespace OpenSubdiv │ │ │ │ │ +2634 │ │ │ │ │ +2635 │ │ │ │ │ +2636#endif // OPENSUBDIV3_OSD_CL_EVALUATOR_H │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v │ │ │ │ │ DDeeffiinniittiioonn _l_i_m_i_t_s_._h_:_3_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_M_T_L_C_o_n_t_e_x_t │ │ │ │ │ -DDeeffiinniittiioonn _m_t_l_C_o_m_m_o_n_._h_:_4_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_M_T_L_C_o_n_t_e_x_t_:_:_c_o_m_m_a_n_d_Q_u_e_u_e │ │ │ │ │ -id< MTLCommandQueue > commandQueue │ │ │ │ │ -DDeeffiinniittiioonn _m_t_l_C_o_m_m_o_n_._h_:_4_3 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_M_T_L_C_o_n_t_e_x_t_:_:_d_e_v_i_c_e │ │ │ │ │ -id< MTLDevice > device │ │ │ │ │ -DDeeffiinniittiioonn _m_t_l_C_o_m_m_o_n_._h_:_4_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ +Stencil table class wrapping the template for compatibility. │ │ │ │ │ +DDeeffiinniittiioonn _s_t_e_n_c_i_l_T_a_b_l_e_._h_:_2_7_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_L_i_m_i_t_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ +Limit stencil table class wrapping the template for compatibility. │ │ │ │ │ +DDeeffiinniittiioonn _s_t_e_n_c_i_l_T_a_b_l_e_._h_:_5_8_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ +BufferDescriptor is a struct which describes buffer elements in interleaved │ │ │ │ │ +data buffers.... │ │ │ │ │ +DDeeffiinniittiioonn _b_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r_._h_:_6_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ +OpenCL stencil table. │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_5_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_S_t_e_n_c_i_l_T_a_b_l_e_:_:_G_e_t_D_v_v_W_e_i_g_h_t_s_B_u_f_f_e_r │ │ │ │ │ +cl_mem GetDvvWeightsBuffer() const │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_8_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_S_t_e_n_c_i_l_T_a_b_l_e_:_:_C_L_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ +CLStencilTable(Far::StencilTable const *stencilTable, cl_context clContext) │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_S_t_e_n_c_i_l_T_a_b_l_e_:_:_G_e_t_O_f_f_s_e_t_s_B_u_f_f_e_r │ │ │ │ │ +cl_mem GetOffsetsBuffer() const │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_7_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_S_t_e_n_c_i_l_T_a_b_l_e_:_:_C_r_e_a_t_e │ │ │ │ │ +static CLStencilTable * Create(Far::LimitStencilTable const *limitStencilTable, │ │ │ │ │ +DEVICE_CONTEXT context) │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_6_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_S_t_e_n_c_i_l_T_a_b_l_e_:_:_G_e_t_I_n_d_i_c_e_s_B_u_f_f_e_r │ │ │ │ │ +cl_mem GetIndicesBuffer() const │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_7_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_S_t_e_n_c_i_l_T_a_b_l_e_:_:_G_e_t_N_u_m_S_t_e_n_c_i_l_s │ │ │ │ │ +int GetNumStencils() const │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_8_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_S_t_e_n_c_i_l_T_a_b_l_e_:_:_G_e_t_S_i_z_e_s_B_u_f_f_e_r │ │ │ │ │ +cl_mem GetSizesBuffer() const │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_7_4 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_S_t_e_n_c_i_l_T_a_b_l_e_:_:_G_e_t_D_u_u_W_e_i_g_h_t_s_B_u_f_f_e_r │ │ │ │ │ +cl_mem GetDuuWeightsBuffer() const │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_8_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_S_t_e_n_c_i_l_T_a_b_l_e_:_:_G_e_t_D_v_W_e_i_g_h_t_s_B_u_f_f_e_r │ │ │ │ │ +cl_mem GetDvWeightsBuffer() const │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_7_9 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_S_t_e_n_c_i_l_T_a_b_l_e_:_:_G_e_t_D_u_v_W_e_i_g_h_t_s_B_u_f_f_e_r │ │ │ │ │ +cl_mem GetDuvWeightsBuffer() const │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_8_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_S_t_e_n_c_i_l_T_a_b_l_e_:_:_G_e_t_D_u_W_e_i_g_h_t_s_B_u_f_f_e_r │ │ │ │ │ +cl_mem GetDuWeightsBuffer() const │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_7_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_S_t_e_n_c_i_l_T_a_b_l_e_:_:_~_C_L_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ +~CLStencilTable() │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_S_t_e_n_c_i_l_T_a_b_l_e_:_:_C_r_e_a_t_e │ │ │ │ │ +static CLStencilTable * Create(Far::StencilTable const *stencilTable, │ │ │ │ │ +DEVICE_CONTEXT context) │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_5_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_S_t_e_n_c_i_l_T_a_b_l_e_:_:_C_L_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ +CLStencilTable(Far::LimitStencilTable const *limitStencilTable, cl_context │ │ │ │ │ +clContext) │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_S_t_e_n_c_i_l_T_a_b_l_e_:_:_G_e_t_W_e_i_g_h_t_s_B_u_f_f_e_r │ │ │ │ │ +cl_mem GetWeightsBuffer() const │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_7_7 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_1_0_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +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) │ │ │ │ │ +Generic static stencil function. This function has a same signature as other │ │ │ │ │ +device kernels have so t... │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_3_0_9 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_S_y_n_c_h_r_o_n_i_z_e │ │ │ │ │ +static void Synchronize(cl_command_queue queue) │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_~_C_L_E_v_a_l_u_a_t_o_r │ │ │ │ │ +~CLEvaluator() │ │ │ │ │ +Destructor. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +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 │ │ │ │ │ +Dispatch the CL compute kernel asynchronously. returns false if the kernel │ │ │ │ │ +hasn't been compiled yet. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +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) │ │ │ │ │ +Generic static stencil function. This function has a same signature as other │ │ │ │ │ +device kernels have so t... │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_2_1_9 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_C_r_e_a_t_e │ │ │ │ │ +static CLEvaluator * Create(BufferDescriptor const &srcDesc, BufferDescriptor │ │ │ │ │ +const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, │ │ │ │ │ +cl_context clContext, cl_command_queue clCommandQueue) │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_1_1_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_2_2_3_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ +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 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ +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 │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_1_9_7_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +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 │ │ │ │ │ +Generic stencil function. │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_5_6_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ +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 │ │ │ │ │ +Generic limit eval function with derivatives. This function has a same │ │ │ │ │ +signature as other device kern... │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_1_3_7_9 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_I_n_s_t_a_n_t_i_a_t_a_b_l_e │ │ │ │ │ +bool Instantiatable │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_1_0_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_C_r_e_a_t_e │ │ │ │ │ +static CLEvaluator * Create(BufferDescriptor const &srcDesc, BufferDescriptor │ │ │ │ │ +const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, │ │ │ │ │ +DEVICE_CONTEXT deviceContext) │ │ │ │ │ +Generic creator template. │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_1_0_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_2_0_6_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_C_r_e_a_t_e │ │ │ │ │ +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) │ │ │ │ │ +Generic creator template. │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_1_3_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ +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 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +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 │ │ │ │ │ +Dispatch the CL compute kernel asynchronously. returns false if the kernel │ │ │ │ │ +hasn't been compiled yet. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ +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 │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_2_5_6_4 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ +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 │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_1_2_1_7 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +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 │ │ │ │ │ +Generic stencil function. │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_6_4_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_1_6_5_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_S_y_n_c_h_r_o_n_i_z_e │ │ │ │ │ +static void Synchronize(DEVICE_CONTEXT deviceContext) │ │ │ │ │ +Wait the OpenCL kernels finish. │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_2_6_1_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_1_1_2_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +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) │ │ │ │ │ +Generic static stencil function. This function has a same signature as other │ │ │ │ │ +device kernels have so t... │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_4_2_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +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 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_1_4_8_9 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ +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 │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_2_3_2_9 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_2_4_3_7 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_C_r_e_a_t_e │ │ │ │ │ +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) │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_1_4_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_1_0_0_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ +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 │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_1_7_4_9 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_9_0_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ +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 │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_1_5_6_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_1_8_5_4 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +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 │ │ │ │ │ +Generic stencil function. │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_5_0_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ +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 │ │ │ │ │ +Generic limit eval function with derivatives. This function has a same │ │ │ │ │ +signature as other device kern... │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_1_2_8_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_C_L_E_v_a_l_u_a_t_o_r │ │ │ │ │ +CLEvaluator(cl_context context, cl_command_queue queue) │ │ │ │ │ +Constructor. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_C_o_m_p_i_l_e │ │ │ │ │ +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()) │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_L_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ +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 │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _c_l_E_v_a_l_u_a_t_o_r_._h_:_2_1_4_3 │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _o_s_d │ │ │ │ │ - * _m_t_l_C_o_m_m_o_n_._h │ │ │ │ │ + * _c_l_E_v_a_l_u_a_t_o_r_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00815.html │ │ │ │ @@ -97,15 +97,15 @@ │ │ │ │
mtlPatchTable.h File Reference
│ │ │ │ │ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ #include "../far/patchDescriptor.h"
│ │ │ │ #include "../osd/nonCopyable.h"
│ │ │ │ #include "../osd/types.h"
│ │ │ │ -#include "../osd/mtlCommon.h"
│ │ │ │ +#include "../osd/mtlCommon.h"
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00815_source.html │ │ │ │ @@ -198,16 +198,16 @@ │ │ │ │
93using namespace OPENSUBDIV_VERSION;
│ │ │ │
94
│ │ │ │
95} //end namespace OpenSubdiv
│ │ │ │
96
│ │ │ │
97#endif //end OPENSUBDIV3_OSD_MTL_PATCH_TABLE_H
│ │ │ │ │ │ │ │
std::vector< PatchArray > PatchArrayVector
Definition types.h:132
│ │ │ │ -
Container for arrays of parametric patches.
Definition patchTable.h:55
│ │ │ │ - │ │ │ │ +
Container for arrays of parametric patches.
Definition patchTable.h:55
│ │ │ │ + │ │ │ │ │ │ │ │
PatchArrayVector const & GetPatchArrays() const
│ │ │ │
bool allocate(Far::PatchTable const *farPatchTable, MTLContext *context)
│ │ │ │
static MTLPatchTable * Create(Far::PatchTable const *farPatchTable, MTLContext *context)
│ │ │ │ │ │ │ │
std::vector< id< MTLBuffer > > _fvarIndexBuffers
│ │ │ │
id< MTLBuffer > GetFVarPatchParamBuffer(int fvarChannel=0) const
│ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00818.html │ │ │ │ @@ -94,17 +94,17 @@ │ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │
mtlLegacyGregoryPatchTable.h File Reference
│ │ │ │ │ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ -#include "../far/patchTable.h"
│ │ │ │ +#include "../far/patchTable.h"
│ │ │ │ #include "../osd/nonCopyable.h"
│ │ │ │ -#include "../osd/mtlCommon.h"
│ │ │ │ +#include "../osd/mtlCommon.h"
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │

│ │ │ │ Classes

class  MTLPatchTable
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00818_source.html │ │ │ │ @@ -202,16 +202,16 @@ │ │ │ │
89
│ │ │ │
90} //end namespace OpenSuddiv
│ │ │ │
91
│ │ │ │
92#endif // OPENSUBDIV3_OSD_MTL_LEGACY_GREGORY_PATCH_TABLE_H
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -
Container for arrays of parametric patches.
Definition patchTable.h:55
│ │ │ │ - │ │ │ │ +
Container for arrays of parametric patches.
Definition patchTable.h:55
│ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
static MTLLegacyGregoryPatchTable * Create(Far::PatchTable const *farPatchTable, DEVICE_CONTEXT context)
│ │ │ │ │ │ │ │ │ │ │ │
static MTLLegacyGregoryPatchTable * Create(Far::PatchTable const *farPatchTable, MTLContext *context)
│ │ │ │
void UpdateVertexBuffer(id< MTLBuffer > vbo, int numVertices, int numVertexElements, MTLContext *context)
│ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00821.html │ │ │ │ @@ -96,15 +96,15 @@ │ │ │ │ Namespaces │ │ │ │
mtlComputeEvaluator.h File Reference
│ │ │ │ │ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ #include "../osd/types.h"
│ │ │ │ #include "../osd/bufferDescriptor.h"
│ │ │ │ -#include "../osd/mtlCommon.h"
│ │ │ │ +#include "../osd/mtlCommon.h"
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │

│ │ │ │ Classes

class  MTLLegacyGregoryPatchTable
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00821_source.html │ │ │ │ @@ -1187,15 +1187,15 @@ │ │ │ │
2166
│ │ │ │
2167#endif // OPENSUBDIV3_OSD_MTL_COMPUTE_EVALUATOR_H
│ │ │ │ │ │ │ │
std::vector< PatchArray > PatchArrayVector
Definition types.h:132
│ │ │ │
Stencil table class wrapping the template for compatibility.
│ │ │ │
Limit stencil table class wrapping the template for compatibility.
│ │ │ │
BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....
│ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │
MTLStencilTable(Far::LimitStencilTable const *stencilTable, MTLContext *context)
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
MTLStencilTable(Far::StencilTable const *stencilTable, MTLContext *context)
│ │ │ │ │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00824.html │ │ │ │ @@ -94,15 +94,15 @@ │ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │
mtlVertexBuffer.h File Reference
│ │ │ │ │ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ -#include "../osd/mtlCommon.h"
│ │ │ │ +#include "../osd/mtlCommon.h"
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │

│ │ │ │ Classes

class  MTLStencilTable
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00824_source.html │ │ │ │ @@ -187,15 +187,15 @@ │ │ │ │
78} //end namespace OPENSUBDIV_VERSION
│ │ │ │
79 using namespace OPENSUBDIV_VERSION;
│ │ │ │
80
│ │ │ │
81} //end namespace OpenSubdiv
│ │ │ │
82
│ │ │ │
83#endif // OPENSUBDIV3_OSD_MTL_VERTEX_BUFFER_H
│ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │
CPUMTLVertexBuffer(int numElements, int numVertices)
│ │ │ │
static CPUMTLVertexBuffer * Create(int numElements, int numVertices, MTLContext *context)
│ │ │ │ │ │ │ │
void UpdateData(const float *src, int startVertex, int numVertices, MTLContext *context)
│ │ │ │ │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00827.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/osd/d3d11Mesh.h File Reference │ │ │ │ +OpenSubdiv: opensubdiv/osd/hlslPatchShaderSource.h File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -88,43 +88,44 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ -Namespaces | │ │ │ │ -Typedefs
│ │ │ │ -
d3d11Mesh.h File Reference
│ │ │ │ +Classes | │ │ │ │ +Namespaces
│ │ │ │ +
hlslPatchShaderSource.h File Reference
│ │ │ │ │ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ -#include "../osd/mesh.h"
│ │ │ │ -#include "../osd/d3d11PatchTable.h"
│ │ │ │ +#include "../far/patchDescriptor.h"
│ │ │ │ +#include <string>
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │

│ │ │ │ Classes

class  CPUMTLVertexBuffer
 
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +

│ │ │ │ +Classes

class  HLSLPatchShaderSource
 Provides shader source which can be used by client code. More...
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

│ │ │ │ Namespaces

namespace  OpenSubdiv
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION::Osd
 
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │

│ │ │ │ -Typedefs

typedef MeshInterface< D3D11PatchTableD3D11MeshInterface
 
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,24 +1,25 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ -_N_a_m_e_s_p_a_c_e_s | _T_y_p_e_d_e_f_s │ │ │ │ │ -d3d11Mesh.h File Reference │ │ │ │ │ +_C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ +hlslPatchShaderSource.h File Reference │ │ │ │ │ #include "../version.h" │ │ │ │ │ -#include "_._._/_o_s_d_/_m_e_s_h_._h" │ │ │ │ │ -#include "_._._/_o_s_d_/_d_3_d_1_1_P_a_t_c_h_T_a_b_l_e_._h" │ │ │ │ │ +#include "_._._/_f_a_r_/_p_a_t_c_h_D_e_s_c_r_i_p_t_o_r_._h" │ │ │ │ │ +#include │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ +CCllaasssseess │ │ │ │ │ +class   _H_L_S_L_P_a_t_c_h_S_h_a_d_e_r_S_o_u_r_c_e │ │ │ │ │ +  Provides shader source which can be used by client code. _M_o_r_e_._._. │ │ │ │ │ +  │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d │ │ │ │ │   │ │ │ │ │ -TTyyppeeddeeffss │ │ │ │ │ -typedef _M_e_s_h_I_n_t_e_r_f_a_c_e< _D_3_D_1_1_P_a_t_c_h_T_a_b_l_e >  _D_3_D_1_1_M_e_s_h_I_n_t_e_r_f_a_c_e │ │ │ │ │ -  │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _o_s_d │ │ │ │ │ - * _d_3_d_1_1_M_e_s_h_._h │ │ │ │ │ + * _h_l_s_l_P_a_t_c_h_S_h_a_d_e_r_S_o_u_r_c_e_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00827.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -1,3 +1,3 @@ │ │ │ │ │ var a00827 = [ │ │ │ │ │ - ["D3D11MeshInterface", "a00827.html#ae5c8e80d05d6eaee105d8eecfa9ab609", null] │ │ │ │ │ + ["HLSLPatchShaderSource", "a01265.html", null] │ │ │ │ │ ]; │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00827_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/osd/d3d11Mesh.h Source File │ │ │ │ +OpenSubdiv: opensubdiv/osd/hlslPatchShaderSource.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -92,19 +92,19 @@ │ │ │ │
No Matches
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
d3d11Mesh.h
│ │ │ │ +
hlslPatchShaderSource.h
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1//
│ │ │ │ -
2// Copyright 2013 Pixar
│ │ │ │ +
2// Copyright 2015 Pixar
│ │ │ │
3//
│ │ │ │
4// Licensed under the Apache License, Version 2.0 (the "Apache License")
│ │ │ │
5// with the following modification; you may not use this file except in
│ │ │ │
6// compliance with the Apache License and the following modification to it:
│ │ │ │
7// Section 6. Trademarks. is deleted and replaced with:
│ │ │ │
8//
│ │ │ │
9// 6. Trademarks. This License does not grant permission to use the trade
│ │ │ │ @@ -119,45 +119,68 @@ │ │ │ │
18// Unless required by applicable law or agreed to in writing, software
│ │ │ │
19// distributed under the Apache License with the above modification is
│ │ │ │
20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
│ │ │ │
21// KIND, either express or implied. See the Apache License for the specific
│ │ │ │
22// language governing permissions and limitations under the Apache License.
│ │ │ │
23//
│ │ │ │
24
│ │ │ │ -
25#ifndef OPENSUBDIV3_OSD_D3D11MESH_H
│ │ │ │ -
26#define OPENSUBDIV3_OSD_D3D11MESH_H
│ │ │ │ +
25#ifndef OPENSUBDIV3_OSD_HLSL_PATCH_SHADER_SOURCE_H
│ │ │ │ +
26#define OPENSUBDIV3_OSD_HLSL_PATCH_SHADER_SOURCE_H
│ │ │ │
27
│ │ │ │
28#include "../version.h"
│ │ │ │
29
│ │ │ │ -
30#include "../osd/mesh.h"
│ │ │ │ -
31#include "../osd/d3d11PatchTable.h"
│ │ │ │ -
32
│ │ │ │ -
33namespace OpenSubdiv {
│ │ │ │ -
34namespace OPENSUBDIV_VERSION {
│ │ │ │ -
35
│ │ │ │ -
36namespace Osd {
│ │ │ │ -
37
│ │ │ │ - │ │ │ │ -
39
│ │ │ │ -
40
│ │ │ │ -
41} // end namespace Osd
│ │ │ │ -
42
│ │ │ │ -
43} // end namespace OPENSUBDIV_VERSION
│ │ │ │ -
44using namespace OPENSUBDIV_VERSION;
│ │ │ │ -
45
│ │ │ │ -
46} // end namespace OpenSubdiv
│ │ │ │ -
47
│ │ │ │ -
48#endif // OPENSUBDIV3_OSD_D3D11MESH_H
│ │ │ │ +
30#include "../far/patchDescriptor.h"
│ │ │ │ +
31
│ │ │ │ +
32#include <string>
│ │ │ │ +
33
│ │ │ │ +
34namespace OpenSubdiv {
│ │ │ │ +
35namespace OPENSUBDIV_VERSION {
│ │ │ │ +
36
│ │ │ │ +
37namespace Osd {
│ │ │ │ +
38
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
41public:
│ │ │ │ +
45 static std::string GetPatchBasisShaderSource();
│ │ │ │ +
46
│ │ │ │ +
50 static std::string GetPatchDrawingShaderSource();
│ │ │ │ +
51
│ │ │ │ +
59
│ │ │ │ +
60 static std::string GetCommonShaderSource();
│ │ │ │ +
61
│ │ │ │ + │ │ │ │ +
63
│ │ │ │ + │ │ │ │ +
65
│ │ │ │ + │ │ │ │ +
67
│ │ │ │ +
69};
│ │ │ │ +
│ │ │ │ +
70
│ │ │ │ +
71} // end namespace Osd
│ │ │ │ +
72
│ │ │ │ +
73} // end namespace OPENSUBDIV_VERSION
│ │ │ │ +
74using namespace OPENSUBDIV_VERSION;
│ │ │ │ +
75
│ │ │ │ +
76} // end namespace OpenSubdiv
│ │ │ │ +
77
│ │ │ │ +
78#endif // OPENSUBDIV3_OSD_HLSL_PATCH_SHADER_SOURCE_H
│ │ │ │ │ │ │ │ -
MeshInterface< D3D11PatchTable > D3D11MeshInterface
Definition d3d11Mesh.h:38
│ │ │ │ - │ │ │ │ + │ │ │ │ +
Provides shader source which can be used by client code.
│ │ │ │ +
static std::string GetVertexShaderSource(Far::PatchDescriptor::Type type)
│ │ │ │ +
static std::string GetPatchDrawingShaderSource()
Returns shader source which can be used while drawing piecewise parametric patches resulting from sub...
│ │ │ │ +
static std::string GetDomainShaderSource(Far::PatchDescriptor::Type type)
│ │ │ │ +
static std::string GetHullShaderSource(Far::PatchDescriptor::Type type)
│ │ │ │ +
static std::string GetPatchBasisShaderSource()
Returns shader source which can be used to evaluate position and first and second derivatives on piec...
│ │ │ │ + │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ -d3d11Mesh.h │ │ │ │ │ +hlslPatchShaderSource.h │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// │ │ │ │ │ -2// Copyright 2013 Pixar │ │ │ │ │ +2// Copyright 2015 Pixar │ │ │ │ │ 3// │ │ │ │ │ 4// Licensed under the Apache License, Version 2.0 (the "Apache License") │ │ │ │ │ 5// with the following modification; you may not use this file except in │ │ │ │ │ 6// compliance with the Apache License and the following modification to it: │ │ │ │ │ 7// Section 6. Trademarks. is deleted and replaced with: │ │ │ │ │ 8// │ │ │ │ │ 9// 6. Trademarks. This License does not grant permission to use the trade │ │ │ │ │ @@ -24,42 +24,79 @@ │ │ │ │ │ 18// Unless required by applicable law or agreed to in writing, software │ │ │ │ │ 19// distributed under the Apache License with the above modification is │ │ │ │ │ 20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY │ │ │ │ │ 21// KIND, either express or implied. See the Apache License for the specific │ │ │ │ │ 22// language governing permissions and limitations under the Apache License. │ │ │ │ │ 23// │ │ │ │ │ 24 │ │ │ │ │ -25#ifndef OPENSUBDIV3_OSD_D3D11MESH_H │ │ │ │ │ -26#define OPENSUBDIV3_OSD_D3D11MESH_H │ │ │ │ │ +25#ifndef OPENSUBDIV3_OSD_HLSL_PATCH_SHADER_SOURCE_H │ │ │ │ │ +26#define OPENSUBDIV3_OSD_HLSL_PATCH_SHADER_SOURCE_H │ │ │ │ │ 27 │ │ │ │ │ 28#include "../version.h" │ │ │ │ │ 29 │ │ │ │ │ -30#include "../osd/mesh.h" │ │ │ │ │ -31#include "../osd/d3d11PatchTable.h" │ │ │ │ │ -32 │ │ │ │ │ -33namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ -34namespace OPENSUBDIV_VERSION { │ │ │ │ │ -35 │ │ │ │ │ -36namespace Osd { │ │ │ │ │ -37 │ │ │ │ │ -_3_8typedef _M_e_s_h_I_n_t_e_r_f_a_c_e_<_D_3_D_1_1_P_a_t_c_h_T_a_b_l_e_> _D_3_D_1_1_M_e_s_h_I_n_t_e_r_f_a_c_e; │ │ │ │ │ -39 │ │ │ │ │ -40 │ │ │ │ │ -41} // end namespace Osd │ │ │ │ │ -42 │ │ │ │ │ -43} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ -44using namespace OPENSUBDIV_VERSION; │ │ │ │ │ -45 │ │ │ │ │ -46} // end namespace OpenSubdiv │ │ │ │ │ -47 │ │ │ │ │ -48#endif // OPENSUBDIV3_OSD_D3D11MESH_H │ │ │ │ │ +30#include "../far/patchDescriptor.h" │ │ │ │ │ +31 │ │ │ │ │ +32#include │ │ │ │ │ +33 │ │ │ │ │ +34namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ +35namespace OPENSUBDIV_VERSION { │ │ │ │ │ +36 │ │ │ │ │ +37namespace Osd { │ │ │ │ │ +38 │ │ │ │ │ +_4_0class _H_L_S_L_P_a_t_c_h_S_h_a_d_e_r_S_o_u_r_c_e { │ │ │ │ │ +41public: │ │ │ │ │ +_4_5 static std::string _G_e_t_P_a_t_c_h_B_a_s_i_s_S_h_a_d_e_r_S_o_u_r_c_e(); │ │ │ │ │ +46 │ │ │ │ │ +_5_0 static std::string _G_e_t_P_a_t_c_h_D_r_a_w_i_n_g_S_h_a_d_e_r_S_o_u_r_c_e(); │ │ │ │ │ +51 │ │ │ │ │ +59 │ │ │ │ │ +_6_0 static std::string _G_e_t_C_o_m_m_o_n_S_h_a_d_e_r_S_o_u_r_c_e(); │ │ │ │ │ +61 │ │ │ │ │ +_6_2 static std::string _G_e_t_V_e_r_t_e_x_S_h_a_d_e_r_S_o_u_r_c_e(_F_a_r_:_:_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r_:_:_T_y_p_e type); │ │ │ │ │ +63 │ │ │ │ │ +_6_4 static std::string _G_e_t_H_u_l_l_S_h_a_d_e_r_S_o_u_r_c_e(_F_a_r_:_:_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r_:_:_T_y_p_e type); │ │ │ │ │ +65 │ │ │ │ │ +_6_6 static std::string _G_e_t_D_o_m_a_i_n_S_h_a_d_e_r_S_o_u_r_c_e(_F_a_r_:_:_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r_:_:_T_y_p_e type); │ │ │ │ │ +67 │ │ │ │ │ +69}; │ │ │ │ │ +70 │ │ │ │ │ +71} // end namespace Osd │ │ │ │ │ +72 │ │ │ │ │ +73} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ +74using namespace OPENSUBDIV_VERSION; │ │ │ │ │ +75 │ │ │ │ │ +76} // end namespace OpenSubdiv │ │ │ │ │ +77 │ │ │ │ │ +78#endif // OPENSUBDIV3_OSD_HLSL_PATCH_SHADER_SOURCE_H │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v │ │ │ │ │ DDeeffiinniittiioonn _l_i_m_i_t_s_._h_:_3_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_M_e_s_h_I_n_t_e_r_f_a_c_e │ │ │ │ │ -MeshInterface< D3D11PatchTable > D3D11MeshInterface │ │ │ │ │ -DDeeffiinniittiioonn _d_3_d_1_1_M_e_s_h_._h_:_3_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_M_e_s_h_I_n_t_e_r_f_a_c_e │ │ │ │ │ -DDeeffiinniittiioonn _m_e_s_h_._h_:_6_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r_:_:_T_y_p_e │ │ │ │ │ +Type │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_D_e_s_c_r_i_p_t_o_r_._h_:_4_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_H_L_S_L_P_a_t_c_h_S_h_a_d_e_r_S_o_u_r_c_e │ │ │ │ │ +Provides shader source which can be used by client code. │ │ │ │ │ +DDeeffiinniittiioonn _h_l_s_l_P_a_t_c_h_S_h_a_d_e_r_S_o_u_r_c_e_._h_:_4_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_H_L_S_L_P_a_t_c_h_S_h_a_d_e_r_S_o_u_r_c_e_:_: │ │ │ │ │ +_G_e_t_V_e_r_t_e_x_S_h_a_d_e_r_S_o_u_r_c_e │ │ │ │ │ +static std::string GetVertexShaderSource(Far::PatchDescriptor::Type type) │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_H_L_S_L_P_a_t_c_h_S_h_a_d_e_r_S_o_u_r_c_e_:_: │ │ │ │ │ +_G_e_t_P_a_t_c_h_D_r_a_w_i_n_g_S_h_a_d_e_r_S_o_u_r_c_e │ │ │ │ │ +static std::string GetPatchDrawingShaderSource() │ │ │ │ │ +Returns shader source which can be used while drawing piecewise parametric │ │ │ │ │ +patches resulting from sub... │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_H_L_S_L_P_a_t_c_h_S_h_a_d_e_r_S_o_u_r_c_e_:_: │ │ │ │ │ +_G_e_t_D_o_m_a_i_n_S_h_a_d_e_r_S_o_u_r_c_e │ │ │ │ │ +static std::string GetDomainShaderSource(Far::PatchDescriptor::Type type) │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_H_L_S_L_P_a_t_c_h_S_h_a_d_e_r_S_o_u_r_c_e_:_:_G_e_t_H_u_l_l_S_h_a_d_e_r_S_o_u_r_c_e │ │ │ │ │ +static std::string GetHullShaderSource(Far::PatchDescriptor::Type type) │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_H_L_S_L_P_a_t_c_h_S_h_a_d_e_r_S_o_u_r_c_e_:_: │ │ │ │ │ +_G_e_t_P_a_t_c_h_B_a_s_i_s_S_h_a_d_e_r_S_o_u_r_c_e │ │ │ │ │ +static std::string GetPatchBasisShaderSource() │ │ │ │ │ +Returns shader source which can be used to evaluate position and first and │ │ │ │ │ +second derivatives on piec... │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_H_L_S_L_P_a_t_c_h_S_h_a_d_e_r_S_o_u_r_c_e_:_: │ │ │ │ │ +_G_e_t_C_o_m_m_o_n_S_h_a_d_e_r_S_o_u_r_c_e │ │ │ │ │ +static std::string GetCommonShaderSource() │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _o_s_d │ │ │ │ │ - * _d_3_d_1_1_M_e_s_h_._h │ │ │ │ │ + * _h_l_s_l_P_a_t_c_h_S_h_a_d_e_r_S_o_u_r_c_e_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00830.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/osd/hlslPatchShaderSource.h File Reference │ │ │ │ +OpenSubdiv: opensubdiv/osd/d3d11Mesh.h File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -88,44 +88,43 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ -Classes | │ │ │ │ -Namespaces
│ │ │ │ -
hlslPatchShaderSource.h File Reference
│ │ │ │ +Namespaces | │ │ │ │ +Typedefs
│ │ │ │ +
d3d11Mesh.h File Reference
│ │ │ │ │ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ -#include "../far/patchDescriptor.h"
│ │ │ │ -#include <string>
│ │ │ │ +#include "../osd/mesh.h"
│ │ │ │ +#include "../osd/d3d11PatchTable.h"
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -

│ │ │ │ -Classes

class  HLSLPatchShaderSource
 Provides shader source which can be used by client code. More...
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +

│ │ │ │ Namespaces

namespace  OpenSubdiv
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION::Osd
 
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │

│ │ │ │ +Typedefs

typedef MeshInterface< D3D11PatchTableD3D11MeshInterface
 
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,25 +1,24 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ -_C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -hlslPatchShaderSource.h File Reference │ │ │ │ │ +_N_a_m_e_s_p_a_c_e_s | _T_y_p_e_d_e_f_s │ │ │ │ │ +d3d11Mesh.h File Reference │ │ │ │ │ #include "../version.h" │ │ │ │ │ -#include "_._._/_f_a_r_/_p_a_t_c_h_D_e_s_c_r_i_p_t_o_r_._h" │ │ │ │ │ -#include │ │ │ │ │ +#include "_._._/_o_s_d_/_m_e_s_h_._h" │ │ │ │ │ +#include "_._._/_o_s_d_/_d_3_d_1_1_P_a_t_c_h_T_a_b_l_e_._h" │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ -CCllaasssseess │ │ │ │ │ -class   _H_L_S_L_P_a_t_c_h_S_h_a_d_e_r_S_o_u_r_c_e │ │ │ │ │ -  Provides shader source which can be used by client code. _M_o_r_e_._._. │ │ │ │ │ -  │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d │ │ │ │ │   │ │ │ │ │ +TTyyppeeddeeffss │ │ │ │ │ +typedef _M_e_s_h_I_n_t_e_r_f_a_c_e< _D_3_D_1_1_P_a_t_c_h_T_a_b_l_e >  _D_3_D_1_1_M_e_s_h_I_n_t_e_r_f_a_c_e │ │ │ │ │ +  │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _o_s_d │ │ │ │ │ - * _h_l_s_l_P_a_t_c_h_S_h_a_d_e_r_S_o_u_r_c_e_._h │ │ │ │ │ + * _d_3_d_1_1_M_e_s_h_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00830.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -1,3 +1,3 @@ │ │ │ │ │ var a00830 = [ │ │ │ │ │ - ["HLSLPatchShaderSource", "a01265.html", null] │ │ │ │ │ + ["D3D11MeshInterface", "a00830.html#ae5c8e80d05d6eaee105d8eecfa9ab609", null] │ │ │ │ │ ]; │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00830_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/osd/hlslPatchShaderSource.h Source File │ │ │ │ +OpenSubdiv: opensubdiv/osd/d3d11Mesh.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -92,19 +92,19 @@ │ │ │ │
No Matches
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
hlslPatchShaderSource.h
│ │ │ │ +
d3d11Mesh.h
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1//
│ │ │ │ -
2// Copyright 2015 Pixar
│ │ │ │ +
2// Copyright 2013 Pixar
│ │ │ │
3//
│ │ │ │
4// Licensed under the Apache License, Version 2.0 (the "Apache License")
│ │ │ │
5// with the following modification; you may not use this file except in
│ │ │ │
6// compliance with the Apache License and the following modification to it:
│ │ │ │
7// Section 6. Trademarks. is deleted and replaced with:
│ │ │ │
8//
│ │ │ │
9// 6. Trademarks. This License does not grant permission to use the trade
│ │ │ │ @@ -119,68 +119,45 @@ │ │ │ │
18// Unless required by applicable law or agreed to in writing, software
│ │ │ │
19// distributed under the Apache License with the above modification is
│ │ │ │
20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
│ │ │ │
21// KIND, either express or implied. See the Apache License for the specific
│ │ │ │
22// language governing permissions and limitations under the Apache License.
│ │ │ │
23//
│ │ │ │
24
│ │ │ │ -
25#ifndef OPENSUBDIV3_OSD_HLSL_PATCH_SHADER_SOURCE_H
│ │ │ │ -
26#define OPENSUBDIV3_OSD_HLSL_PATCH_SHADER_SOURCE_H
│ │ │ │ +
25#ifndef OPENSUBDIV3_OSD_D3D11MESH_H
│ │ │ │ +
26#define OPENSUBDIV3_OSD_D3D11MESH_H
│ │ │ │
27
│ │ │ │
28#include "../version.h"
│ │ │ │
29
│ │ │ │ -
30#include "../far/patchDescriptor.h"
│ │ │ │ -
31
│ │ │ │ -
32#include <string>
│ │ │ │ -
33
│ │ │ │ -
34namespace OpenSubdiv {
│ │ │ │ -
35namespace OPENSUBDIV_VERSION {
│ │ │ │ -
36
│ │ │ │ -
37namespace Osd {
│ │ │ │ -
38
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
41public:
│ │ │ │ -
45 static std::string GetPatchBasisShaderSource();
│ │ │ │ -
46
│ │ │ │ -
50 static std::string GetPatchDrawingShaderSource();
│ │ │ │ -
51
│ │ │ │ -
59
│ │ │ │ -
60 static std::string GetCommonShaderSource();
│ │ │ │ -
61
│ │ │ │ - │ │ │ │ -
63
│ │ │ │ - │ │ │ │ -
65
│ │ │ │ - │ │ │ │ -
67
│ │ │ │ -
69};
│ │ │ │ -
│ │ │ │ -
70
│ │ │ │ -
71} // end namespace Osd
│ │ │ │ -
72
│ │ │ │ -
73} // end namespace OPENSUBDIV_VERSION
│ │ │ │ -
74using namespace OPENSUBDIV_VERSION;
│ │ │ │ -
75
│ │ │ │ -
76} // end namespace OpenSubdiv
│ │ │ │ -
77
│ │ │ │ -
78#endif // OPENSUBDIV3_OSD_HLSL_PATCH_SHADER_SOURCE_H
│ │ │ │ +
30#include "../osd/mesh.h"
│ │ │ │ +
31#include "../osd/d3d11PatchTable.h"
│ │ │ │ +
32
│ │ │ │ +
33namespace OpenSubdiv {
│ │ │ │ +
34namespace OPENSUBDIV_VERSION {
│ │ │ │ +
35
│ │ │ │ +
36namespace Osd {
│ │ │ │ +
37
│ │ │ │ + │ │ │ │ +
39
│ │ │ │ +
40
│ │ │ │ +
41} // end namespace Osd
│ │ │ │ +
42
│ │ │ │ +
43} // end namespace OPENSUBDIV_VERSION
│ │ │ │ +
44using namespace OPENSUBDIV_VERSION;
│ │ │ │ +
45
│ │ │ │ +
46} // end namespace OpenSubdiv
│ │ │ │ +
47
│ │ │ │ +
48#endif // OPENSUBDIV3_OSD_D3D11MESH_H
│ │ │ │ │ │ │ │ - │ │ │ │ -
Provides shader source which can be used by client code.
│ │ │ │ -
static std::string GetVertexShaderSource(Far::PatchDescriptor::Type type)
│ │ │ │ -
static std::string GetPatchDrawingShaderSource()
Returns shader source which can be used while drawing piecewise parametric patches resulting from sub...
│ │ │ │ -
static std::string GetDomainShaderSource(Far::PatchDescriptor::Type type)
│ │ │ │ -
static std::string GetHullShaderSource(Far::PatchDescriptor::Type type)
│ │ │ │ -
static std::string GetPatchBasisShaderSource()
Returns shader source which can be used to evaluate position and first and second derivatives on piec...
│ │ │ │ - │ │ │ │ +
MeshInterface< D3D11PatchTable > D3D11MeshInterface
Definition d3d11Mesh.h:38
│ │ │ │ + │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ -hlslPatchShaderSource.h │ │ │ │ │ +d3d11Mesh.h │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// │ │ │ │ │ -2// Copyright 2015 Pixar │ │ │ │ │ +2// Copyright 2013 Pixar │ │ │ │ │ 3// │ │ │ │ │ 4// Licensed under the Apache License, Version 2.0 (the "Apache License") │ │ │ │ │ 5// with the following modification; you may not use this file except in │ │ │ │ │ 6// compliance with the Apache License and the following modification to it: │ │ │ │ │ 7// Section 6. Trademarks. is deleted and replaced with: │ │ │ │ │ 8// │ │ │ │ │ 9// 6. Trademarks. This License does not grant permission to use the trade │ │ │ │ │ @@ -24,79 +24,42 @@ │ │ │ │ │ 18// Unless required by applicable law or agreed to in writing, software │ │ │ │ │ 19// distributed under the Apache License with the above modification is │ │ │ │ │ 20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY │ │ │ │ │ 21// KIND, either express or implied. See the Apache License for the specific │ │ │ │ │ 22// language governing permissions and limitations under the Apache License. │ │ │ │ │ 23// │ │ │ │ │ 24 │ │ │ │ │ -25#ifndef OPENSUBDIV3_OSD_HLSL_PATCH_SHADER_SOURCE_H │ │ │ │ │ -26#define OPENSUBDIV3_OSD_HLSL_PATCH_SHADER_SOURCE_H │ │ │ │ │ +25#ifndef OPENSUBDIV3_OSD_D3D11MESH_H │ │ │ │ │ +26#define OPENSUBDIV3_OSD_D3D11MESH_H │ │ │ │ │ 27 │ │ │ │ │ 28#include "../version.h" │ │ │ │ │ 29 │ │ │ │ │ -30#include "../far/patchDescriptor.h" │ │ │ │ │ -31 │ │ │ │ │ -32#include │ │ │ │ │ -33 │ │ │ │ │ -34namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ -35namespace OPENSUBDIV_VERSION { │ │ │ │ │ -36 │ │ │ │ │ -37namespace Osd { │ │ │ │ │ -38 │ │ │ │ │ -_4_0class _H_L_S_L_P_a_t_c_h_S_h_a_d_e_r_S_o_u_r_c_e { │ │ │ │ │ -41public: │ │ │ │ │ -_4_5 static std::string _G_e_t_P_a_t_c_h_B_a_s_i_s_S_h_a_d_e_r_S_o_u_r_c_e(); │ │ │ │ │ -46 │ │ │ │ │ -_5_0 static std::string _G_e_t_P_a_t_c_h_D_r_a_w_i_n_g_S_h_a_d_e_r_S_o_u_r_c_e(); │ │ │ │ │ -51 │ │ │ │ │ -59 │ │ │ │ │ -_6_0 static std::string _G_e_t_C_o_m_m_o_n_S_h_a_d_e_r_S_o_u_r_c_e(); │ │ │ │ │ -61 │ │ │ │ │ -_6_2 static std::string _G_e_t_V_e_r_t_e_x_S_h_a_d_e_r_S_o_u_r_c_e(_F_a_r_:_:_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r_:_:_T_y_p_e type); │ │ │ │ │ -63 │ │ │ │ │ -_6_4 static std::string _G_e_t_H_u_l_l_S_h_a_d_e_r_S_o_u_r_c_e(_F_a_r_:_:_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r_:_:_T_y_p_e type); │ │ │ │ │ -65 │ │ │ │ │ -_6_6 static std::string _G_e_t_D_o_m_a_i_n_S_h_a_d_e_r_S_o_u_r_c_e(_F_a_r_:_:_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r_:_:_T_y_p_e type); │ │ │ │ │ -67 │ │ │ │ │ -69}; │ │ │ │ │ -70 │ │ │ │ │ -71} // end namespace Osd │ │ │ │ │ -72 │ │ │ │ │ -73} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ -74using namespace OPENSUBDIV_VERSION; │ │ │ │ │ -75 │ │ │ │ │ -76} // end namespace OpenSubdiv │ │ │ │ │ -77 │ │ │ │ │ -78#endif // OPENSUBDIV3_OSD_HLSL_PATCH_SHADER_SOURCE_H │ │ │ │ │ +30#include "../osd/mesh.h" │ │ │ │ │ +31#include "../osd/d3d11PatchTable.h" │ │ │ │ │ +32 │ │ │ │ │ +33namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ +34namespace OPENSUBDIV_VERSION { │ │ │ │ │ +35 │ │ │ │ │ +36namespace Osd { │ │ │ │ │ +37 │ │ │ │ │ +_3_8typedef _M_e_s_h_I_n_t_e_r_f_a_c_e_<_D_3_D_1_1_P_a_t_c_h_T_a_b_l_e_> _D_3_D_1_1_M_e_s_h_I_n_t_e_r_f_a_c_e; │ │ │ │ │ +39 │ │ │ │ │ +40 │ │ │ │ │ +41} // end namespace Osd │ │ │ │ │ +42 │ │ │ │ │ +43} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ +44using namespace OPENSUBDIV_VERSION; │ │ │ │ │ +45 │ │ │ │ │ +46} // end namespace OpenSubdiv │ │ │ │ │ +47 │ │ │ │ │ +48#endif // OPENSUBDIV3_OSD_D3D11MESH_H │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v │ │ │ │ │ DDeeffiinniittiioonn _l_i_m_i_t_s_._h_:_3_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r_:_:_T_y_p_e │ │ │ │ │ -Type │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_D_e_s_c_r_i_p_t_o_r_._h_:_4_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_H_L_S_L_P_a_t_c_h_S_h_a_d_e_r_S_o_u_r_c_e │ │ │ │ │ -Provides shader source which can be used by client code. │ │ │ │ │ -DDeeffiinniittiioonn _h_l_s_l_P_a_t_c_h_S_h_a_d_e_r_S_o_u_r_c_e_._h_:_4_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_H_L_S_L_P_a_t_c_h_S_h_a_d_e_r_S_o_u_r_c_e_:_: │ │ │ │ │ -_G_e_t_V_e_r_t_e_x_S_h_a_d_e_r_S_o_u_r_c_e │ │ │ │ │ -static std::string GetVertexShaderSource(Far::PatchDescriptor::Type type) │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_H_L_S_L_P_a_t_c_h_S_h_a_d_e_r_S_o_u_r_c_e_:_: │ │ │ │ │ -_G_e_t_P_a_t_c_h_D_r_a_w_i_n_g_S_h_a_d_e_r_S_o_u_r_c_e │ │ │ │ │ -static std::string GetPatchDrawingShaderSource() │ │ │ │ │ -Returns shader source which can be used while drawing piecewise parametric │ │ │ │ │ -patches resulting from sub... │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_H_L_S_L_P_a_t_c_h_S_h_a_d_e_r_S_o_u_r_c_e_:_: │ │ │ │ │ -_G_e_t_D_o_m_a_i_n_S_h_a_d_e_r_S_o_u_r_c_e │ │ │ │ │ -static std::string GetDomainShaderSource(Far::PatchDescriptor::Type type) │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_H_L_S_L_P_a_t_c_h_S_h_a_d_e_r_S_o_u_r_c_e_:_:_G_e_t_H_u_l_l_S_h_a_d_e_r_S_o_u_r_c_e │ │ │ │ │ -static std::string GetHullShaderSource(Far::PatchDescriptor::Type type) │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_H_L_S_L_P_a_t_c_h_S_h_a_d_e_r_S_o_u_r_c_e_:_: │ │ │ │ │ -_G_e_t_P_a_t_c_h_B_a_s_i_s_S_h_a_d_e_r_S_o_u_r_c_e │ │ │ │ │ -static std::string GetPatchBasisShaderSource() │ │ │ │ │ -Returns shader source which can be used to evaluate position and first and │ │ │ │ │ -second derivatives on piec... │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_H_L_S_L_P_a_t_c_h_S_h_a_d_e_r_S_o_u_r_c_e_:_: │ │ │ │ │ -_G_e_t_C_o_m_m_o_n_S_h_a_d_e_r_S_o_u_r_c_e │ │ │ │ │ -static std::string GetCommonShaderSource() │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_M_e_s_h_I_n_t_e_r_f_a_c_e │ │ │ │ │ +MeshInterface< D3D11PatchTable > D3D11MeshInterface │ │ │ │ │ +DDeeffiinniittiioonn _d_3_d_1_1_M_e_s_h_._h_:_3_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_M_e_s_h_I_n_t_e_r_f_a_c_e │ │ │ │ │ +DDeeffiinniittiioonn _m_e_s_h_._h_:_6_8 │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _o_s_d │ │ │ │ │ - * _h_l_s_l_P_a_t_c_h_S_h_a_d_e_r_S_o_u_r_c_e_._h │ │ │ │ │ + * _d_3_d_1_1_M_e_s_h_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00836_source.html │ │ │ │ @@ -204,15 +204,15 @@ │ │ │ │
95using namespace OPENSUBDIV_VERSION;
│ │ │ │
96
│ │ │ │
97} // end namespace OpenSubdiv
│ │ │ │
98
│ │ │ │
99#endif // OPENSUBDIV3_OSD_GL_PATCH_TABLE_H
│ │ │ │ │ │ │ │
std::vector< PatchArray > PatchArrayVector
Definition types.h:132
│ │ │ │ -
Container for arrays of parametric patches.
Definition patchTable.h:55
│ │ │ │ +
Container for arrays of parametric patches.
Definition patchTable.h:55
│ │ │ │ │ │ │ │
static D3D11PatchTable * Create(Far::PatchTable const *farPatchTable, DEVICE_CONTEXT context)
│ │ │ │ │ │ │ │
bool allocate(Far::PatchTable const *farPatchTable, ID3D11DeviceContext *deviceContext)
│ │ │ │ │ │ │ │ │ │ │ │
ID3D11Buffer * GetPatchIndexBuffer() const
Returns the index buffer containing the patch control vertices.
│ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00839.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/osd/d3d11LegacyGregoryPatchTable.h File Reference │ │ │ │ +OpenSubdiv: opensubdiv/osd/d3d11ComputeEvaluator.h File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -90,41 +90,45 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
d3d11LegacyGregoryPatchTable.h File Reference
│ │ │ │ +
d3d11ComputeEvaluator.h File Reference
│ │ │ │
│ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ -#include "../far/patchTable.h"
│ │ │ │ -#include "../osd/nonCopyable.h"
│ │ │ │ +#include "../osd/bufferDescriptor.h"
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  D3D11LegacyGregoryPatchTable
class  D3D11StencilTable
 D3D11 stencil table. More...
 
class  D3D11ComputeEvaluator
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  OpenSubdiv
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION::Far
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION::Osd
 
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,24 +1,28 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -d3d11LegacyGregoryPatchTable.h File Reference │ │ │ │ │ +d3d11ComputeEvaluator.h File Reference │ │ │ │ │ #include "../version.h" │ │ │ │ │ -#include "_._._/_f_a_r_/_p_a_t_c_h_T_a_b_l_e_._h" │ │ │ │ │ -#include "../osd/nonCopyable.h" │ │ │ │ │ +#include "_._._/_o_s_d_/_b_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r_._h" │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -class   _D_3_D_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ +class   _D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ +  D3D11 stencil table. _M_o_r_e_._._. │ │ │ │ │ +  │ │ │ │ │ +class   _D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N │ │ │ │ │   │ │ │ │ │ +namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r │ │ │ │ │ +  │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d │ │ │ │ │   │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _o_s_d │ │ │ │ │ - * _d_3_d_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_._h │ │ │ │ │ + * _d_3_d_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00839.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -1,3 +1,4 @@ │ │ │ │ │ var a00839 = [ │ │ │ │ │ - ["D3D11LegacyGregoryPatchTable", "a01205.html", "a01205"] │ │ │ │ │ + ["D3D11StencilTable", "a01197.html", "a01197"], │ │ │ │ │ + ["D3D11ComputeEvaluator", "a01201.html", "a01201"] │ │ │ │ │ ]; │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00839_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/osd/d3d11LegacyGregoryPatchTable.h Source File │ │ │ │ +OpenSubdiv: opensubdiv/osd/d3d11ComputeEvaluator.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -92,15 +92,15 @@ │ │ │ │
No Matches
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
d3d11LegacyGregoryPatchTable.h
│ │ │ │ +
d3d11ComputeEvaluator.h
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1//
│ │ │ │
2// Copyright 2015 Pixar
│ │ │ │
3//
│ │ │ │
4// Licensed under the Apache License, Version 2.0 (the "Apache License")
│ │ │ │
5// with the following modification; you may not use this file except in
│ │ │ │ @@ -119,122 +119,225 @@ │ │ │ │
18// Unless required by applicable law or agreed to in writing, software
│ │ │ │
19// distributed under the Apache License with the above modification is
│ │ │ │
20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
│ │ │ │
21// KIND, either express or implied. See the Apache License for the specific
│ │ │ │
22// language governing permissions and limitations under the Apache License.
│ │ │ │
23//
│ │ │ │
24
│ │ │ │ -
25#ifndef OPENSUBDIV3_OSD_D3D11_LEGACY_GREGORY_PATCH_TABLE_H
│ │ │ │ -
26#define OPENSUBDIV3_OSD_D3D11_LEGACY_GREGORY_PATCH_TABLE_H
│ │ │ │ +
25#ifndef OPENSUBDIV3_OSD_D3D11_COMPUTE_EVALUATOR_H
│ │ │ │ +
26#define OPENSUBDIV3_OSD_D3D11_COMPUTE_EVALUATOR_H
│ │ │ │
27
│ │ │ │
28#include "../version.h"
│ │ │ │
29
│ │ │ │ -
30#include "../far/patchTable.h"
│ │ │ │ -
31#include "../osd/nonCopyable.h"
│ │ │ │ -
32
│ │ │ │ -
33struct ID3D11Buffer;
│ │ │ │ -
34struct ID3D11ShaderResourceView;
│ │ │ │ -
35struct ID3D11Device;
│ │ │ │ -
36struct ID3D11DeviceContext;
│ │ │ │ +
30struct ID3D11DeviceContext;
│ │ │ │ +
31struct ID3D11Buffer;
│ │ │ │ +
32struct ID3D11ComputeShader;
│ │ │ │ +
33struct ID3D11ClassLinkage;
│ │ │ │ +
34struct ID3D11ClassInstance;
│ │ │ │ +
35struct ID3D11ShaderResourceView;
│ │ │ │ +
36struct ID3D11UnorderedAccessView;
│ │ │ │
37
│ │ │ │ -
38namespace OpenSubdiv {
│ │ │ │ -
39namespace OPENSUBDIV_VERSION {
│ │ │ │ -
40
│ │ │ │ -
41namespace Osd {
│ │ │ │ +
38#include "../osd/bufferDescriptor.h"
│ │ │ │ +
39
│ │ │ │ +
40namespace OpenSubdiv {
│ │ │ │ +
41namespace OPENSUBDIV_VERSION {
│ │ │ │
42
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
44 : private NonCopyable<D3D11LegacyGregoryPatchTable> {
│ │ │ │ -
45public:
│ │ │ │ - │ │ │ │ -
47
│ │ │ │ -
48 template<typename DEVICE_CONTEXT>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
50 Far::PatchTable const *farPatchTable, DEVICE_CONTEXT context) {
│ │ │ │ -
51 return Create(farPatchTable, context->GetDeviceContext());
│ │ │ │ -
52 }
│ │ │ │ -
│ │ │ │ -
53
│ │ │ │ - │ │ │ │ -
55 Far::PatchTable const *farPatchTable,
│ │ │ │ -
56 ID3D11DeviceContext *deviceContext);
│ │ │ │ -
57
│ │ │ │ -
58 void UpdateVertexBuffer(ID3D11Buffer *vbo,
│ │ │ │ -
59 int numVertices, int numVertexElements,
│ │ │ │ -
60 ID3D11DeviceContext *pd3d11DeviceContext);
│ │ │ │ -
61
│ │ │ │ -
│ │ │ │ -
62 ID3D11ShaderResourceView* GetVertexSRV() const {
│ │ │ │ -
63 return _vertexSRV;
│ │ │ │ -
64 }
│ │ │ │ -
│ │ │ │ -
65
│ │ │ │ -
│ │ │ │ -
66 ID3D11ShaderResourceView* GetVertexValenceSRV() const {
│ │ │ │ -
67 return _vertexValenceSRV;
│ │ │ │ -
68 }
│ │ │ │ -
│ │ │ │ -
69
│ │ │ │ -
│ │ │ │ -
70 ID3D11ShaderResourceView* GetQuadOffsetsSRV() const {
│ │ │ │ -
71 return _quadOffsetsSRV;
│ │ │ │ -
72 }
│ │ │ │ -
│ │ │ │ +
43namespace Far {
│ │ │ │ +
44 class StencilTable;
│ │ │ │ +
45}
│ │ │ │ +
46
│ │ │ │ +
47namespace Osd {
│ │ │ │ +
48
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
57public:
│ │ │ │ +
58 template <typename DEVICE_CONTEXT>
│ │ │ │ +
│ │ │ │ +
59 static D3D11StencilTable *Create(Far::StencilTable const *stencilTable,
│ │ │ │ +
60 DEVICE_CONTEXT context) {
│ │ │ │ +
61 return new D3D11StencilTable(stencilTable, context->GetDeviceContext());
│ │ │ │ +
62 }
│ │ │ │ +
│ │ │ │ +
63
│ │ │ │ +
│ │ │ │ +
64 static D3D11StencilTable *Create(Far::StencilTable const *stencilTable,
│ │ │ │ +
65 ID3D11DeviceContext *deviceContext) {
│ │ │ │ +
66 return new D3D11StencilTable(stencilTable, deviceContext);
│ │ │ │ +
67 }
│ │ │ │ +
│ │ │ │ +
68
│ │ │ │ + │ │ │ │ +
70 ID3D11DeviceContext *deviceContext);
│ │ │ │ +
71
│ │ │ │ + │ │ │ │
73
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ -
76 return _quadOffsetsBase[1];
│ │ │ │ -
77 }
│ │ │ │ -
78 return _quadOffsetsBase[0];
│ │ │ │ -
79 }
│ │ │ │ -
│ │ │ │ +
74 // interfaces needed for D3D11ComputeEvaluator
│ │ │ │ +
75 ID3D11ShaderResourceView *GetSizesSRV() const { return _sizes; }
│ │ │ │ +
76 ID3D11ShaderResourceView *GetOffsetsSRV() const { return _offsets; }
│ │ │ │ +
77 ID3D11ShaderResourceView *GetIndicesSRV() const { return _indices; }
│ │ │ │ +
78 ID3D11ShaderResourceView *GetWeightsSRV() const { return _weights; }
│ │ │ │ +
79 int GetNumStencils() const { return _numStencils; }
│ │ │ │
80
│ │ │ │ -
81protected:
│ │ │ │ - │ │ │ │ -
83
│ │ │ │ -
84private:
│ │ │ │ -
85 ID3D11Buffer* _vertexValenceBuffer;
│ │ │ │ -
86 ID3D11Buffer* _quadOffsetsBuffer;
│ │ │ │ -
87 ID3D11ShaderResourceView* _vertexSRV;
│ │ │ │ -
88 ID3D11ShaderResourceView* _vertexValenceSRV;
│ │ │ │ -
89 ID3D11ShaderResourceView* _quadOffsetsSRV;
│ │ │ │ -
90 int _quadOffsetsBase[2]; // gregory, boundaryGregory
│ │ │ │ -
91};
│ │ │ │ +
81private:
│ │ │ │ +
82 ID3D11ShaderResourceView *_sizes;
│ │ │ │ +
83 ID3D11ShaderResourceView *_offsets;
│ │ │ │ +
84 ID3D11ShaderResourceView *_indices;
│ │ │ │ +
85 ID3D11ShaderResourceView *_weights;
│ │ │ │ +
86 ID3D11Buffer *_sizesBuffer;
│ │ │ │ +
87 ID3D11Buffer *_offsetsBuffer;
│ │ │ │ +
88 ID3D11Buffer *_indicesBuffer;
│ │ │ │ +
89 ID3D11Buffer *_weightsBuffer;
│ │ │ │ +
90
│ │ │ │ +
91 int _numStencils;
│ │ │ │ +
92};
│ │ │ │
│ │ │ │ -
92
│ │ │ │
93
│ │ │ │ -
94
│ │ │ │ -
95} // end namespace Osd
│ │ │ │ -
96
│ │ │ │ -
97} // end namespace OPENSUBDIV_VERSION
│ │ │ │ -
98using namespace OPENSUBDIV_VERSION;
│ │ │ │ -
99
│ │ │ │ -
100} // end namespace OpenSubdiv
│ │ │ │ -
101
│ │ │ │ -
102#endif // OPENSUBDIV3_OSD_D3D11_LEGACY_GREGORY_PATCH_TABLE_H
│ │ │ │ +
94// ---------------------------------------------------------------------------
│ │ │ │ +
95
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
97public:
│ │ │ │ +
98 typedef bool Instantiatable;
│ │ │ │ + │ │ │ │ +
100 BufferDescriptor const &dstDesc,
│ │ │ │ +
101 BufferDescriptor const &duDesc,
│ │ │ │ +
102 BufferDescriptor const &dvDesc,
│ │ │ │ +
103 ID3D11DeviceContext *deviceContext);
│ │ │ │ +
104
│ │ │ │ + │ │ │ │ +
106 BufferDescriptor const &dstDesc,
│ │ │ │ +
107 BufferDescriptor const &duDesc,
│ │ │ │ +
108 BufferDescriptor const &dvDesc,
│ │ │ │ +
109 BufferDescriptor const &duuDesc,
│ │ │ │ +
110 BufferDescriptor const &duvDesc,
│ │ │ │ +
111 BufferDescriptor const &dvvDesc,
│ │ │ │ +
112 ID3D11DeviceContext *deviceContext);
│ │ │ │ +
113
│ │ │ │ + │ │ │ │ +
116
│ │ │ │ + │ │ │ │ +
119
│ │ │ │ +
147 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ +
│ │ │ │ +
148 static bool EvalStencils(
│ │ │ │ +
149 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
150 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
151 STENCIL_TABLE const *stencilTable,
│ │ │ │ +
152 D3D11ComputeEvaluator const *instance,
│ │ │ │ +
153 ID3D11DeviceContext * deviceContext) {
│ │ │ │ +
154 if (instance) {
│ │ │ │ +
155 return instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │ +
156 dstBuffer, dstDesc,
│ │ │ │ +
157 stencilTable,
│ │ │ │ +
158 deviceContext);
│ │ │ │ +
159 } else {
│ │ │ │ +
160 // Create an instance on demand (slow)
│ │ │ │ +
161 (void)deviceContext; // unused
│ │ │ │ +
162 instance = Create(srcDesc, dstDesc,
│ │ │ │ + │ │ │ │ + │ │ │ │ +
165 deviceContext);
│ │ │ │ +
166 if (instance) {
│ │ │ │ +
167 bool r = instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │ +
168 dstBuffer, dstDesc,
│ │ │ │ +
169 stencilTable,
│ │ │ │ +
170 deviceContext);
│ │ │ │ +
171 delete instance;
│ │ │ │ +
172 return r;
│ │ │ │ +
173 }
│ │ │ │ +
174 return false;
│ │ │ │ +
175 }
│ │ │ │ +
176 }
│ │ │ │ +
│ │ │ │ +
177
│ │ │ │ +
180 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
182 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
183 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
184 STENCIL_TABLE const *stencilTable,
│ │ │ │ +
185 ID3D11DeviceContext *deviceContext) const {
│ │ │ │ +
186 return EvalStencils(srcBuffer->BindD3D11UAV(deviceContext), srcDesc,
│ │ │ │ +
187 dstBuffer->BindD3D11UAV(deviceContext), dstDesc,
│ │ │ │ +
188 stencilTable->GetSizesSRV(),
│ │ │ │ +
189 stencilTable->GetOffsetsSRV(),
│ │ │ │ +
190 stencilTable->GetIndicesSRV(),
│ │ │ │ +
191 stencilTable->GetWeightsSRV(),
│ │ │ │ +
192 /* start = */ 0,
│ │ │ │ +
193 /* end = */ stencilTable->GetNumStencils(),
│ │ │ │ +
194 deviceContext);
│ │ │ │ +
195 }
│ │ │ │ +
│ │ │ │ +
196
│ │ │ │ +
199 bool EvalStencils(ID3D11UnorderedAccessView *srcSRV,
│ │ │ │ +
200 BufferDescriptor const &srcDesc,
│ │ │ │ +
201 ID3D11UnorderedAccessView *dstUAV,
│ │ │ │ +
202 BufferDescriptor const &dstDesc,
│ │ │ │ +
203 ID3D11ShaderResourceView *sizesSRV,
│ │ │ │ +
204 ID3D11ShaderResourceView *offsetsSRV,
│ │ │ │ +
205 ID3D11ShaderResourceView *indicesSRV,
│ │ │ │ +
206 ID3D11ShaderResourceView *weightsSRV,
│ │ │ │ +
207 int start,
│ │ │ │ +
208 int end,
│ │ │ │ +
209 ID3D11DeviceContext *deviceContext) const;
│ │ │ │ +
210
│ │ │ │ +
212 bool Compile(BufferDescriptor const &srcDesc,
│ │ │ │ +
213 BufferDescriptor const &dstDesc,
│ │ │ │ +
214 ID3D11DeviceContext *deviceContext);
│ │ │ │ +
215
│ │ │ │ +
217 static void Synchronize(ID3D11DeviceContext *deviceContext);
│ │ │ │ +
218
│ │ │ │ +
219private:
│ │ │ │ +
220 ID3D11ComputeShader * _computeShader;
│ │ │ │ +
221 ID3D11ClassLinkage * _classLinkage;
│ │ │ │ +
222 ID3D11ClassInstance * _singleBufferKernel;
│ │ │ │ +
223 ID3D11ClassInstance * _separateBufferKernel;
│ │ │ │ +
224 ID3D11Buffer * _uniformArgs; // uniform parameters for kernels
│ │ │ │ +
225
│ │ │ │ +
226 int _workGroupSize;
│ │ │ │ +
227};
│ │ │ │ +
│ │ │ │ +
228
│ │ │ │ +
229} // end namespace Osd
│ │ │ │ +
230
│ │ │ │ +
231} // end namespace OPENSUBDIV_VERSION
│ │ │ │ +
232using namespace OPENSUBDIV_VERSION;
│ │ │ │ +
233
│ │ │ │ +
234} // end namespace OpenSubdiv
│ │ │ │ +
235
│ │ │ │ +
236
│ │ │ │ +
237#endif // OPENSUBDIV3_OSD_D3D11_COMPUTE_EVALUATOR_H
│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ -
Container for arrays of parametric patches.
Definition patchTable.h:55
│ │ │ │ - │ │ │ │ -
void UpdateVertexBuffer(ID3D11Buffer *vbo, int numVertices, int numVertexElements, ID3D11DeviceContext *pd3d11DeviceContext)
│ │ │ │ - │ │ │ │ - │ │ │ │ -
static D3D11LegacyGregoryPatchTable * Create(Far::PatchTable const *farPatchTable, ID3D11DeviceContext *deviceContext)
│ │ │ │ - │ │ │ │ -
static D3D11LegacyGregoryPatchTable * Create(Far::PatchTable const *farPatchTable, DEVICE_CONTEXT context)
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ +
Stencil table class wrapping the template for compatibility.
│ │ │ │ +
BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....
│ │ │ │ + │ │ │ │ +
static D3D11StencilTable * Create(Far::StencilTable const *stencilTable, DEVICE_CONTEXT context)
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
D3D11StencilTable(Far::StencilTable const *stencilTable, ID3D11DeviceContext *deviceContext)
│ │ │ │ +
static D3D11StencilTable * Create(Far::StencilTable const *stencilTable, ID3D11DeviceContext *deviceContext)
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
static D3D11ComputeEvaluator * Create(BufferDescriptor const &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, ID3D11DeviceContext *deviceContext)
│ │ │ │ +
static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE const *stencilTable, D3D11ComputeEvaluator const *instance, ID3D11DeviceContext *deviceContext)
Generic static compute function. This function has a same signature as other device kernels have so t...
│ │ │ │ +
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)
│ │ │ │ + │ │ │ │ +
static void Synchronize(ID3D11DeviceContext *deviceContext)
Wait the dispatched kernel finishes.
│ │ │ │ +
bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE const *stencilTable, ID3D11DeviceContext *deviceContext) const
│ │ │ │ +
bool Compile(BufferDescriptor const &srcDesc, BufferDescriptor const &dstDesc, ID3D11DeviceContext *deviceContext)
Configure DX kernel. Returns false if it fails to compile the kernel.
│ │ │ │ + │ │ │ │ + │ │ │ │ +
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
│ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,12 +1,12 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ -d3d11LegacyGregoryPatchTable.h │ │ │ │ │ +d3d11ComputeEvaluator.h │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// │ │ │ │ │ 2// Copyright 2015 Pixar │ │ │ │ │ 3// │ │ │ │ │ 4// Licensed under the Apache License, Version 2.0 (the "Apache License") │ │ │ │ │ 5// with the following modification; you may not use this file except in │ │ │ │ │ 6// compliance with the Apache License and the following modification to it: │ │ │ │ │ @@ -24,134 +24,272 @@ │ │ │ │ │ 18// Unless required by applicable law or agreed to in writing, software │ │ │ │ │ 19// distributed under the Apache License with the above modification is │ │ │ │ │ 20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY │ │ │ │ │ 21// KIND, either express or implied. See the Apache License for the specific │ │ │ │ │ 22// language governing permissions and limitations under the Apache License. │ │ │ │ │ 23// │ │ │ │ │ 24 │ │ │ │ │ -25#ifndef OPENSUBDIV3_OSD_D3D11_LEGACY_GREGORY_PATCH_TABLE_H │ │ │ │ │ -26#define OPENSUBDIV3_OSD_D3D11_LEGACY_GREGORY_PATCH_TABLE_H │ │ │ │ │ +25#ifndef OPENSUBDIV3_OSD_D3D11_COMPUTE_EVALUATOR_H │ │ │ │ │ +26#define OPENSUBDIV3_OSD_D3D11_COMPUTE_EVALUATOR_H │ │ │ │ │ 27 │ │ │ │ │ 28#include "../version.h" │ │ │ │ │ 29 │ │ │ │ │ -30#include "../far/patchTable.h" │ │ │ │ │ -31#include "../osd/nonCopyable.h" │ │ │ │ │ -32 │ │ │ │ │ -33struct ID3D11Buffer; │ │ │ │ │ -34struct ID3D11ShaderResourceView; │ │ │ │ │ -35struct ID3D11Device; │ │ │ │ │ -36struct ID3D11DeviceContext; │ │ │ │ │ +30struct ID3D11DeviceContext; │ │ │ │ │ +31struct ID3D11Buffer; │ │ │ │ │ +32struct ID3D11ComputeShader; │ │ │ │ │ +33struct ID3D11ClassLinkage; │ │ │ │ │ +34struct ID3D11ClassInstance; │ │ │ │ │ +35struct ID3D11ShaderResourceView; │ │ │ │ │ +36struct ID3D11UnorderedAccessView; │ │ │ │ │ 37 │ │ │ │ │ -38namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ -39namespace OPENSUBDIV_VERSION { │ │ │ │ │ -40 │ │ │ │ │ -41namespace Osd { │ │ │ │ │ +38#include "../osd/bufferDescriptor.h" │ │ │ │ │ +39 │ │ │ │ │ +40namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ +41namespace OPENSUBDIV_VERSION { │ │ │ │ │ 42 │ │ │ │ │ -_4_3class _D_3_D_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ -44 : private NonCopyable { │ │ │ │ │ -45public: │ │ │ │ │ -_4_6 _~_D_3_D_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e(); │ │ │ │ │ -47 │ │ │ │ │ -48 template │ │ │ │ │ -_4_9 static _D_3_D_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e *_C_r_e_a_t_e( │ │ │ │ │ -50 _F_a_r_:_:_P_a_t_c_h_T_a_b_l_e const *farPatchTable, DEVICE_CONTEXT context) { │ │ │ │ │ -51 return _C_r_e_a_t_e(farPatchTable, context->GetDeviceContext()); │ │ │ │ │ -52 } │ │ │ │ │ -53 │ │ │ │ │ -_5_4 static _D_3_D_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e *_C_r_e_a_t_e( │ │ │ │ │ -55 _F_a_r_:_:_P_a_t_c_h_T_a_b_l_e const *farPatchTable, │ │ │ │ │ -56 ID3D11DeviceContext *deviceContext); │ │ │ │ │ -57 │ │ │ │ │ -_5_8 void _U_p_d_a_t_e_V_e_r_t_e_x_B_u_f_f_e_r(ID3D11Buffer *vbo, │ │ │ │ │ -59 int numVertices, int numVertexElements, │ │ │ │ │ -60 ID3D11DeviceContext *pd3d11DeviceContext); │ │ │ │ │ -61 │ │ │ │ │ -_6_2 ID3D11ShaderResourceView* _G_e_t_V_e_r_t_e_x_S_R_V() const { │ │ │ │ │ -63 return _vertexSRV; │ │ │ │ │ -64 } │ │ │ │ │ -65 │ │ │ │ │ -_6_6 ID3D11ShaderResourceView* _G_e_t_V_e_r_t_e_x_V_a_l_e_n_c_e_S_R_V() const { │ │ │ │ │ -67 return _vertexValenceSRV; │ │ │ │ │ -68 } │ │ │ │ │ -69 │ │ │ │ │ -_7_0 ID3D11ShaderResourceView* _G_e_t_Q_u_a_d_O_f_f_s_e_t_s_S_R_V() const { │ │ │ │ │ -71 return _quadOffsetsSRV; │ │ │ │ │ -72 } │ │ │ │ │ +43namespace Far { │ │ │ │ │ +44 class StencilTable; │ │ │ │ │ +45} │ │ │ │ │ +46 │ │ │ │ │ +47namespace Osd { │ │ │ │ │ +48 │ │ │ │ │ +_5_6class _D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e { │ │ │ │ │ +57public: │ │ │ │ │ +58 template │ │ │ │ │ +_5_9 static _D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e *_C_r_e_a_t_e(_F_a_r_:_:_S_t_e_n_c_i_l_T_a_b_l_e const *stencilTable, │ │ │ │ │ +60 DEVICE_CONTEXT context) { │ │ │ │ │ +61 return new _D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e(stencilTable, context->GetDeviceContext()); │ │ │ │ │ +62 } │ │ │ │ │ +63 │ │ │ │ │ +_6_4 static _D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e *_C_r_e_a_t_e(_F_a_r_:_:_S_t_e_n_c_i_l_T_a_b_l_e const *stencilTable, │ │ │ │ │ +65 ID3D11DeviceContext *deviceContext) { │ │ │ │ │ +66 return new _D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e(stencilTable, deviceContext); │ │ │ │ │ +67 } │ │ │ │ │ +68 │ │ │ │ │ +_6_9 _D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e(_F_a_r_:_:_S_t_e_n_c_i_l_T_a_b_l_e const *stencilTable, │ │ │ │ │ +70 ID3D11DeviceContext *deviceContext); │ │ │ │ │ +71 │ │ │ │ │ +_7_2 _~_D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e(); │ │ │ │ │ 73 │ │ │ │ │ -_7_4 int _G_e_t_Q_u_a_d_O_f_f_s_e_t_s_B_a_s_e(_F_a_r_:_:_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r_:_:_T_y_p_e type) { │ │ │ │ │ -75 if (type == _F_a_r_:_:_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r_:_:_G_R_E_G_O_R_Y___B_O_U_N_D_A_R_Y) { │ │ │ │ │ -76 return _quadOffsetsBase[1]; │ │ │ │ │ -77 } │ │ │ │ │ -78 return _quadOffsetsBase[0]; │ │ │ │ │ -79 } │ │ │ │ │ +74 // interfaces needed for D3D11ComputeEvaluator │ │ │ │ │ +_7_5 ID3D11ShaderResourceView *_G_e_t_S_i_z_e_s_S_R_V() const { return _sizes; } │ │ │ │ │ +_7_6 ID3D11ShaderResourceView *_G_e_t_O_f_f_s_e_t_s_S_R_V() const { return _offsets; } │ │ │ │ │ +_7_7 ID3D11ShaderResourceView *_G_e_t_I_n_d_i_c_e_s_S_R_V() const { return _indices; } │ │ │ │ │ +_7_8 ID3D11ShaderResourceView *_G_e_t_W_e_i_g_h_t_s_S_R_V() const { return _weights; } │ │ │ │ │ +_7_9 int _G_e_t_N_u_m_S_t_e_n_c_i_l_s() const { return _numStencils; } │ │ │ │ │ 80 │ │ │ │ │ -81protected: │ │ │ │ │ -_8_2 _D_3_D_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e(); │ │ │ │ │ -83 │ │ │ │ │ -84private: │ │ │ │ │ -85 ID3D11Buffer* _vertexValenceBuffer; │ │ │ │ │ -86 ID3D11Buffer* _quadOffsetsBuffer; │ │ │ │ │ -87 ID3D11ShaderResourceView* _vertexSRV; │ │ │ │ │ -88 ID3D11ShaderResourceView* _vertexValenceSRV; │ │ │ │ │ -89 ID3D11ShaderResourceView* _quadOffsetsSRV; │ │ │ │ │ -90 int _quadOffsetsBase[2]; // gregory, boundaryGregory │ │ │ │ │ -91}; │ │ │ │ │ -92 │ │ │ │ │ +81private: │ │ │ │ │ +82 ID3D11ShaderResourceView *_sizes; │ │ │ │ │ +83 ID3D11ShaderResourceView *_offsets; │ │ │ │ │ +84 ID3D11ShaderResourceView *_indices; │ │ │ │ │ +85 ID3D11ShaderResourceView *_weights; │ │ │ │ │ +86 ID3D11Buffer *_sizesBuffer; │ │ │ │ │ +87 ID3D11Buffer *_offsetsBuffer; │ │ │ │ │ +88 ID3D11Buffer *_indicesBuffer; │ │ │ │ │ +89 ID3D11Buffer *_weightsBuffer; │ │ │ │ │ +90 │ │ │ │ │ +91 int _numStencils; │ │ │ │ │ +92}; │ │ │ │ │ 93 │ │ │ │ │ -94 │ │ │ │ │ -95} // end namespace Osd │ │ │ │ │ -96 │ │ │ │ │ -97} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ -98using namespace OPENSUBDIV_VERSION; │ │ │ │ │ -99 │ │ │ │ │ -100} // end namespace OpenSubdiv │ │ │ │ │ -101 │ │ │ │ │ -102#endif // OPENSUBDIV3_OSD_D3D11_LEGACY_GREGORY_PATCH_TABLE_H │ │ │ │ │ +94// -------------------------------------------------------------------------- │ │ │ │ │ +- │ │ │ │ │ +95 │ │ │ │ │ +_9_6class _D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r { │ │ │ │ │ +97public: │ │ │ │ │ +_9_8 typedef bool _I_n_s_t_a_n_t_i_a_t_a_b_l_e; │ │ │ │ │ +_9_9 static _D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r * _C_r_e_a_t_e(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +100 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +101 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +102 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +103 ID3D11DeviceContext *deviceContext); │ │ │ │ │ +104 │ │ │ │ │ +_1_0_5 static _D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r * _C_r_e_a_t_e(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +106 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +107 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +108 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +109 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +110 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +111 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +112 ID3D11DeviceContext *deviceContext); │ │ │ │ │ +113 │ │ │ │ │ +_1_1_5 _D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r(); │ │ │ │ │ +116 │ │ │ │ │ +_1_1_8 _~_D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r(); │ │ │ │ │ +119 │ │ │ │ │ +147 template │ │ │ │ │ +_1_4_8 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ +149 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +150 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +151 STENCIL_TABLE const *stencilTable, │ │ │ │ │ +152 _D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ +153 ID3D11DeviceContext * deviceContext) { │ │ │ │ │ +154 if (instance) { │ │ │ │ │ +155 return instance->_E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer, srcDesc, │ │ │ │ │ +156 dstBuffer, dstDesc, │ │ │ │ │ +157 stencilTable, │ │ │ │ │ +158 deviceContext); │ │ │ │ │ +159 } else { │ │ │ │ │ +160 // Create an instance on demand (slow) │ │ │ │ │ +161 (void)deviceContext; // unused │ │ │ │ │ +162 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ +163 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +164 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +165 deviceContext); │ │ │ │ │ +166 if (instance) { │ │ │ │ │ +167 bool r = instance->_E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer, srcDesc, │ │ │ │ │ +168 dstBuffer, dstDesc, │ │ │ │ │ +169 stencilTable, │ │ │ │ │ +170 deviceContext); │ │ │ │ │ +171 delete instance; │ │ │ │ │ +172 return r; │ │ │ │ │ +173 } │ │ │ │ │ +174 return false; │ │ │ │ │ +175 } │ │ │ │ │ +176 } │ │ │ │ │ +177 │ │ │ │ │ +180 template │ │ │ │ │ +_1_8_1 bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ +182 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +183 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +184 STENCIL_TABLE const *stencilTable, │ │ │ │ │ +185 ID3D11DeviceContext *deviceContext) const { │ │ │ │ │ +186 return _E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer->BindD3D11UAV(deviceContext), srcDesc, │ │ │ │ │ +187 dstBuffer->BindD3D11UAV(deviceContext), dstDesc, │ │ │ │ │ +188 stencilTable->GetSizesSRV(), │ │ │ │ │ +189 stencilTable->GetOffsetsSRV(), │ │ │ │ │ +190 stencilTable->GetIndicesSRV(), │ │ │ │ │ +191 stencilTable->GetWeightsSRV(), │ │ │ │ │ +192 /* start = */ 0, │ │ │ │ │ +193 /* end = */ stencilTable->GetNumStencils(), │ │ │ │ │ +194 deviceContext); │ │ │ │ │ +195 } │ │ │ │ │ +196 │ │ │ │ │ +_1_9_9 bool _E_v_a_l_S_t_e_n_c_i_l_s(ID3D11UnorderedAccessView *srcSRV, │ │ │ │ │ +200 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +201 ID3D11UnorderedAccessView *dstUAV, │ │ │ │ │ +202 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +203 ID3D11ShaderResourceView *sizesSRV, │ │ │ │ │ +204 ID3D11ShaderResourceView *offsetsSRV, │ │ │ │ │ +205 ID3D11ShaderResourceView *indicesSRV, │ │ │ │ │ +206 ID3D11ShaderResourceView *weightsSRV, │ │ │ │ │ +207 int start, │ │ │ │ │ +208 int end, │ │ │ │ │ +209 ID3D11DeviceContext *deviceContext) const; │ │ │ │ │ +210 │ │ │ │ │ +_2_1_2 bool _C_o_m_p_i_l_e(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +213 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +214 ID3D11DeviceContext *deviceContext); │ │ │ │ │ +215 │ │ │ │ │ +_2_1_7 static void _S_y_n_c_h_r_o_n_i_z_e(ID3D11DeviceContext *deviceContext); │ │ │ │ │ +218 │ │ │ │ │ +219private: │ │ │ │ │ +220 ID3D11ComputeShader * _computeShader; │ │ │ │ │ +221 ID3D11ClassLinkage * _classLinkage; │ │ │ │ │ +222 ID3D11ClassInstance * _singleBufferKernel; │ │ │ │ │ +223 ID3D11ClassInstance * _separateBufferKernel; │ │ │ │ │ +224 ID3D11Buffer * _uniformArgs; // uniform parameters for kernels │ │ │ │ │ +225 │ │ │ │ │ +226 int _workGroupSize; │ │ │ │ │ +227}; │ │ │ │ │ +228 │ │ │ │ │ +229} // end namespace Osd │ │ │ │ │ +230 │ │ │ │ │ +231} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ +232using namespace OPENSUBDIV_VERSION; │ │ │ │ │ +233 │ │ │ │ │ +234} // end namespace OpenSubdiv │ │ │ │ │ +235 │ │ │ │ │ +236 │ │ │ │ │ +237#endif // OPENSUBDIV3_OSD_D3D11_COMPUTE_EVALUATOR_H │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v │ │ │ │ │ DDeeffiinniittiioonn _l_i_m_i_t_s_._h_:_3_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r_:_:_T_y_p_e │ │ │ │ │ -Type │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_D_e_s_c_r_i_p_t_o_r_._h_:_4_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r_:_:_G_R_E_G_O_R_Y___B_O_U_N_D_A_R_Y │ │ │ │ │ -@ GREGORY_BOUNDARY │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_D_e_s_c_r_i_p_t_o_r_._h_:_6_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ -Container for arrays of parametric patches. │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_5_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ -DDeeffiinniittiioonn _d_3_d_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_._h_:_4_4 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ -_U_p_d_a_t_e_V_e_r_t_e_x_B_u_f_f_e_r │ │ │ │ │ -void UpdateVertexBuffer(ID3D11Buffer *vbo, int numVertices, int │ │ │ │ │ -numVertexElements, ID3D11DeviceContext *pd3d11DeviceContext) │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ -_G_e_t_Q_u_a_d_O_f_f_s_e_t_s_B_a_s_e │ │ │ │ │ -int GetQuadOffsetsBase(Far::PatchDescriptor::Type type) │ │ │ │ │ -DDeeffiinniittiioonn _d_3_d_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_._h_:_7_4 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ -_~_D_3_D_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ -~D3D11LegacyGregoryPatchTable() │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_:_:_C_r_e_a_t_e │ │ │ │ │ -static D3D11LegacyGregoryPatchTable * Create(Far::PatchTable const │ │ │ │ │ -*farPatchTable, ID3D11DeviceContext *deviceContext) │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_V_e_r_t_e_x_S_R_V │ │ │ │ │ -ID3D11ShaderResourceView * GetVertexSRV() const │ │ │ │ │ -DDeeffiinniittiioonn _d_3_d_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_._h_:_6_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_:_:_C_r_e_a_t_e │ │ │ │ │ -static D3D11LegacyGregoryPatchTable * Create(Far::PatchTable const │ │ │ │ │ -*farPatchTable, DEVICE_CONTEXT context) │ │ │ │ │ -DDeeffiinniittiioonn _d_3_d_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_._h_:_4_9 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ -_G_e_t_V_e_r_t_e_x_V_a_l_e_n_c_e_S_R_V │ │ │ │ │ -ID3D11ShaderResourceView * GetVertexValenceSRV() const │ │ │ │ │ -DDeeffiinniittiioonn _d_3_d_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_._h_:_6_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ -_G_e_t_Q_u_a_d_O_f_f_s_e_t_s_S_R_V │ │ │ │ │ -ID3D11ShaderResourceView * GetQuadOffsetsSRV() const │ │ │ │ │ -DDeeffiinniittiioonn _d_3_d_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_._h_:_7_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ -_D_3_D_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ -D3D11LegacyGregoryPatchTable() │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ +Stencil table class wrapping the template for compatibility. │ │ │ │ │ +DDeeffiinniittiioonn _s_t_e_n_c_i_l_T_a_b_l_e_._h_:_2_7_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ +BufferDescriptor is a struct which describes buffer elements in interleaved │ │ │ │ │ +data buffers.... │ │ │ │ │ +DDeeffiinniittiioonn _b_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r_._h_:_6_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ +D3D11 stencil table. │ │ │ │ │ +DDeeffiinniittiioonn _d_3_d_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_5_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e_:_:_C_r_e_a_t_e │ │ │ │ │ +static D3D11StencilTable * Create(Far::StencilTable const *stencilTable, │ │ │ │ │ +DEVICE_CONTEXT context) │ │ │ │ │ +DDeeffiinniittiioonn _d_3_d_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_5_9 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e_:_:_G_e_t_O_f_f_s_e_t_s_S_R_V │ │ │ │ │ +ID3D11ShaderResourceView * GetOffsetsSRV() const │ │ │ │ │ +DDeeffiinniittiioonn _d_3_d_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_7_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e_:_:_G_e_t_N_u_m_S_t_e_n_c_i_l_s │ │ │ │ │ +int GetNumStencils() const │ │ │ │ │ +DDeeffiinniittiioonn _d_3_d_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_7_9 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e_:_:_G_e_t_I_n_d_i_c_e_s_S_R_V │ │ │ │ │ +ID3D11ShaderResourceView * GetIndicesSRV() const │ │ │ │ │ +DDeeffiinniittiioonn _d_3_d_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_7_7 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e_:_:_~_D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ +~D3D11StencilTable() │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e_:_:_D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ +D3D11StencilTable(Far::StencilTable const *stencilTable, ID3D11DeviceContext │ │ │ │ │ +*deviceContext) │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e_:_:_C_r_e_a_t_e │ │ │ │ │ +static D3D11StencilTable * Create(Far::StencilTable const *stencilTable, │ │ │ │ │ +ID3D11DeviceContext *deviceContext) │ │ │ │ │ +DDeeffiinniittiioonn _d_3_d_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_6_4 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e_:_:_G_e_t_S_i_z_e_s_S_R_V │ │ │ │ │ +ID3D11ShaderResourceView * GetSizesSRV() const │ │ │ │ │ +DDeeffiinniittiioonn _d_3_d_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_7_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e_:_:_G_e_t_W_e_i_g_h_t_s_S_R_V │ │ │ │ │ +ID3D11ShaderResourceView * GetWeightsSRV() const │ │ │ │ │ +DDeeffiinniittiioonn _d_3_d_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_7_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r │ │ │ │ │ +DDeeffiinniittiioonn _d_3_d_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_9_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_C_r_e_a_t_e │ │ │ │ │ +static D3D11ComputeEvaluator * Create(BufferDescriptor const &srcDesc, │ │ │ │ │ +BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, │ │ │ │ │ +BufferDescriptor const &dvDesc, ID3D11DeviceContext *deviceContext) │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const │ │ │ │ │ +&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE │ │ │ │ │ +const *stencilTable, D3D11ComputeEvaluator const *instance, ID3D11DeviceContext │ │ │ │ │ +*deviceContext) │ │ │ │ │ +Generic static compute function. This function has a same signature as other │ │ │ │ │ +device kernels have so t... │ │ │ │ │ +DDeeffiinniittiioonn _d_3_d_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_1_4_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_C_r_e_a_t_e │ │ │ │ │ +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) │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_I_n_s_t_a_n_t_i_a_t_a_b_l_e │ │ │ │ │ +bool Instantiatable │ │ │ │ │ +DDeeffiinniittiioonn _d_3_d_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_9_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_S_y_n_c_h_r_o_n_i_z_e │ │ │ │ │ +static void Synchronize(ID3D11DeviceContext *deviceContext) │ │ │ │ │ +Wait the dispatched kernel finishes. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, │ │ │ │ │ +DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE const │ │ │ │ │ +*stencilTable, ID3D11DeviceContext *deviceContext) const │ │ │ │ │ +DDeeffiinniittiioonn _d_3_d_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_1_8_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_C_o_m_p_i_l_e │ │ │ │ │ +bool Compile(BufferDescriptor const &srcDesc, BufferDescriptor const &dstDesc, │ │ │ │ │ +ID3D11DeviceContext *deviceContext) │ │ │ │ │ +Configure DX kernel. Returns false if it fails to compile the kernel. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_: │ │ │ │ │ +_D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r │ │ │ │ │ +D3D11ComputeEvaluator() │ │ │ │ │ +Constructor. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_: │ │ │ │ │ +_~_D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r │ │ │ │ │ +~D3D11ComputeEvaluator() │ │ │ │ │ +Destructor. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +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 │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _o_s_d │ │ │ │ │ - * _d_3_d_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_._h │ │ │ │ │ + * _d_3_d_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00842.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/osd/d3d11ComputeEvaluator.h File Reference │ │ │ │ +OpenSubdiv: opensubdiv/osd/d3d11LegacyGregoryPatchTable.h File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -90,45 +90,41 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
d3d11ComputeEvaluator.h File Reference
│ │ │ │ +
d3d11LegacyGregoryPatchTable.h File Reference
│ │ │ │
│ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ -#include "../osd/bufferDescriptor.h"
│ │ │ │ +#include "../far/patchTable.h"
│ │ │ │ +#include "../osd/nonCopyable.h"
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  D3D11StencilTable
 D3D11 stencil table. More...
 
class  D3D11ComputeEvaluator
class  D3D11LegacyGregoryPatchTable
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  OpenSubdiv
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION::Far
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION::Osd
 
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,28 +1,24 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -d3d11ComputeEvaluator.h File Reference │ │ │ │ │ +d3d11LegacyGregoryPatchTable.h File Reference │ │ │ │ │ #include "../version.h" │ │ │ │ │ -#include "_._._/_o_s_d_/_b_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r_._h" │ │ │ │ │ +#include "_._._/_f_a_r_/_p_a_t_c_h_T_a_b_l_e_._h" │ │ │ │ │ +#include "../osd/nonCopyable.h" │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -class   _D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ -  D3D11 stencil table. _M_o_r_e_._._. │ │ │ │ │ -  │ │ │ │ │ -class   _D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r │ │ │ │ │ +class   _D_3_D_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N │ │ │ │ │   │ │ │ │ │ -namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r │ │ │ │ │ -  │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d │ │ │ │ │   │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _o_s_d │ │ │ │ │ - * _d_3_d_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h │ │ │ │ │ + * _d_3_d_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00842.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -1,4 +1,3 @@ │ │ │ │ │ var a00842 = [ │ │ │ │ │ - ["D3D11StencilTable", "a01197.html", "a01197"], │ │ │ │ │ - ["D3D11ComputeEvaluator", "a01201.html", "a01201"] │ │ │ │ │ + ["D3D11LegacyGregoryPatchTable", "a01205.html", "a01205"] │ │ │ │ │ ]; │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00842_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/osd/d3d11ComputeEvaluator.h Source File │ │ │ │ +OpenSubdiv: opensubdiv/osd/d3d11LegacyGregoryPatchTable.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -92,15 +92,15 @@ │ │ │ │
No Matches
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
d3d11ComputeEvaluator.h
│ │ │ │ +
d3d11LegacyGregoryPatchTable.h
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1//
│ │ │ │
2// Copyright 2015 Pixar
│ │ │ │
3//
│ │ │ │
4// Licensed under the Apache License, Version 2.0 (the "Apache License")
│ │ │ │
5// with the following modification; you may not use this file except in
│ │ │ │ @@ -119,225 +119,122 @@ │ │ │ │
18// Unless required by applicable law or agreed to in writing, software
│ │ │ │
19// distributed under the Apache License with the above modification is
│ │ │ │
20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
│ │ │ │
21// KIND, either express or implied. See the Apache License for the specific
│ │ │ │
22// language governing permissions and limitations under the Apache License.
│ │ │ │
23//
│ │ │ │
24
│ │ │ │ -
25#ifndef OPENSUBDIV3_OSD_D3D11_COMPUTE_EVALUATOR_H
│ │ │ │ -
26#define OPENSUBDIV3_OSD_D3D11_COMPUTE_EVALUATOR_H
│ │ │ │ +
25#ifndef OPENSUBDIV3_OSD_D3D11_LEGACY_GREGORY_PATCH_TABLE_H
│ │ │ │ +
26#define OPENSUBDIV3_OSD_D3D11_LEGACY_GREGORY_PATCH_TABLE_H
│ │ │ │
27
│ │ │ │
28#include "../version.h"
│ │ │ │
29
│ │ │ │ -
30struct ID3D11DeviceContext;
│ │ │ │ -
31struct ID3D11Buffer;
│ │ │ │ -
32struct ID3D11ComputeShader;
│ │ │ │ -
33struct ID3D11ClassLinkage;
│ │ │ │ -
34struct ID3D11ClassInstance;
│ │ │ │ -
35struct ID3D11ShaderResourceView;
│ │ │ │ -
36struct ID3D11UnorderedAccessView;
│ │ │ │ +
30#include "../far/patchTable.h"
│ │ │ │ +
31#include "../osd/nonCopyable.h"
│ │ │ │ +
32
│ │ │ │ +
33struct ID3D11Buffer;
│ │ │ │ +
34struct ID3D11ShaderResourceView;
│ │ │ │ +
35struct ID3D11Device;
│ │ │ │ +
36struct ID3D11DeviceContext;
│ │ │ │
37
│ │ │ │ -
38#include "../osd/bufferDescriptor.h"
│ │ │ │ -
39
│ │ │ │ -
40namespace OpenSubdiv {
│ │ │ │ -
41namespace OPENSUBDIV_VERSION {
│ │ │ │ +
38namespace OpenSubdiv {
│ │ │ │ +
39namespace OPENSUBDIV_VERSION {
│ │ │ │ +
40
│ │ │ │ +
41namespace Osd {
│ │ │ │
42
│ │ │ │ -
43namespace Far {
│ │ │ │ -
44 class StencilTable;
│ │ │ │ -
45}
│ │ │ │ -
46
│ │ │ │ -
47namespace Osd {
│ │ │ │ -
48
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
57public:
│ │ │ │ -
58 template <typename DEVICE_CONTEXT>
│ │ │ │ -
│ │ │ │ -
59 static D3D11StencilTable *Create(Far::StencilTable const *stencilTable,
│ │ │ │ -
60 DEVICE_CONTEXT context) {
│ │ │ │ -
61 return new D3D11StencilTable(stencilTable, context->GetDeviceContext());
│ │ │ │ -
62 }
│ │ │ │ -
│ │ │ │ -
63
│ │ │ │ -
│ │ │ │ -
64 static D3D11StencilTable *Create(Far::StencilTable const *stencilTable,
│ │ │ │ -
65 ID3D11DeviceContext *deviceContext) {
│ │ │ │ -
66 return new D3D11StencilTable(stencilTable, deviceContext);
│ │ │ │ -
67 }
│ │ │ │ -
│ │ │ │ -
68
│ │ │ │ - │ │ │ │ -
70 ID3D11DeviceContext *deviceContext);
│ │ │ │ -
71
│ │ │ │ - │ │ │ │ +
│ │ │ │ + │ │ │ │ +
44 : private NonCopyable<D3D11LegacyGregoryPatchTable> {
│ │ │ │ +
45public:
│ │ │ │ + │ │ │ │ +
47
│ │ │ │ +
48 template<typename DEVICE_CONTEXT>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
50 Far::PatchTable const *farPatchTable, DEVICE_CONTEXT context) {
│ │ │ │ +
51 return Create(farPatchTable, context->GetDeviceContext());
│ │ │ │ +
52 }
│ │ │ │ +
│ │ │ │ +
53
│ │ │ │ + │ │ │ │ +
55 Far::PatchTable const *farPatchTable,
│ │ │ │ +
56 ID3D11DeviceContext *deviceContext);
│ │ │ │ +
57
│ │ │ │ +
58 void UpdateVertexBuffer(ID3D11Buffer *vbo,
│ │ │ │ +
59 int numVertices, int numVertexElements,
│ │ │ │ +
60 ID3D11DeviceContext *pd3d11DeviceContext);
│ │ │ │ +
61
│ │ │ │ +
│ │ │ │ +
62 ID3D11ShaderResourceView* GetVertexSRV() const {
│ │ │ │ +
63 return _vertexSRV;
│ │ │ │ +
64 }
│ │ │ │ +
│ │ │ │ +
65
│ │ │ │ +
│ │ │ │ +
66 ID3D11ShaderResourceView* GetVertexValenceSRV() const {
│ │ │ │ +
67 return _vertexValenceSRV;
│ │ │ │ +
68 }
│ │ │ │ +
│ │ │ │ +
69
│ │ │ │ +
│ │ │ │ +
70 ID3D11ShaderResourceView* GetQuadOffsetsSRV() const {
│ │ │ │ +
71 return _quadOffsetsSRV;
│ │ │ │ +
72 }
│ │ │ │ +
│ │ │ │
73
│ │ │ │ -
74 // interfaces needed for D3D11ComputeEvaluator
│ │ │ │ -
75 ID3D11ShaderResourceView *GetSizesSRV() const { return _sizes; }
│ │ │ │ -
76 ID3D11ShaderResourceView *GetOffsetsSRV() const { return _offsets; }
│ │ │ │ -
77 ID3D11ShaderResourceView *GetIndicesSRV() const { return _indices; }
│ │ │ │ -
78 ID3D11ShaderResourceView *GetWeightsSRV() const { return _weights; }
│ │ │ │ -
79 int GetNumStencils() const { return _numStencils; }
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ +
76 return _quadOffsetsBase[1];
│ │ │ │ +
77 }
│ │ │ │ +
78 return _quadOffsetsBase[0];
│ │ │ │ +
79 }
│ │ │ │ +
│ │ │ │
80
│ │ │ │ -
81private:
│ │ │ │ -
82 ID3D11ShaderResourceView *_sizes;
│ │ │ │ -
83 ID3D11ShaderResourceView *_offsets;
│ │ │ │ -
84 ID3D11ShaderResourceView *_indices;
│ │ │ │ -
85 ID3D11ShaderResourceView *_weights;
│ │ │ │ -
86 ID3D11Buffer *_sizesBuffer;
│ │ │ │ -
87 ID3D11Buffer *_offsetsBuffer;
│ │ │ │ -
88 ID3D11Buffer *_indicesBuffer;
│ │ │ │ -
89 ID3D11Buffer *_weightsBuffer;
│ │ │ │ -
90
│ │ │ │ -
91 int _numStencils;
│ │ │ │ -
92};
│ │ │ │ +
81protected:
│ │ │ │ + │ │ │ │ +
83
│ │ │ │ +
84private:
│ │ │ │ +
85 ID3D11Buffer* _vertexValenceBuffer;
│ │ │ │ +
86 ID3D11Buffer* _quadOffsetsBuffer;
│ │ │ │ +
87 ID3D11ShaderResourceView* _vertexSRV;
│ │ │ │ +
88 ID3D11ShaderResourceView* _vertexValenceSRV;
│ │ │ │ +
89 ID3D11ShaderResourceView* _quadOffsetsSRV;
│ │ │ │ +
90 int _quadOffsetsBase[2]; // gregory, boundaryGregory
│ │ │ │ +
91};
│ │ │ │
│ │ │ │ +
92
│ │ │ │
93
│ │ │ │ -
94// ---------------------------------------------------------------------------
│ │ │ │ -
95
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
97public:
│ │ │ │ -
98 typedef bool Instantiatable;
│ │ │ │ - │ │ │ │ -
100 BufferDescriptor const &dstDesc,
│ │ │ │ -
101 BufferDescriptor const &duDesc,
│ │ │ │ -
102 BufferDescriptor const &dvDesc,
│ │ │ │ -
103 ID3D11DeviceContext *deviceContext);
│ │ │ │ -
104
│ │ │ │ - │ │ │ │ -
106 BufferDescriptor const &dstDesc,
│ │ │ │ -
107 BufferDescriptor const &duDesc,
│ │ │ │ -
108 BufferDescriptor const &dvDesc,
│ │ │ │ -
109 BufferDescriptor const &duuDesc,
│ │ │ │ -
110 BufferDescriptor const &duvDesc,
│ │ │ │ -
111 BufferDescriptor const &dvvDesc,
│ │ │ │ -
112 ID3D11DeviceContext *deviceContext);
│ │ │ │ -
113
│ │ │ │ - │ │ │ │ -
116
│ │ │ │ - │ │ │ │ -
119
│ │ │ │ -
147 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ -
│ │ │ │ -
148 static bool EvalStencils(
│ │ │ │ -
149 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
150 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
151 STENCIL_TABLE const *stencilTable,
│ │ │ │ -
152 D3D11ComputeEvaluator const *instance,
│ │ │ │ -
153 ID3D11DeviceContext * deviceContext) {
│ │ │ │ -
154 if (instance) {
│ │ │ │ -
155 return instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │ -
156 dstBuffer, dstDesc,
│ │ │ │ -
157 stencilTable,
│ │ │ │ -
158 deviceContext);
│ │ │ │ -
159 } else {
│ │ │ │ -
160 // Create an instance on demand (slow)
│ │ │ │ -
161 (void)deviceContext; // unused
│ │ │ │ -
162 instance = Create(srcDesc, dstDesc,
│ │ │ │ - │ │ │ │ - │ │ │ │ -
165 deviceContext);
│ │ │ │ -
166 if (instance) {
│ │ │ │ -
167 bool r = instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │ -
168 dstBuffer, dstDesc,
│ │ │ │ -
169 stencilTable,
│ │ │ │ -
170 deviceContext);
│ │ │ │ -
171 delete instance;
│ │ │ │ -
172 return r;
│ │ │ │ -
173 }
│ │ │ │ -
174 return false;
│ │ │ │ -
175 }
│ │ │ │ -
176 }
│ │ │ │ -
│ │ │ │ -
177
│ │ │ │ -
180 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
182 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
183 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
184 STENCIL_TABLE const *stencilTable,
│ │ │ │ -
185 ID3D11DeviceContext *deviceContext) const {
│ │ │ │ -
186 return EvalStencils(srcBuffer->BindD3D11UAV(deviceContext), srcDesc,
│ │ │ │ -
187 dstBuffer->BindD3D11UAV(deviceContext), dstDesc,
│ │ │ │ -
188 stencilTable->GetSizesSRV(),
│ │ │ │ -
189 stencilTable->GetOffsetsSRV(),
│ │ │ │ -
190 stencilTable->GetIndicesSRV(),
│ │ │ │ -
191 stencilTable->GetWeightsSRV(),
│ │ │ │ -
192 /* start = */ 0,
│ │ │ │ -
193 /* end = */ stencilTable->GetNumStencils(),
│ │ │ │ -
194 deviceContext);
│ │ │ │ -
195 }
│ │ │ │ -
│ │ │ │ -
196
│ │ │ │ -
199 bool EvalStencils(ID3D11UnorderedAccessView *srcSRV,
│ │ │ │ -
200 BufferDescriptor const &srcDesc,
│ │ │ │ -
201 ID3D11UnorderedAccessView *dstUAV,
│ │ │ │ -
202 BufferDescriptor const &dstDesc,
│ │ │ │ -
203 ID3D11ShaderResourceView *sizesSRV,
│ │ │ │ -
204 ID3D11ShaderResourceView *offsetsSRV,
│ │ │ │ -
205 ID3D11ShaderResourceView *indicesSRV,
│ │ │ │ -
206 ID3D11ShaderResourceView *weightsSRV,
│ │ │ │ -
207 int start,
│ │ │ │ -
208 int end,
│ │ │ │ -
209 ID3D11DeviceContext *deviceContext) const;
│ │ │ │ -
210
│ │ │ │ -
212 bool Compile(BufferDescriptor const &srcDesc,
│ │ │ │ -
213 BufferDescriptor const &dstDesc,
│ │ │ │ -
214 ID3D11DeviceContext *deviceContext);
│ │ │ │ -
215
│ │ │ │ -
217 static void Synchronize(ID3D11DeviceContext *deviceContext);
│ │ │ │ -
218
│ │ │ │ -
219private:
│ │ │ │ -
220 ID3D11ComputeShader * _computeShader;
│ │ │ │ -
221 ID3D11ClassLinkage * _classLinkage;
│ │ │ │ -
222 ID3D11ClassInstance * _singleBufferKernel;
│ │ │ │ -
223 ID3D11ClassInstance * _separateBufferKernel;
│ │ │ │ -
224 ID3D11Buffer * _uniformArgs; // uniform parameters for kernels
│ │ │ │ -
225
│ │ │ │ -
226 int _workGroupSize;
│ │ │ │ -
227};
│ │ │ │ -
│ │ │ │ -
228
│ │ │ │ -
229} // end namespace Osd
│ │ │ │ -
230
│ │ │ │ -
231} // end namespace OPENSUBDIV_VERSION
│ │ │ │ -
232using namespace OPENSUBDIV_VERSION;
│ │ │ │ -
233
│ │ │ │ -
234} // end namespace OpenSubdiv
│ │ │ │ -
235
│ │ │ │ -
236
│ │ │ │ -
237#endif // OPENSUBDIV3_OSD_D3D11_COMPUTE_EVALUATOR_H
│ │ │ │ +
94
│ │ │ │ +
95} // end namespace Osd
│ │ │ │ +
96
│ │ │ │ +
97} // end namespace OPENSUBDIV_VERSION
│ │ │ │ +
98using namespace OPENSUBDIV_VERSION;
│ │ │ │ +
99
│ │ │ │ +
100} // end namespace OpenSubdiv
│ │ │ │ +
101
│ │ │ │ +
102#endif // OPENSUBDIV3_OSD_D3D11_LEGACY_GREGORY_PATCH_TABLE_H
│ │ │ │ │ │ │ │ -
Stencil table class wrapping the template for compatibility.
│ │ │ │ -
BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....
│ │ │ │ - │ │ │ │ -
static D3D11StencilTable * Create(Far::StencilTable const *stencilTable, DEVICE_CONTEXT context)
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
D3D11StencilTable(Far::StencilTable const *stencilTable, ID3D11DeviceContext *deviceContext)
│ │ │ │ -
static D3D11StencilTable * Create(Far::StencilTable const *stencilTable, ID3D11DeviceContext *deviceContext)
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
static D3D11ComputeEvaluator * Create(BufferDescriptor const &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, ID3D11DeviceContext *deviceContext)
│ │ │ │ -
static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE const *stencilTable, D3D11ComputeEvaluator const *instance, ID3D11DeviceContext *deviceContext)
Generic static compute function. This function has a same signature as other device kernels have so t...
│ │ │ │ -
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)
│ │ │ │ - │ │ │ │ -
static void Synchronize(ID3D11DeviceContext *deviceContext)
Wait the dispatched kernel finishes.
│ │ │ │ -
bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE const *stencilTable, ID3D11DeviceContext *deviceContext) const
│ │ │ │ -
bool Compile(BufferDescriptor const &srcDesc, BufferDescriptor const &dstDesc, ID3D11DeviceContext *deviceContext)
Configure DX kernel. Returns false if it fails to compile the kernel.
│ │ │ │ - │ │ │ │ - │ │ │ │ -
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
│ │ │ │ + │ │ │ │ + │ │ │ │ +
Container for arrays of parametric patches.
Definition patchTable.h:55
│ │ │ │ + │ │ │ │ +
void UpdateVertexBuffer(ID3D11Buffer *vbo, int numVertices, int numVertexElements, ID3D11DeviceContext *pd3d11DeviceContext)
│ │ │ │ + │ │ │ │ + │ │ │ │ +
static D3D11LegacyGregoryPatchTable * Create(Far::PatchTable const *farPatchTable, ID3D11DeviceContext *deviceContext)
│ │ │ │ + │ │ │ │ +
static D3D11LegacyGregoryPatchTable * Create(Far::PatchTable const *farPatchTable, DEVICE_CONTEXT context)
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,12 +1,12 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ -d3d11ComputeEvaluator.h │ │ │ │ │ +d3d11LegacyGregoryPatchTable.h │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// │ │ │ │ │ 2// Copyright 2015 Pixar │ │ │ │ │ 3// │ │ │ │ │ 4// Licensed under the Apache License, Version 2.0 (the "Apache License") │ │ │ │ │ 5// with the following modification; you may not use this file except in │ │ │ │ │ 6// compliance with the Apache License and the following modification to it: │ │ │ │ │ @@ -24,272 +24,134 @@ │ │ │ │ │ 18// Unless required by applicable law or agreed to in writing, software │ │ │ │ │ 19// distributed under the Apache License with the above modification is │ │ │ │ │ 20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY │ │ │ │ │ 21// KIND, either express or implied. See the Apache License for the specific │ │ │ │ │ 22// language governing permissions and limitations under the Apache License. │ │ │ │ │ 23// │ │ │ │ │ 24 │ │ │ │ │ -25#ifndef OPENSUBDIV3_OSD_D3D11_COMPUTE_EVALUATOR_H │ │ │ │ │ -26#define OPENSUBDIV3_OSD_D3D11_COMPUTE_EVALUATOR_H │ │ │ │ │ +25#ifndef OPENSUBDIV3_OSD_D3D11_LEGACY_GREGORY_PATCH_TABLE_H │ │ │ │ │ +26#define OPENSUBDIV3_OSD_D3D11_LEGACY_GREGORY_PATCH_TABLE_H │ │ │ │ │ 27 │ │ │ │ │ 28#include "../version.h" │ │ │ │ │ 29 │ │ │ │ │ -30struct ID3D11DeviceContext; │ │ │ │ │ -31struct ID3D11Buffer; │ │ │ │ │ -32struct ID3D11ComputeShader; │ │ │ │ │ -33struct ID3D11ClassLinkage; │ │ │ │ │ -34struct ID3D11ClassInstance; │ │ │ │ │ -35struct ID3D11ShaderResourceView; │ │ │ │ │ -36struct ID3D11UnorderedAccessView; │ │ │ │ │ +30#include "../far/patchTable.h" │ │ │ │ │ +31#include "../osd/nonCopyable.h" │ │ │ │ │ +32 │ │ │ │ │ +33struct ID3D11Buffer; │ │ │ │ │ +34struct ID3D11ShaderResourceView; │ │ │ │ │ +35struct ID3D11Device; │ │ │ │ │ +36struct ID3D11DeviceContext; │ │ │ │ │ 37 │ │ │ │ │ -38#include "../osd/bufferDescriptor.h" │ │ │ │ │ -39 │ │ │ │ │ -40namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ -41namespace OPENSUBDIV_VERSION { │ │ │ │ │ +38namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ +39namespace OPENSUBDIV_VERSION { │ │ │ │ │ +40 │ │ │ │ │ +41namespace Osd { │ │ │ │ │ 42 │ │ │ │ │ -43namespace Far { │ │ │ │ │ -44 class StencilTable; │ │ │ │ │ -45} │ │ │ │ │ -46 │ │ │ │ │ -47namespace Osd { │ │ │ │ │ -48 │ │ │ │ │ -_5_6class _D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e { │ │ │ │ │ -57public: │ │ │ │ │ -58 template │ │ │ │ │ -_5_9 static _D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e *_C_r_e_a_t_e(_F_a_r_:_:_S_t_e_n_c_i_l_T_a_b_l_e const *stencilTable, │ │ │ │ │ -60 DEVICE_CONTEXT context) { │ │ │ │ │ -61 return new _D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e(stencilTable, context->GetDeviceContext()); │ │ │ │ │ -62 } │ │ │ │ │ -63 │ │ │ │ │ -_6_4 static _D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e *_C_r_e_a_t_e(_F_a_r_:_:_S_t_e_n_c_i_l_T_a_b_l_e const *stencilTable, │ │ │ │ │ -65 ID3D11DeviceContext *deviceContext) { │ │ │ │ │ -66 return new _D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e(stencilTable, deviceContext); │ │ │ │ │ -67 } │ │ │ │ │ -68 │ │ │ │ │ -_6_9 _D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e(_F_a_r_:_:_S_t_e_n_c_i_l_T_a_b_l_e const *stencilTable, │ │ │ │ │ -70 ID3D11DeviceContext *deviceContext); │ │ │ │ │ -71 │ │ │ │ │ -_7_2 _~_D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e(); │ │ │ │ │ +_4_3class _D_3_D_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ +44 : private NonCopyable { │ │ │ │ │ +45public: │ │ │ │ │ +_4_6 _~_D_3_D_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e(); │ │ │ │ │ +47 │ │ │ │ │ +48 template │ │ │ │ │ +_4_9 static _D_3_D_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e *_C_r_e_a_t_e( │ │ │ │ │ +50 _F_a_r_:_:_P_a_t_c_h_T_a_b_l_e const *farPatchTable, DEVICE_CONTEXT context) { │ │ │ │ │ +51 return _C_r_e_a_t_e(farPatchTable, context->GetDeviceContext()); │ │ │ │ │ +52 } │ │ │ │ │ +53 │ │ │ │ │ +_5_4 static _D_3_D_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e *_C_r_e_a_t_e( │ │ │ │ │ +55 _F_a_r_:_:_P_a_t_c_h_T_a_b_l_e const *farPatchTable, │ │ │ │ │ +56 ID3D11DeviceContext *deviceContext); │ │ │ │ │ +57 │ │ │ │ │ +_5_8 void _U_p_d_a_t_e_V_e_r_t_e_x_B_u_f_f_e_r(ID3D11Buffer *vbo, │ │ │ │ │ +59 int numVertices, int numVertexElements, │ │ │ │ │ +60 ID3D11DeviceContext *pd3d11DeviceContext); │ │ │ │ │ +61 │ │ │ │ │ +_6_2 ID3D11ShaderResourceView* _G_e_t_V_e_r_t_e_x_S_R_V() const { │ │ │ │ │ +63 return _vertexSRV; │ │ │ │ │ +64 } │ │ │ │ │ +65 │ │ │ │ │ +_6_6 ID3D11ShaderResourceView* _G_e_t_V_e_r_t_e_x_V_a_l_e_n_c_e_S_R_V() const { │ │ │ │ │ +67 return _vertexValenceSRV; │ │ │ │ │ +68 } │ │ │ │ │ +69 │ │ │ │ │ +_7_0 ID3D11ShaderResourceView* _G_e_t_Q_u_a_d_O_f_f_s_e_t_s_S_R_V() const { │ │ │ │ │ +71 return _quadOffsetsSRV; │ │ │ │ │ +72 } │ │ │ │ │ 73 │ │ │ │ │ -74 // interfaces needed for D3D11ComputeEvaluator │ │ │ │ │ -_7_5 ID3D11ShaderResourceView *_G_e_t_S_i_z_e_s_S_R_V() const { return _sizes; } │ │ │ │ │ -_7_6 ID3D11ShaderResourceView *_G_e_t_O_f_f_s_e_t_s_S_R_V() const { return _offsets; } │ │ │ │ │ -_7_7 ID3D11ShaderResourceView *_G_e_t_I_n_d_i_c_e_s_S_R_V() const { return _indices; } │ │ │ │ │ -_7_8 ID3D11ShaderResourceView *_G_e_t_W_e_i_g_h_t_s_S_R_V() const { return _weights; } │ │ │ │ │ -_7_9 int _G_e_t_N_u_m_S_t_e_n_c_i_l_s() const { return _numStencils; } │ │ │ │ │ +_7_4 int _G_e_t_Q_u_a_d_O_f_f_s_e_t_s_B_a_s_e(_F_a_r_:_:_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r_:_:_T_y_p_e type) { │ │ │ │ │ +75 if (type == _F_a_r_:_:_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r_:_:_G_R_E_G_O_R_Y___B_O_U_N_D_A_R_Y) { │ │ │ │ │ +76 return _quadOffsetsBase[1]; │ │ │ │ │ +77 } │ │ │ │ │ +78 return _quadOffsetsBase[0]; │ │ │ │ │ +79 } │ │ │ │ │ 80 │ │ │ │ │ -81private: │ │ │ │ │ -82 ID3D11ShaderResourceView *_sizes; │ │ │ │ │ -83 ID3D11ShaderResourceView *_offsets; │ │ │ │ │ -84 ID3D11ShaderResourceView *_indices; │ │ │ │ │ -85 ID3D11ShaderResourceView *_weights; │ │ │ │ │ -86 ID3D11Buffer *_sizesBuffer; │ │ │ │ │ -87 ID3D11Buffer *_offsetsBuffer; │ │ │ │ │ -88 ID3D11Buffer *_indicesBuffer; │ │ │ │ │ -89 ID3D11Buffer *_weightsBuffer; │ │ │ │ │ -90 │ │ │ │ │ -91 int _numStencils; │ │ │ │ │ -92}; │ │ │ │ │ +81protected: │ │ │ │ │ +_8_2 _D_3_D_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e(); │ │ │ │ │ +83 │ │ │ │ │ +84private: │ │ │ │ │ +85 ID3D11Buffer* _vertexValenceBuffer; │ │ │ │ │ +86 ID3D11Buffer* _quadOffsetsBuffer; │ │ │ │ │ +87 ID3D11ShaderResourceView* _vertexSRV; │ │ │ │ │ +88 ID3D11ShaderResourceView* _vertexValenceSRV; │ │ │ │ │ +89 ID3D11ShaderResourceView* _quadOffsetsSRV; │ │ │ │ │ +90 int _quadOffsetsBase[2]; // gregory, boundaryGregory │ │ │ │ │ +91}; │ │ │ │ │ +92 │ │ │ │ │ 93 │ │ │ │ │ -94// -------------------------------------------------------------------------- │ │ │ │ │ -- │ │ │ │ │ -95 │ │ │ │ │ -_9_6class _D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r { │ │ │ │ │ -97public: │ │ │ │ │ -_9_8 typedef bool _I_n_s_t_a_n_t_i_a_t_a_b_l_e; │ │ │ │ │ -_9_9 static _D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r * _C_r_e_a_t_e(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -100 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -101 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -102 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -103 ID3D11DeviceContext *deviceContext); │ │ │ │ │ -104 │ │ │ │ │ -_1_0_5 static _D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r * _C_r_e_a_t_e(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -106 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -107 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -108 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -109 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -110 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -111 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -112 ID3D11DeviceContext *deviceContext); │ │ │ │ │ -113 │ │ │ │ │ -_1_1_5 _D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r(); │ │ │ │ │ -116 │ │ │ │ │ -_1_1_8 _~_D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r(); │ │ │ │ │ -119 │ │ │ │ │ -147 template │ │ │ │ │ -_1_4_8 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ -149 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -150 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -151 STENCIL_TABLE const *stencilTable, │ │ │ │ │ -152 _D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ -153 ID3D11DeviceContext * deviceContext) { │ │ │ │ │ -154 if (instance) { │ │ │ │ │ -155 return instance->_E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer, srcDesc, │ │ │ │ │ -156 dstBuffer, dstDesc, │ │ │ │ │ -157 stencilTable, │ │ │ │ │ -158 deviceContext); │ │ │ │ │ -159 } else { │ │ │ │ │ -160 // Create an instance on demand (slow) │ │ │ │ │ -161 (void)deviceContext; // unused │ │ │ │ │ -162 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ -163 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -164 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -165 deviceContext); │ │ │ │ │ -166 if (instance) { │ │ │ │ │ -167 bool r = instance->_E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer, srcDesc, │ │ │ │ │ -168 dstBuffer, dstDesc, │ │ │ │ │ -169 stencilTable, │ │ │ │ │ -170 deviceContext); │ │ │ │ │ -171 delete instance; │ │ │ │ │ -172 return r; │ │ │ │ │ -173 } │ │ │ │ │ -174 return false; │ │ │ │ │ -175 } │ │ │ │ │ -176 } │ │ │ │ │ -177 │ │ │ │ │ -180 template │ │ │ │ │ -_1_8_1 bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ -182 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -183 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -184 STENCIL_TABLE const *stencilTable, │ │ │ │ │ -185 ID3D11DeviceContext *deviceContext) const { │ │ │ │ │ -186 return _E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer->BindD3D11UAV(deviceContext), srcDesc, │ │ │ │ │ -187 dstBuffer->BindD3D11UAV(deviceContext), dstDesc, │ │ │ │ │ -188 stencilTable->GetSizesSRV(), │ │ │ │ │ -189 stencilTable->GetOffsetsSRV(), │ │ │ │ │ -190 stencilTable->GetIndicesSRV(), │ │ │ │ │ -191 stencilTable->GetWeightsSRV(), │ │ │ │ │ -192 /* start = */ 0, │ │ │ │ │ -193 /* end = */ stencilTable->GetNumStencils(), │ │ │ │ │ -194 deviceContext); │ │ │ │ │ -195 } │ │ │ │ │ -196 │ │ │ │ │ -_1_9_9 bool _E_v_a_l_S_t_e_n_c_i_l_s(ID3D11UnorderedAccessView *srcSRV, │ │ │ │ │ -200 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -201 ID3D11UnorderedAccessView *dstUAV, │ │ │ │ │ -202 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -203 ID3D11ShaderResourceView *sizesSRV, │ │ │ │ │ -204 ID3D11ShaderResourceView *offsetsSRV, │ │ │ │ │ -205 ID3D11ShaderResourceView *indicesSRV, │ │ │ │ │ -206 ID3D11ShaderResourceView *weightsSRV, │ │ │ │ │ -207 int start, │ │ │ │ │ -208 int end, │ │ │ │ │ -209 ID3D11DeviceContext *deviceContext) const; │ │ │ │ │ -210 │ │ │ │ │ -_2_1_2 bool _C_o_m_p_i_l_e(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -213 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -214 ID3D11DeviceContext *deviceContext); │ │ │ │ │ -215 │ │ │ │ │ -_2_1_7 static void _S_y_n_c_h_r_o_n_i_z_e(ID3D11DeviceContext *deviceContext); │ │ │ │ │ -218 │ │ │ │ │ -219private: │ │ │ │ │ -220 ID3D11ComputeShader * _computeShader; │ │ │ │ │ -221 ID3D11ClassLinkage * _classLinkage; │ │ │ │ │ -222 ID3D11ClassInstance * _singleBufferKernel; │ │ │ │ │ -223 ID3D11ClassInstance * _separateBufferKernel; │ │ │ │ │ -224 ID3D11Buffer * _uniformArgs; // uniform parameters for kernels │ │ │ │ │ -225 │ │ │ │ │ -226 int _workGroupSize; │ │ │ │ │ -227}; │ │ │ │ │ -228 │ │ │ │ │ -229} // end namespace Osd │ │ │ │ │ -230 │ │ │ │ │ -231} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ -232using namespace OPENSUBDIV_VERSION; │ │ │ │ │ -233 │ │ │ │ │ -234} // end namespace OpenSubdiv │ │ │ │ │ -235 │ │ │ │ │ -236 │ │ │ │ │ -237#endif // OPENSUBDIV3_OSD_D3D11_COMPUTE_EVALUATOR_H │ │ │ │ │ +94 │ │ │ │ │ +95} // end namespace Osd │ │ │ │ │ +96 │ │ │ │ │ +97} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ +98using namespace OPENSUBDIV_VERSION; │ │ │ │ │ +99 │ │ │ │ │ +100} // end namespace OpenSubdiv │ │ │ │ │ +101 │ │ │ │ │ +102#endif // OPENSUBDIV3_OSD_D3D11_LEGACY_GREGORY_PATCH_TABLE_H │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v │ │ │ │ │ DDeeffiinniittiioonn _l_i_m_i_t_s_._h_:_3_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ -Stencil table class wrapping the template for compatibility. │ │ │ │ │ -DDeeffiinniittiioonn _s_t_e_n_c_i_l_T_a_b_l_e_._h_:_2_7_3 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ -BufferDescriptor is a struct which describes buffer elements in interleaved │ │ │ │ │ -data buffers.... │ │ │ │ │ -DDeeffiinniittiioonn _b_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r_._h_:_6_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ -D3D11 stencil table. │ │ │ │ │ -DDeeffiinniittiioonn _d_3_d_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_5_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e_:_:_C_r_e_a_t_e │ │ │ │ │ -static D3D11StencilTable * Create(Far::StencilTable const *stencilTable, │ │ │ │ │ -DEVICE_CONTEXT context) │ │ │ │ │ -DDeeffiinniittiioonn _d_3_d_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_5_9 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e_:_:_G_e_t_O_f_f_s_e_t_s_S_R_V │ │ │ │ │ -ID3D11ShaderResourceView * GetOffsetsSRV() const │ │ │ │ │ -DDeeffiinniittiioonn _d_3_d_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_7_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e_:_:_G_e_t_N_u_m_S_t_e_n_c_i_l_s │ │ │ │ │ -int GetNumStencils() const │ │ │ │ │ -DDeeffiinniittiioonn _d_3_d_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_7_9 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e_:_:_G_e_t_I_n_d_i_c_e_s_S_R_V │ │ │ │ │ -ID3D11ShaderResourceView * GetIndicesSRV() const │ │ │ │ │ -DDeeffiinniittiioonn _d_3_d_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_7_7 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e_:_:_~_D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ -~D3D11StencilTable() │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e_:_:_D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ -D3D11StencilTable(Far::StencilTable const *stencilTable, ID3D11DeviceContext │ │ │ │ │ -*deviceContext) │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e_:_:_C_r_e_a_t_e │ │ │ │ │ -static D3D11StencilTable * Create(Far::StencilTable const *stencilTable, │ │ │ │ │ -ID3D11DeviceContext *deviceContext) │ │ │ │ │ -DDeeffiinniittiioonn _d_3_d_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_6_4 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e_:_:_G_e_t_S_i_z_e_s_S_R_V │ │ │ │ │ -ID3D11ShaderResourceView * GetSizesSRV() const │ │ │ │ │ -DDeeffiinniittiioonn _d_3_d_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_7_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_S_t_e_n_c_i_l_T_a_b_l_e_:_:_G_e_t_W_e_i_g_h_t_s_S_R_V │ │ │ │ │ -ID3D11ShaderResourceView * GetWeightsSRV() const │ │ │ │ │ -DDeeffiinniittiioonn _d_3_d_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_7_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r │ │ │ │ │ -DDeeffiinniittiioonn _d_3_d_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_9_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_C_r_e_a_t_e │ │ │ │ │ -static D3D11ComputeEvaluator * Create(BufferDescriptor const &srcDesc, │ │ │ │ │ -BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, │ │ │ │ │ -BufferDescriptor const &dvDesc, ID3D11DeviceContext *deviceContext) │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ -static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const │ │ │ │ │ -&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE │ │ │ │ │ -const *stencilTable, D3D11ComputeEvaluator const *instance, ID3D11DeviceContext │ │ │ │ │ -*deviceContext) │ │ │ │ │ -Generic static compute function. This function has a same signature as other │ │ │ │ │ -device kernels have so t... │ │ │ │ │ -DDeeffiinniittiioonn _d_3_d_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_1_4_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_C_r_e_a_t_e │ │ │ │ │ -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) │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_I_n_s_t_a_n_t_i_a_t_a_b_l_e │ │ │ │ │ -bool Instantiatable │ │ │ │ │ -DDeeffiinniittiioonn _d_3_d_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_9_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_S_y_n_c_h_r_o_n_i_z_e │ │ │ │ │ -static void Synchronize(ID3D11DeviceContext *deviceContext) │ │ │ │ │ -Wait the dispatched kernel finishes. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ -bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, │ │ │ │ │ -DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE const │ │ │ │ │ -*stencilTable, ID3D11DeviceContext *deviceContext) const │ │ │ │ │ -DDeeffiinniittiioonn _d_3_d_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_1_8_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_C_o_m_p_i_l_e │ │ │ │ │ -bool Compile(BufferDescriptor const &srcDesc, BufferDescriptor const &dstDesc, │ │ │ │ │ -ID3D11DeviceContext *deviceContext) │ │ │ │ │ -Configure DX kernel. Returns false if it fails to compile the kernel. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_: │ │ │ │ │ -_D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r │ │ │ │ │ -D3D11ComputeEvaluator() │ │ │ │ │ -Constructor. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_: │ │ │ │ │ -_~_D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r │ │ │ │ │ -~D3D11ComputeEvaluator() │ │ │ │ │ -Destructor. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ -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 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r_:_:_T_y_p_e │ │ │ │ │ +Type │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_D_e_s_c_r_i_p_t_o_r_._h_:_4_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r_:_:_G_R_E_G_O_R_Y___B_O_U_N_D_A_R_Y │ │ │ │ │ +@ GREGORY_BOUNDARY │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_D_e_s_c_r_i_p_t_o_r_._h_:_6_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ +Container for arrays of parametric patches. │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_5_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ +DDeeffiinniittiioonn _d_3_d_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_._h_:_4_4 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ +_U_p_d_a_t_e_V_e_r_t_e_x_B_u_f_f_e_r │ │ │ │ │ +void UpdateVertexBuffer(ID3D11Buffer *vbo, int numVertices, int │ │ │ │ │ +numVertexElements, ID3D11DeviceContext *pd3d11DeviceContext) │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ +_G_e_t_Q_u_a_d_O_f_f_s_e_t_s_B_a_s_e │ │ │ │ │ +int GetQuadOffsetsBase(Far::PatchDescriptor::Type type) │ │ │ │ │ +DDeeffiinniittiioonn _d_3_d_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_._h_:_7_4 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ +_~_D_3_D_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ +~D3D11LegacyGregoryPatchTable() │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_:_:_C_r_e_a_t_e │ │ │ │ │ +static D3D11LegacyGregoryPatchTable * Create(Far::PatchTable const │ │ │ │ │ +*farPatchTable, ID3D11DeviceContext *deviceContext) │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_V_e_r_t_e_x_S_R_V │ │ │ │ │ +ID3D11ShaderResourceView * GetVertexSRV() const │ │ │ │ │ +DDeeffiinniittiioonn _d_3_d_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_._h_:_6_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_:_:_C_r_e_a_t_e │ │ │ │ │ +static D3D11LegacyGregoryPatchTable * Create(Far::PatchTable const │ │ │ │ │ +*farPatchTable, DEVICE_CONTEXT context) │ │ │ │ │ +DDeeffiinniittiioonn _d_3_d_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_._h_:_4_9 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ +_G_e_t_V_e_r_t_e_x_V_a_l_e_n_c_e_S_R_V │ │ │ │ │ +ID3D11ShaderResourceView * GetVertexValenceSRV() const │ │ │ │ │ +DDeeffiinniittiioonn _d_3_d_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_._h_:_6_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ +_G_e_t_Q_u_a_d_O_f_f_s_e_t_s_S_R_V │ │ │ │ │ +ID3D11ShaderResourceView * GetQuadOffsetsSRV() const │ │ │ │ │ +DDeeffiinniittiioonn _d_3_d_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_._h_:_7_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_D_3_D_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ +_D_3_D_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ +D3D11LegacyGregoryPatchTable() │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _o_s_d │ │ │ │ │ - * _d_3_d_1_1_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h │ │ │ │ │ + * _d_3_d_1_1_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00845.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/osd/glComputeEvaluator.h File Reference │ │ │ │ +OpenSubdiv: opensubdiv/osd/cpuD3D11VertexBuffer.h File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -90,47 +90,41 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
glComputeEvaluator.h File Reference
│ │ │ │ +
cpuD3D11VertexBuffer.h File Reference
│ │ │ │
│ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ -#include "../osd/opengl.h"
│ │ │ │ -#include "../osd/types.h"
│ │ │ │ -#include "../osd/bufferDescriptor.h"
│ │ │ │ +#include <cstddef>
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  GLStencilTableSSBO
 GL stencil table (Shader Storage buffer) More...
 
class  GLComputeEvaluator
class  CpuD3D11VertexBuffer
 Concrete vertex buffer class for Cpu subdivision and DirectX drawing. More...
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  OpenSubdiv
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION::Far
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION::Osd
 
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,30 +1,25 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -glComputeEvaluator.h File Reference │ │ │ │ │ +cpuD3D11VertexBuffer.h File Reference │ │ │ │ │ #include "../version.h" │ │ │ │ │ -#include "_._._/_o_s_d_/_o_p_e_n_g_l_._h" │ │ │ │ │ -#include "_._._/_o_s_d_/_t_y_p_e_s_._h" │ │ │ │ │ -#include "_._._/_o_s_d_/_b_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r_._h" │ │ │ │ │ +#include │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -class   _G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O │ │ │ │ │ -  GL stencil table (Shader Storage buffer) _M_o_r_e_._._. │ │ │ │ │ -  │ │ │ │ │ -class   _G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r │ │ │ │ │ +class   _C_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r │ │ │ │ │ +  Concrete vertex buffer class for Cpu subdivision and DirectX drawing. │ │ │ │ │ + _M_o_r_e_._._. │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N │ │ │ │ │   │ │ │ │ │ -namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r │ │ │ │ │ -  │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d │ │ │ │ │   │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _o_s_d │ │ │ │ │ - * _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h │ │ │ │ │ + * _c_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00845.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -1,4 +1,3 @@ │ │ │ │ │ var a00845 = [ │ │ │ │ │ - ["GLStencilTableSSBO", "a01217.html", "a01217"], │ │ │ │ │ - ["GLComputeEvaluator", "a01221.html", "a01221"] │ │ │ │ │ + ["CpuD3D11VertexBuffer", "a01161.html", "a01161"] │ │ │ │ │ ]; │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00845_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/osd/glComputeEvaluator.h Source File │ │ │ │ +OpenSubdiv: opensubdiv/osd/cpuD3D11VertexBuffer.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -92,19 +92,19 @@ │ │ │ │
No Matches
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
glComputeEvaluator.h
│ │ │ │ +
cpuD3D11VertexBuffer.h
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1//
│ │ │ │ -
2// Copyright 2015 Pixar
│ │ │ │ +
2// Copyright 2013 Pixar
│ │ │ │
3//
│ │ │ │
4// Licensed under the Apache License, Version 2.0 (the "Apache License")
│ │ │ │
5// with the following modification; you may not use this file except in
│ │ │ │
6// compliance with the Apache License and the following modification to it:
│ │ │ │
7// Section 6. Trademarks. is deleted and replaced with:
│ │ │ │
8//
│ │ │ │
9// 6. Trademarks. This License does not grant permission to use the trade
│ │ │ │ @@ -119,1132 +119,91 @@ │ │ │ │
18// Unless required by applicable law or agreed to in writing, software
│ │ │ │
19// distributed under the Apache License with the above modification is
│ │ │ │
20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
│ │ │ │
21// KIND, either express or implied. See the Apache License for the specific
│ │ │ │
22// language governing permissions and limitations under the Apache License.
│ │ │ │
23//
│ │ │ │
24
│ │ │ │ -
25#ifndef OPENSUBDIV3_OSD_GL_COMPUTE_EVALUATOR_H
│ │ │ │ -
26#define OPENSUBDIV3_OSD_GL_COMPUTE_EVALUATOR_H
│ │ │ │ +
25#ifndef OPENSUBDIV3_OSD_CPU_D3D11_VERTEX_BUFFER_H
│ │ │ │ +
26#define OPENSUBDIV3_OSD_CPU_D3D11_VERTEX_BUFFER_H
│ │ │ │
27
│ │ │ │
28#include "../version.h"
│ │ │ │ -
29
│ │ │ │ -
30#include "../osd/opengl.h"
│ │ │ │ -
31#include "../osd/types.h"
│ │ │ │ -
32#include "../osd/bufferDescriptor.h"
│ │ │ │ -
33
│ │ │ │ -
34namespace OpenSubdiv {
│ │ │ │ -
35namespace OPENSUBDIV_VERSION {
│ │ │ │ -
36
│ │ │ │ -
37namespace Far {
│ │ │ │ -
38 class PatchTable;
│ │ │ │ -
39 class StencilTable;
│ │ │ │ -
40 class LimitStencilTable;
│ │ │ │ -
41}
│ │ │ │ -
42
│ │ │ │ -
43namespace Osd {
│ │ │ │ -
44
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
52public:
│ │ │ │ -
│ │ │ │ -
53 static GLStencilTableSSBO *Create(Far::StencilTable const *stencilTable,
│ │ │ │ -
54 void *deviceContext = NULL) {
│ │ │ │ -
55 (void)deviceContext; // unused
│ │ │ │ -
56 return new GLStencilTableSSBO(stencilTable);
│ │ │ │ -
57 }
│ │ │ │ -
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
59 Far::LimitStencilTable const *limitStencilTable,
│ │ │ │ -
60 void *deviceContext = NULL) {
│ │ │ │ -
61 (void)deviceContext; // unused
│ │ │ │ -
62 return new GLStencilTableSSBO(limitStencilTable);
│ │ │ │ -
63 }
│ │ │ │ -
│ │ │ │ +
29#include <cstddef>
│ │ │ │ +
30
│ │ │ │ +
31struct ID3D11Buffer;
│ │ │ │ +
32struct ID3D11Device;
│ │ │ │ +
33struct ID3D11DeviceContext;
│ │ │ │ +
34
│ │ │ │ +
35namespace OpenSubdiv {
│ │ │ │ +
36namespace OPENSUBDIV_VERSION {
│ │ │ │ +
37
│ │ │ │ +
38namespace Osd {
│ │ │ │ +
39
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
49public:
│ │ │ │ +
51 static CpuD3D11VertexBuffer * Create(int numElements, int numVertices,
│ │ │ │ +
52 ID3D11DeviceContext *deviceContext);
│ │ │ │ +
53
│ │ │ │ + │ │ │ │ +
56
│ │ │ │ +
59 void UpdateData(const float *src, int startVertex, int numVertices,
│ │ │ │ +
60 void *deviceContext = NULL);
│ │ │ │ +
61
│ │ │ │ +
63 int GetNumElements() const;
│ │ │ │
64
│ │ │ │ -
65 explicit GLStencilTableSSBO(Far::StencilTable const *stencilTable);
│ │ │ │ -
66 explicit GLStencilTableSSBO(Far::LimitStencilTable const *limitStencilTable);
│ │ │ │ - │ │ │ │ -
68
│ │ │ │ -
69 // interfaces needed for GLSLComputeKernel
│ │ │ │ -
70 GLuint GetSizesBuffer() const { return _sizes; }
│ │ │ │ -
71 GLuint GetOffsetsBuffer() const { return _offsets; }
│ │ │ │ -
72 GLuint GetIndicesBuffer() const { return _indices; }
│ │ │ │ -
73 GLuint GetWeightsBuffer() const { return _weights; }
│ │ │ │ -
74 GLuint GetDuWeightsBuffer() const { return _duWeights; }
│ │ │ │ -
75 GLuint GetDvWeightsBuffer() const { return _dvWeights; }
│ │ │ │ -
76 GLuint GetDuuWeightsBuffer() const { return _duuWeights; }
│ │ │ │ -
77 GLuint GetDuvWeightsBuffer() const { return _duvWeights; }
│ │ │ │ -
78 GLuint GetDvvWeightsBuffer() const { return _dvvWeights; }
│ │ │ │ -
79 int GetNumStencils() const { return _numStencils; }
│ │ │ │ -
80
│ │ │ │ -
81private:
│ │ │ │ -
82 GLuint _sizes;
│ │ │ │ -
83 GLuint _offsets;
│ │ │ │ -
84 GLuint _indices;
│ │ │ │ -
85 GLuint _weights;
│ │ │ │ -
86 GLuint _duWeights;
│ │ │ │ -
87 GLuint _dvWeights;
│ │ │ │ -
88 GLuint _duuWeights;
│ │ │ │ -
89 GLuint _duvWeights;
│ │ │ │ -
90 GLuint _dvvWeights;
│ │ │ │ -
91 int _numStencils;
│ │ │ │ -
92};
│ │ │ │ +
66 int GetNumVertices() const;
│ │ │ │ +
67
│ │ │ │ +
69 float * BindCpuBuffer();
│ │ │ │ +
70
│ │ │ │ +
72 ID3D11Buffer *BindD3D11Buffer(ID3D11DeviceContext *deviceContext);
│ │ │ │ +
73
│ │ │ │ +
│ │ │ │ +
75 ID3D11Buffer *BindVBO(ID3D11DeviceContext *deviceContext) {
│ │ │ │ +
76 return BindD3D11Buffer(deviceContext);
│ │ │ │ +
77 }
│ │ │ │ +
│ │ │ │ +
78
│ │ │ │ +
79protected:
│ │ │ │ +
81 CpuD3D11VertexBuffer(int numElements, int numVertices);
│ │ │ │ +
82
│ │ │ │ +
83 bool allocate(ID3D11Device *device);
│ │ │ │ +
84
│ │ │ │ +
85private:
│ │ │ │ +
86 int _numElements;
│ │ │ │ +
87 int _numVertices;
│ │ │ │ +
88 ID3D11Buffer *_d3d11Buffer;
│ │ │ │ +
89 float *_cpuBuffer;
│ │ │ │ +
90};
│ │ │ │
│ │ │ │ +
91
│ │ │ │ +
92} // end namespace Osd
│ │ │ │
93
│ │ │ │ -
94// ---------------------------------------------------------------------------
│ │ │ │ -
95
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
97public:
│ │ │ │ -
98 typedef bool Instantiatable;
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
100 BufferDescriptor const &dstDesc,
│ │ │ │ -
101 BufferDescriptor const &duDesc,
│ │ │ │ -
102 BufferDescriptor const &dvDesc,
│ │ │ │ -
103 void * deviceContext = NULL) {
│ │ │ │ -
104 return Create(srcDesc, dstDesc, duDesc, dvDesc,
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
108 deviceContext);
│ │ │ │ -
109 }
│ │ │ │ -
│ │ │ │ -
110
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
112 BufferDescriptor const &dstDesc,
│ │ │ │ -
113 BufferDescriptor const &duDesc,
│ │ │ │ -
114 BufferDescriptor const &dvDesc,
│ │ │ │ -
115 BufferDescriptor const &duuDesc,
│ │ │ │ -
116 BufferDescriptor const &duvDesc,
│ │ │ │ -
117 BufferDescriptor const &dvvDesc,
│ │ │ │ -
118 void * deviceContext = NULL) {
│ │ │ │ -
119 (void)deviceContext; // not used
│ │ │ │ -
120 GLComputeEvaluator *instance = new GLComputeEvaluator();
│ │ │ │ -
121 if (instance->Compile(srcDesc, dstDesc, duDesc, dvDesc,
│ │ │ │ -
122 duuDesc, duvDesc, dvvDesc))
│ │ │ │ -
123 return instance;
│ │ │ │ -
124 delete instance;
│ │ │ │ -
125 return NULL;
│ │ │ │ -
126 }
│ │ │ │ -
│ │ │ │ -
127
│ │ │ │ - │ │ │ │ -
130
│ │ │ │ - │ │ │ │ -
133
│ │ │ │ -
139
│ │ │ │ -
167 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ -
│ │ │ │ -
168 static bool EvalStencils(
│ │ │ │ -
169 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
170 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
171 STENCIL_TABLE const *stencilTable,
│ │ │ │ -
172 GLComputeEvaluator const *instance,
│ │ │ │ -
173 void * deviceContext = NULL) {
│ │ │ │ -
174
│ │ │ │ -
175 if (instance) {
│ │ │ │ -
176 return instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │ -
177 dstBuffer, dstDesc,
│ │ │ │ -
178 stencilTable);
│ │ │ │ -
179 } else {
│ │ │ │ -
180 // Create an instance on demand (slow)
│ │ │ │ -
181 (void)deviceContext; // unused
│ │ │ │ -
182 instance = Create(srcDesc, dstDesc,
│ │ │ │ - │ │ │ │ - │ │ │ │ -
185 if (instance) {
│ │ │ │ -
186 bool r = instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │ -
187 dstBuffer, dstDesc,
│ │ │ │ -
188 stencilTable);
│ │ │ │ -
189 delete instance;
│ │ │ │ -
190 return r;
│ │ │ │ -
191 }
│ │ │ │ -
192 return false;
│ │ │ │ -
193 }
│ │ │ │ -
194 }
│ │ │ │ -
│ │ │ │ -
195
│ │ │ │ -
235 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ -
│ │ │ │ -
236 static bool EvalStencils(
│ │ │ │ -
237 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
238 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
239 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
240 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
241 STENCIL_TABLE const *stencilTable,
│ │ │ │ -
242 GLComputeEvaluator const *instance,
│ │ │ │ -
243 void * deviceContext = NULL) {
│ │ │ │ -
244
│ │ │ │ -
245 if (instance) {
│ │ │ │ -
246 return instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │ -
247 dstBuffer, dstDesc,
│ │ │ │ -
248 duBuffer, duDesc,
│ │ │ │ -
249 dvBuffer, dvDesc,
│ │ │ │ -
250 stencilTable);
│ │ │ │ -
251 } else {
│ │ │ │ -
252 // Create an instance on demand (slow)
│ │ │ │ -
253 (void)deviceContext; // unused
│ │ │ │ -
254 instance = Create(srcDesc, dstDesc, duDesc, dvDesc);
│ │ │ │ -
255 if (instance) {
│ │ │ │ -
256 bool r = instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │ -
257 dstBuffer, dstDesc,
│ │ │ │ -
258 duBuffer, duDesc,
│ │ │ │ -
259 dvBuffer, dvDesc,
│ │ │ │ -
260 stencilTable);
│ │ │ │ -
261 delete instance;
│ │ │ │ -
262 return r;
│ │ │ │ -
263 }
│ │ │ │ -
264 return false;
│ │ │ │ -
265 }
│ │ │ │ -
266 }
│ │ │ │ -
│ │ │ │ -
267
│ │ │ │ -
325 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ -
│ │ │ │ -
326 static bool EvalStencils(
│ │ │ │ -
327 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
328 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
329 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
330 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
331 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ -
332 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ -
333 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ -
334 STENCIL_TABLE const *stencilTable,
│ │ │ │ -
335 GLComputeEvaluator const *instance,
│ │ │ │ -
336 void * deviceContext = NULL) {
│ │ │ │ -
337
│ │ │ │ -
338 if (instance) {
│ │ │ │ -
339 return instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │ -
340 dstBuffer, dstDesc,
│ │ │ │ -
341 duBuffer, duDesc,
│ │ │ │ -
342 dvBuffer, dvDesc,
│ │ │ │ -
343 duuBuffer, duuDesc,
│ │ │ │ -
344 duvBuffer, duvDesc,
│ │ │ │ -
345 dvvBuffer, dvvDesc,
│ │ │ │ -
346 stencilTable);
│ │ │ │ -
347 } else {
│ │ │ │ -
348 // Create an instance on demand (slow)
│ │ │ │ -
349 (void)deviceContext; // unused
│ │ │ │ -
350 instance = Create(srcDesc, dstDesc, duDesc, dvDesc,
│ │ │ │ -
351 duuDesc, duvDesc, dvvDesc);
│ │ │ │ -
352 if (instance) {
│ │ │ │ -
353 bool r = instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │ -
354 dstBuffer, dstDesc,
│ │ │ │ -
355 duBuffer, duDesc,
│ │ │ │ -
356 dvBuffer, dvDesc,
│ │ │ │ -
357 duuBuffer, duuDesc,
│ │ │ │ -
358 duvBuffer, duvDesc,
│ │ │ │ -
359 dvvBuffer, dvvDesc,
│ │ │ │ -
360 stencilTable);
│ │ │ │ -
361 delete instance;
│ │ │ │ -
362 return r;
│ │ │ │ -
363 }
│ │ │ │ -
364 return false;
│ │ │ │ -
365 }
│ │ │ │ -
366 }
│ │ │ │ -
│ │ │ │ -
367
│ │ │ │ -
385 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
387 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
388 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
389 STENCIL_TABLE const *stencilTable) const {
│ │ │ │ -
390 return EvalStencils(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ -
391 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ -
392 0, BufferDescriptor(),
│ │ │ │ -
393 0, BufferDescriptor(),
│ │ │ │ -
394 stencilTable->GetSizesBuffer(),
│ │ │ │ -
395 stencilTable->GetOffsetsBuffer(),
│ │ │ │ -
396 stencilTable->GetIndicesBuffer(),
│ │ │ │ -
397 stencilTable->GetWeightsBuffer(),
│ │ │ │ -
398 0,
│ │ │ │ -
399 0,
│ │ │ │ -
400 /* start = */ 0,
│ │ │ │ -
401 /* end = */ stencilTable->GetNumStencils());
│ │ │ │ -
402 }
│ │ │ │ -
│ │ │ │ -
403
│ │ │ │ -
433 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
435 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
436 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
437 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
438 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
439 STENCIL_TABLE const *stencilTable) const {
│ │ │ │ -
440 return EvalStencils(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ -
441 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ -
442 duBuffer->BindVBO(), duDesc,
│ │ │ │ -
443 dvBuffer->BindVBO(), dvDesc,
│ │ │ │ -
444 stencilTable->GetSizesBuffer(),
│ │ │ │ -
445 stencilTable->GetOffsetsBuffer(),
│ │ │ │ -
446 stencilTable->GetIndicesBuffer(),
│ │ │ │ -
447 stencilTable->GetWeightsBuffer(),
│ │ │ │ -
448 stencilTable->GetDuWeightsBuffer(),
│ │ │ │ -
449 stencilTable->GetDvWeightsBuffer(),
│ │ │ │ -
450 /* start = */ 0,
│ │ │ │ -
451 /* end = */ stencilTable->GetNumStencils());
│ │ │ │ -
452 }
│ │ │ │ -
│ │ │ │ -
453
│ │ │ │ -
501 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
503 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
504 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
505 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
506 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
507 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ -
508 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ -
509 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ -
510 STENCIL_TABLE const *stencilTable) const {
│ │ │ │ -
511 return EvalStencils(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ -
512 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ -
513 duBuffer->BindVBO(), duDesc,
│ │ │ │ -
514 dvBuffer->BindVBO(), dvDesc,
│ │ │ │ -
515 duuBuffer->BindVBO(), duuDesc,
│ │ │ │ -
516 duvBuffer->BindVBO(), duvDesc,
│ │ │ │ -
517 dvvBuffer->BindVBO(), dvvDesc,
│ │ │ │ -
518 stencilTable->GetSizesBuffer(),
│ │ │ │ -
519 stencilTable->GetOffsetsBuffer(),
│ │ │ │ -
520 stencilTable->GetIndicesBuffer(),
│ │ │ │ -
521 stencilTable->GetWeightsBuffer(),
│ │ │ │ -
522 stencilTable->GetDuWeightsBuffer(),
│ │ │ │ -
523 stencilTable->GetDvWeightsBuffer(),
│ │ │ │ -
524 stencilTable->GetDuuWeightsBuffer(),
│ │ │ │ -
525 stencilTable->GetDuvWeightsBuffer(),
│ │ │ │ -
526 stencilTable->GetDvvWeightsBuffer(),
│ │ │ │ -
527 /* start = */ 0,
│ │ │ │ -
528 /* end = */ stencilTable->GetNumStencils());
│ │ │ │ -
529 }
│ │ │ │ -
│ │ │ │ -
530
│ │ │ │ -
566 bool EvalStencils(GLuint srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
567 GLuint dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
568 GLuint duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
569 GLuint dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
570 GLuint sizesBuffer,
│ │ │ │ -
571 GLuint offsetsBuffer,
│ │ │ │ -
572 GLuint indicesBuffer,
│ │ │ │ -
573 GLuint weightsBuffer,
│ │ │ │ -
574 GLuint duWeightsBuffer,
│ │ │ │ -
575 GLuint dvWeightsBuffer,
│ │ │ │ -
576 int start,
│ │ │ │ -
577 int end) const;
│ │ │ │ -
578
│ │ │ │ -
632 bool EvalStencils(GLuint srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
633 GLuint dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
634 GLuint duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
635 GLuint dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
636 GLuint duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ -
637 GLuint duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ -
638 GLuint dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ -
639 GLuint sizesBuffer,
│ │ │ │ -
640 GLuint offsetsBuffer,
│ │ │ │ -
641 GLuint indicesBuffer,
│ │ │ │ -
642 GLuint weightsBuffer,
│ │ │ │ -
643 GLuint duWeightsBuffer,
│ │ │ │ -
644 GLuint dvWeightsBuffer,
│ │ │ │ -
645 GLuint duuWeightsBuffer,
│ │ │ │ -
646 GLuint duvWeightsBuffer,
│ │ │ │ -
647 GLuint dvvWeightsBuffer,
│ │ │ │ -
648 int start,
│ │ │ │ -
649 int end) const;
│ │ │ │ -
650
│ │ │ │ -
656
│ │ │ │ -
689 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
690 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ -
691 static bool EvalPatches(
│ │ │ │ -
692 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
693 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
694 int numPatchCoords,
│ │ │ │ -
695 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
696 PATCH_TABLE *patchTable,
│ │ │ │ -
697 GLComputeEvaluator const *instance,
│ │ │ │ -
698 void * deviceContext = NULL) {
│ │ │ │ -
699
│ │ │ │ -
700 if (instance) {
│ │ │ │ -
701 return instance->EvalPatches(srcBuffer, srcDesc,
│ │ │ │ -
702 dstBuffer, dstDesc,
│ │ │ │ -
703 numPatchCoords, patchCoords,
│ │ │ │ -
704 patchTable);
│ │ │ │ -
705 } else {
│ │ │ │ -
706 // Create an instance on demand (slow)
│ │ │ │ -
707 (void)deviceContext; // unused
│ │ │ │ -
708 instance = Create(srcDesc, dstDesc,
│ │ │ │ - │ │ │ │ - │ │ │ │ -
711 if (instance) {
│ │ │ │ -
712 bool r = instance->EvalPatches(srcBuffer, srcDesc,
│ │ │ │ -
713 dstBuffer, dstDesc,
│ │ │ │ -
714 numPatchCoords, patchCoords,
│ │ │ │ -
715 patchTable);
│ │ │ │ -
716 delete instance;
│ │ │ │ -
717 return r;
│ │ │ │ -
718 }
│ │ │ │ -
719 return false;
│ │ │ │ -
720 }
│ │ │ │ -
721 }
│ │ │ │ -
│ │ │ │ -
722
│ │ │ │ -
767 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
768 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ -
769 static bool EvalPatches(
│ │ │ │ -
770 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
771 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
772 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
773 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
774 int numPatchCoords,
│ │ │ │ -
775 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
776 PATCH_TABLE *patchTable,
│ │ │ │ -
777 GLComputeEvaluator const *instance,
│ │ │ │ -
778 void * deviceContext = NULL) {
│ │ │ │ -
779
│ │ │ │ -
780 if (instance) {
│ │ │ │ -
781 return instance->EvalPatches(srcBuffer, srcDesc,
│ │ │ │ -
782 dstBuffer, dstDesc,
│ │ │ │ -
783 duBuffer, duDesc,
│ │ │ │ -
784 dvBuffer, dvDesc,
│ │ │ │ -
785 numPatchCoords, patchCoords,
│ │ │ │ -
786 patchTable);
│ │ │ │ -
787 } else {
│ │ │ │ -
788 // Create an instance on demand (slow)
│ │ │ │ -
789 (void)deviceContext; // unused
│ │ │ │ -
790 instance = Create(srcDesc, dstDesc,
│ │ │ │ -
791 duDesc, dvDesc);
│ │ │ │ -
792 if (instance) {
│ │ │ │ -
793 bool r = instance->EvalPatches(srcBuffer, srcDesc,
│ │ │ │ -
794 dstBuffer, dstDesc,
│ │ │ │ -
795 duBuffer, duDesc,
│ │ │ │ -
796 dvBuffer, dvDesc,
│ │ │ │ -
797 numPatchCoords, patchCoords,
│ │ │ │ -
798 patchTable);
│ │ │ │ -
799 delete instance;
│ │ │ │ -
800 return r;
│ │ │ │ -
801 }
│ │ │ │ -
802 return false;
│ │ │ │ -
803 }
│ │ │ │ -
804 }
│ │ │ │ -
│ │ │ │ -
805
│ │ │ │ -
868 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
869 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ -
870 static bool EvalPatches(
│ │ │ │ -
871 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
872 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
873 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
874 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
875 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ -
876 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ -
877 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ -
878 int numPatchCoords,
│ │ │ │ -
879 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
880 PATCH_TABLE *patchTable,
│ │ │ │ -
881 GLComputeEvaluator const *instance,
│ │ │ │ -
882 void * deviceContext = NULL) {
│ │ │ │ -
883
│ │ │ │ -
884 if (instance) {
│ │ │ │ -
885 return instance->EvalPatches(srcBuffer, srcDesc,
│ │ │ │ -
886 dstBuffer, dstDesc,
│ │ │ │ -
887 duBuffer, duDesc,
│ │ │ │ -
888 dvBuffer, dvDesc,
│ │ │ │ -
889 duuBuffer, duuDesc,
│ │ │ │ -
890 duvBuffer, duvDesc,
│ │ │ │ -
891 dvvBuffer, dvvDesc,
│ │ │ │ -
892 numPatchCoords, patchCoords,
│ │ │ │ -
893 patchTable);
│ │ │ │ -
894 } else {
│ │ │ │ -
895 // Create an instance on demand (slow)
│ │ │ │ -
896 (void)deviceContext; // unused
│ │ │ │ -
897 instance = Create(srcDesc, dstDesc,
│ │ │ │ -
898 duDesc, dvDesc,
│ │ │ │ -
899 duuDesc, duvDesc, dvvDesc);
│ │ │ │ -
900 if (instance) {
│ │ │ │ -
901 bool r = instance->EvalPatches(srcBuffer, srcDesc,
│ │ │ │ -
902 dstBuffer, dstDesc,
│ │ │ │ -
903 duBuffer, duDesc,
│ │ │ │ -
904 dvBuffer, dvDesc,
│ │ │ │ -
905 duuBuffer, duuDesc,
│ │ │ │ -
906 duvBuffer, duvDesc,
│ │ │ │ -
907 dvvBuffer, dvvDesc,
│ │ │ │ -
908 numPatchCoords, patchCoords,
│ │ │ │ -
909 patchTable);
│ │ │ │ -
910 delete instance;
│ │ │ │ -
911 return r;
│ │ │ │ -
912 }
│ │ │ │ -
913 return false;
│ │ │ │ -
914 }
│ │ │ │ -
915 }
│ │ │ │ -
│ │ │ │ -
916
│ │ │ │ -
941 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
942 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
944 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
945 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
946 int numPatchCoords,
│ │ │ │ -
947 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
948 PATCH_TABLE *patchTable) const {
│ │ │ │ -
949
│ │ │ │ -
950 return EvalPatches(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ -
951 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ -
952 0, BufferDescriptor(),
│ │ │ │ -
953 0, BufferDescriptor(),
│ │ │ │ -
954 numPatchCoords,
│ │ │ │ -
955 patchCoords->BindVBO(),
│ │ │ │ -
956 patchTable->GetPatchArrays(),
│ │ │ │ -
957 patchTable->GetPatchIndexBuffer(),
│ │ │ │ -
958 patchTable->GetPatchParamBuffer());
│ │ │ │ -
959 }
│ │ │ │ -
│ │ │ │ -
960
│ │ │ │ -
995 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
996 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
998 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
999 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1000 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
1001 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
1002 int numPatchCoords,
│ │ │ │ -
1003 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1004 PATCH_TABLE *patchTable) const {
│ │ │ │ -
1005
│ │ │ │ -
1006 return EvalPatches(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ -
1007 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ -
1008 duBuffer->BindVBO(), duDesc,
│ │ │ │ -
1009 dvBuffer->BindVBO(), dvDesc,
│ │ │ │ -
1010 numPatchCoords,
│ │ │ │ -
1011 patchCoords->BindVBO(),
│ │ │ │ -
1012 patchTable->GetPatchArrays(),
│ │ │ │ -
1013 patchTable->GetPatchIndexBuffer(),
│ │ │ │ -
1014 patchTable->GetPatchParamBuffer());
│ │ │ │ -
1015 }
│ │ │ │ -
│ │ │ │ -
1016
│ │ │ │ -
1069 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1070 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1072 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1073 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1074 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
1075 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
1076 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ -
1077 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ -
1078 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ -
1079 int numPatchCoords,
│ │ │ │ -
1080 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1081 PATCH_TABLE *patchTable) const {
│ │ │ │ -
1082
│ │ │ │ -
1083 return EvalPatches(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ -
1084 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ -
1085 duBuffer->BindVBO(), duDesc,
│ │ │ │ -
1086 dvBuffer->BindVBO(), dvDesc,
│ │ │ │ -
1087 duuBuffer->BindVBO(), duuDesc,
│ │ │ │ -
1088 duvBuffer->BindVBO(), duvDesc,
│ │ │ │ -
1089 dvvBuffer->BindVBO(), dvvDesc,
│ │ │ │ -
1090 numPatchCoords,
│ │ │ │ -
1091 patchCoords->BindVBO(),
│ │ │ │ -
1092 patchTable->GetPatchArrays(),
│ │ │ │ -
1093 patchTable->GetPatchIndexBuffer(),
│ │ │ │ -
1094 patchTable->GetPatchParamBuffer());
│ │ │ │ -
1095 }
│ │ │ │ -
│ │ │ │ -
1096
│ │ │ │ -
1097 bool EvalPatches(GLuint srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1098 GLuint dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1099 GLuint duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
1100 GLuint dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
1101 int numPatchCoords,
│ │ │ │ -
1102 GLuint patchCoordsBuffer,
│ │ │ │ -
1103 const PatchArrayVector &patchArrays,
│ │ │ │ -
1104 GLuint patchIndexBuffer,
│ │ │ │ -
1105 GLuint patchParamsBuffer) const;
│ │ │ │ -
1106
│ │ │ │ -
1107 bool EvalPatches(GLuint srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1108 GLuint dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1109 GLuint duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
1110 GLuint dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
1111 GLuint duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ -
1112 GLuint duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ -
1113 GLuint dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ -
1114 int numPatchCoords,
│ │ │ │ -
1115 GLuint patchCoordsBuffer,
│ │ │ │ -
1116 const PatchArrayVector &patchArrays,
│ │ │ │ -
1117 GLuint patchIndexBuffer,
│ │ │ │ -
1118 GLuint patchParamsBuffer) const;
│ │ │ │ -
1119
│ │ │ │ -
1152 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1153 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1155 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1156 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1157 int numPatchCoords,
│ │ │ │ -
1158 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1159 PATCH_TABLE *patchTable,
│ │ │ │ -
1160 GLComputeEvaluator const *instance,
│ │ │ │ -
1161 void * deviceContext = NULL) {
│ │ │ │ -
1162
│ │ │ │ -
1163 if (instance) {
│ │ │ │ -
1164 return instance->EvalPatchesVarying(
│ │ │ │ -
1165 srcBuffer, srcDesc,
│ │ │ │ -
1166 dstBuffer, dstDesc,
│ │ │ │ -
1167 numPatchCoords, patchCoords,
│ │ │ │ -
1168 patchTable);
│ │ │ │ -
1169 } else {
│ │ │ │ -
1170 // Create an instance on demand (slow)
│ │ │ │ -
1171 (void)deviceContext; // unused
│ │ │ │ -
1172 instance = Create(srcDesc, dstDesc,
│ │ │ │ - │ │ │ │ - │ │ │ │ -
1175 if (instance) {
│ │ │ │ -
1176 bool r = instance->EvalPatchesVarying(
│ │ │ │ -
1177 srcBuffer, srcDesc,
│ │ │ │ -
1178 dstBuffer, dstDesc,
│ │ │ │ -
1179 numPatchCoords, patchCoords,
│ │ │ │ -
1180 patchTable);
│ │ │ │ -
1181 delete instance;
│ │ │ │ -
1182 return r;
│ │ │ │ -
1183 }
│ │ │ │ -
1184 return false;
│ │ │ │ -
1185 }
│ │ │ │ -
1186 }
│ │ │ │ -
│ │ │ │ -
1187
│ │ │ │ -
1212 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1213 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1215 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1216 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1217 int numPatchCoords,
│ │ │ │ -
1218 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1219 PATCH_TABLE *patchTable) const {
│ │ │ │ -
1220
│ │ │ │ -
1221 return EvalPatches(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ -
1222 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ -
1223 0, BufferDescriptor(),
│ │ │ │ -
1224 0, BufferDescriptor(),
│ │ │ │ -
1225 numPatchCoords,
│ │ │ │ -
1226 patchCoords->BindVBO(),
│ │ │ │ -
1227 patchTable->GetVaryingPatchArrays(),
│ │ │ │ -
1228 patchTable->GetVaryingPatchIndexBuffer(),
│ │ │ │ -
1229 patchTable->GetPatchParamBuffer());
│ │ │ │ -
1230 }
│ │ │ │ -
│ │ │ │ -
1231
│ │ │ │ -
1276 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1277 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1279 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1280 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1281 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
1282 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
1283 int numPatchCoords,
│ │ │ │ -
1284 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1285 PATCH_TABLE *patchTable,
│ │ │ │ -
1286 GLComputeEvaluator const *instance,
│ │ │ │ -
1287 void * deviceContext = NULL) {
│ │ │ │ -
1288
│ │ │ │ -
1289 if (instance) {
│ │ │ │ -
1290 return instance->EvalPatchesVarying(
│ │ │ │ -
1291 srcBuffer, srcDesc,
│ │ │ │ -
1292 dstBuffer, dstDesc,
│ │ │ │ -
1293 duBuffer, duDesc,
│ │ │ │ -
1294 dvBuffer, dvDesc,
│ │ │ │ -
1295 numPatchCoords, patchCoords,
│ │ │ │ -
1296 patchTable);
│ │ │ │ -
1297 } else {
│ │ │ │ -
1298 // Create an instance on demand (slow)
│ │ │ │ -
1299 (void)deviceContext; // unused
│ │ │ │ -
1300 instance = Create(srcDesc, dstDesc,
│ │ │ │ -
1301 duDesc, dvDesc);
│ │ │ │ -
1302 if (instance) {
│ │ │ │ -
1303 bool r = instance->EvalPatchesVarying(
│ │ │ │ -
1304 srcBuffer, srcDesc,
│ │ │ │ -
1305 dstBuffer, dstDesc,
│ │ │ │ -
1306 duBuffer, duDesc,
│ │ │ │ -
1307 dvBuffer, dvDesc,
│ │ │ │ -
1308 numPatchCoords, patchCoords,
│ │ │ │ -
1309 patchTable);
│ │ │ │ -
1310 delete instance;
│ │ │ │ -
1311 return r;
│ │ │ │ -
1312 }
│ │ │ │ -
1313 return false;
│ │ │ │ -
1314 }
│ │ │ │ -
1315 }
│ │ │ │ -
│ │ │ │ -
1316
│ │ │ │ -
1353 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1354 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1356 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1357 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1358 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
1359 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
1360 int numPatchCoords,
│ │ │ │ -
1361 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1362 PATCH_TABLE *patchTable) const {
│ │ │ │ -
1363
│ │ │ │ -
1364 return EvalPatches(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ -
1365 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ -
1366 duBuffer->BindVBO(), duDesc,
│ │ │ │ -
1367 dvBuffer->BindVBO(), dvDesc,
│ │ │ │ -
1368 numPatchCoords,
│ │ │ │ -
1369 patchCoords->BindVBO(),
│ │ │ │ -
1370 patchTable->GetVaryingPatchArrays(),
│ │ │ │ -
1371 patchTable->GetVaryingPatchIndexBuffer(),
│ │ │ │ -
1372 patchTable->GetPatchParamBuffer());
│ │ │ │ -
1373 }
│ │ │ │ -
│ │ │ │ -
1374
│ │ │ │ -
1437 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1438 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1440 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1441 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1442 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
1443 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
1444 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ -
1445 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ -
1446 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ -
1447 int numPatchCoords,
│ │ │ │ -
1448 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1449 PATCH_TABLE *patchTable,
│ │ │ │ -
1450 GLComputeEvaluator const *instance,
│ │ │ │ -
1451 void * deviceContext = NULL) {
│ │ │ │ -
1452
│ │ │ │ -
1453 if (instance) {
│ │ │ │ -
1454 return instance->EvalPatchesVarying(
│ │ │ │ -
1455 srcBuffer, srcDesc,
│ │ │ │ -
1456 dstBuffer, dstDesc,
│ │ │ │ -
1457 duBuffer, duDesc,
│ │ │ │ -
1458 dvBuffer, dvDesc,
│ │ │ │ -
1459 duuBuffer, duuDesc,
│ │ │ │ -
1460 duvBuffer, duvDesc,
│ │ │ │ -
1461 dvvBuffer, dvvDesc,
│ │ │ │ -
1462 numPatchCoords, patchCoords,
│ │ │ │ -
1463 patchTable);
│ │ │ │ -
1464 } else {
│ │ │ │ -
1465 // Create an instance on demand (slow)
│ │ │ │ -
1466 (void)deviceContext; // unused
│ │ │ │ -
1467 instance = Create(srcDesc, dstDesc,
│ │ │ │ -
1468 duDesc, dvDesc,
│ │ │ │ -
1469 duuDesc, duvDesc, dvvDesc);
│ │ │ │ -
1470 if (instance) {
│ │ │ │ -
1471 bool r = instance->EvalPatchesVarying(
│ │ │ │ -
1472 srcBuffer, srcDesc,
│ │ │ │ -
1473 dstBuffer, dstDesc,
│ │ │ │ -
1474 duBuffer, duDesc,
│ │ │ │ -
1475 dvBuffer, dvDesc,
│ │ │ │ -
1476 duuBuffer, duuDesc,
│ │ │ │ -
1477 duvBuffer, duvDesc,
│ │ │ │ -
1478 dvvBuffer, dvvDesc,
│ │ │ │ -
1479 numPatchCoords, patchCoords,
│ │ │ │ -
1480 patchTable);
│ │ │ │ -
1481 delete instance;
│ │ │ │ -
1482 return r;
│ │ │ │ -
1483 }
│ │ │ │ -
1484 return false;
│ │ │ │ -
1485 }
│ │ │ │ -
1486 }
│ │ │ │ -
│ │ │ │ -
1487
│ │ │ │ -
1542 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1543 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1545 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1546 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1547 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
1548 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
1549 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ -
1550 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ -
1551 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ -
1552 int numPatchCoords,
│ │ │ │ -
1553 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1554 PATCH_TABLE *patchTable) const {
│ │ │ │ -
1555
│ │ │ │ -
1556 return EvalPatches(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ -
1557 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ -
1558 duBuffer->BindVBO(), duDesc,
│ │ │ │ -
1559 dvBuffer->BindVBO(), dvDesc,
│ │ │ │ -
1560 duuBuffer->BindVBO(), duuDesc,
│ │ │ │ -
1561 duvBuffer->BindVBO(), duvDesc,
│ │ │ │ -
1562 dvvBuffer->BindVBO(), dvvDesc,
│ │ │ │ -
1563 numPatchCoords,
│ │ │ │ -
1564 patchCoords->BindVBO(),
│ │ │ │ -
1565 patchTable->GetVaryingPatchArrays(),
│ │ │ │ -
1566 patchTable->GetVaryingPatchIndexBuffer(),
│ │ │ │ -
1567 patchTable->GetPatchParamBuffer());
│ │ │ │ -
1568 }
│ │ │ │ -
│ │ │ │ -
1569
│ │ │ │ -
1604 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1605 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1607 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1608 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1609 int numPatchCoords,
│ │ │ │ -
1610 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1611 PATCH_TABLE *patchTable,
│ │ │ │ -
1612 int fvarChannel,
│ │ │ │ -
1613 GLComputeEvaluator const *instance,
│ │ │ │ -
1614 void * deviceContext = NULL) {
│ │ │ │ -
1615
│ │ │ │ -
1616 if (instance) {
│ │ │ │ -
1617 return instance->EvalPatchesFaceVarying(
│ │ │ │ -
1618 srcBuffer, srcDesc,
│ │ │ │ -
1619 dstBuffer, dstDesc,
│ │ │ │ -
1620 numPatchCoords, patchCoords,
│ │ │ │ -
1621 patchTable, fvarChannel);
│ │ │ │ -
1622 } else {
│ │ │ │ -
1623 // Create an instance on demand (slow)
│ │ │ │ -
1624 (void)deviceContext; // unused
│ │ │ │ -
1625 instance = Create(srcDesc, dstDesc,
│ │ │ │ - │ │ │ │ - │ │ │ │ -
1628 if (instance) {
│ │ │ │ -
1629 bool r = instance->EvalPatchesFaceVarying(
│ │ │ │ -
1630 srcBuffer, srcDesc,
│ │ │ │ -
1631 dstBuffer, dstDesc,
│ │ │ │ -
1632 numPatchCoords, patchCoords,
│ │ │ │ -
1633 patchTable, fvarChannel);
│ │ │ │ -
1634 delete instance;
│ │ │ │ -
1635 return r;
│ │ │ │ -
1636 }
│ │ │ │ -
1637 return false;
│ │ │ │ -
1638 }
│ │ │ │ -
1639 }
│ │ │ │ -
│ │ │ │ -
1640
│ │ │ │ -
1667 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1668 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1670 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1671 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1672 int numPatchCoords,
│ │ │ │ -
1673 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1674 PATCH_TABLE *patchTable,
│ │ │ │ -
1675 int fvarChannel = 0) const {
│ │ │ │ -
1676
│ │ │ │ -
1677 return EvalPatches(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ -
1678 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ -
1679 0, BufferDescriptor(),
│ │ │ │ -
1680 0, BufferDescriptor(),
│ │ │ │ -
1681 numPatchCoords,
│ │ │ │ -
1682 patchCoords->BindVBO(),
│ │ │ │ -
1683 patchTable->GetFVarPatchArrays(fvarChannel),
│ │ │ │ -
1684 patchTable->GetFVarPatchIndexBuffer(fvarChannel),
│ │ │ │ -
1685 patchTable->GetFVarPatchParamBuffer(fvarChannel));
│ │ │ │ -
1686 }
│ │ │ │ -
│ │ │ │ -
1687
│ │ │ │ -
1734 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1735 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1737 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1738 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1739 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
1740 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
1741 int numPatchCoords,
│ │ │ │ -
1742 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1743 PATCH_TABLE *patchTable,
│ │ │ │ -
1744 int fvarChannel,
│ │ │ │ -
1745 GLComputeEvaluator const *instance,
│ │ │ │ -
1746 void * deviceContext = NULL) {
│ │ │ │ -
1747
│ │ │ │ -
1748 if (instance) {
│ │ │ │ -
1749 return instance->EvalPatchesFaceVarying(
│ │ │ │ -
1750 srcBuffer, srcDesc,
│ │ │ │ -
1751 dstBuffer, dstDesc,
│ │ │ │ -
1752 duBuffer, duDesc,
│ │ │ │ -
1753 dvBuffer, dvDesc,
│ │ │ │ -
1754 numPatchCoords, patchCoords,
│ │ │ │ -
1755 patchTable, fvarChannel);
│ │ │ │ -
1756 } else {
│ │ │ │ -
1757 // Create an instance on demand (slow)
│ │ │ │ -
1758 (void)deviceContext; // unused
│ │ │ │ -
1759 instance = Create(srcDesc, dstDesc,
│ │ │ │ -
1760 duDesc, dvDesc);
│ │ │ │ -
1761 if (instance) {
│ │ │ │ -
1762 bool r = instance->EvalPatchesFaceVarying(
│ │ │ │ -
1763 srcBuffer, srcDesc,
│ │ │ │ -
1764 dstBuffer, dstDesc,
│ │ │ │ -
1765 duBuffer, duDesc,
│ │ │ │ -
1766 dvBuffer, dvDesc,
│ │ │ │ -
1767 numPatchCoords, patchCoords,
│ │ │ │ -
1768 patchTable, fvarChannel);
│ │ │ │ -
1769 delete instance;
│ │ │ │ -
1770 return r;
│ │ │ │ -
1771 }
│ │ │ │ -
1772 return false;
│ │ │ │ -
1773 }
│ │ │ │ -
1774 }
│ │ │ │ -
│ │ │ │ -
1775
│ │ │ │ -
1814 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1815 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1817 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1818 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1819 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
1820 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
1821 int numPatchCoords,
│ │ │ │ -
1822 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1823 PATCH_TABLE *patchTable,
│ │ │ │ -
1824 int fvarChannel = 0) const {
│ │ │ │ -
1825
│ │ │ │ -
1826 return EvalPatches(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ -
1827 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ -
1828 duBuffer->BindVBO(), duDesc,
│ │ │ │ -
1829 dvBuffer->BindVBO(), dvDesc,
│ │ │ │ -
1830 numPatchCoords,
│ │ │ │ -
1831 patchCoords->BindVBO(),
│ │ │ │ -
1832 patchTable->GetFVarPatchArrays(fvarChannel),
│ │ │ │ -
1833 patchTable->GetFVarPatchIndexBuffer(fvarChannel),
│ │ │ │ -
1834 patchTable->GetFVarPatchParamBuffer(fvarChannel));
│ │ │ │ -
1835 }
│ │ │ │ -
│ │ │ │ -
1836
│ │ │ │ -
1901 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1902 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1904 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1905 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1906 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
1907 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
1908 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ -
1909 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ -
1910 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ -
1911 int numPatchCoords,
│ │ │ │ -
1912 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1913 PATCH_TABLE *patchTable,
│ │ │ │ -
1914 int fvarChannel,
│ │ │ │ -
1915 GLComputeEvaluator const *instance,
│ │ │ │ -
1916 void * deviceContext = NULL) {
│ │ │ │ -
1917
│ │ │ │ -
1918 if (instance) {
│ │ │ │ -
1919 return instance->EvalPatchesFaceVarying(
│ │ │ │ -
1920 srcBuffer, srcDesc,
│ │ │ │ -
1921 dstBuffer, dstDesc,
│ │ │ │ -
1922 duBuffer, duDesc,
│ │ │ │ -
1923 dvBuffer, dvDesc,
│ │ │ │ -
1924 duuBuffer, duuDesc,
│ │ │ │ -
1925 duvBuffer, duvDesc,
│ │ │ │ -
1926 dvvBuffer, dvvDesc,
│ │ │ │ -
1927 numPatchCoords, patchCoords,
│ │ │ │ -
1928 patchTable, fvarChannel);
│ │ │ │ -
1929 } else {
│ │ │ │ -
1930 // Create an instance on demand (slow)
│ │ │ │ -
1931 (void)deviceContext; // unused
│ │ │ │ -
1932 instance = Create(srcDesc, dstDesc,
│ │ │ │ -
1933 duDesc, dvDesc,
│ │ │ │ -
1934 duuDesc, duvDesc, dvvDesc);
│ │ │ │ -
1935 if (instance) {
│ │ │ │ -
1936 bool r = instance->EvalPatchesFaceVarying(
│ │ │ │ -
1937 srcBuffer, srcDesc,
│ │ │ │ -
1938 dstBuffer, dstDesc,
│ │ │ │ -
1939 duBuffer, duDesc,
│ │ │ │ -
1940 dvBuffer, dvDesc,
│ │ │ │ -
1941 duuBuffer, duuDesc,
│ │ │ │ -
1942 duvBuffer, duvDesc,
│ │ │ │ -
1943 dvvBuffer, dvvDesc,
│ │ │ │ -
1944 numPatchCoords, patchCoords,
│ │ │ │ -
1945 patchTable, fvarChannel);
│ │ │ │ -
1946 delete instance;
│ │ │ │ -
1947 return r;
│ │ │ │ -
1948 }
│ │ │ │ -
1949 return false;
│ │ │ │ -
1950 }
│ │ │ │ -
1951 }
│ │ │ │ -
│ │ │ │ -
1952
│ │ │ │ -
2009 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
2010 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
2012 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
2013 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
2014 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
2015 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
2016 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ -
2017 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ -
2018 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ -
2019 int numPatchCoords,
│ │ │ │ -
2020 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
2021 PATCH_TABLE *patchTable,
│ │ │ │ -
2022 int fvarChannel = 0) const {
│ │ │ │ -
2023
│ │ │ │ -
2024 return EvalPatches(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ -
2025 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ -
2026 duBuffer->BindVBO(), duDesc,
│ │ │ │ -
2027 dvBuffer->BindVBO(), dvDesc,
│ │ │ │ -
2028 duuBuffer->BindVBO(), duuDesc,
│ │ │ │ -
2029 duvBuffer->BindVBO(), duvDesc,
│ │ │ │ -
2030 dvvBuffer->BindVBO(), dvvDesc,
│ │ │ │ -
2031 numPatchCoords,
│ │ │ │ -
2032 patchCoords->BindVBO(),
│ │ │ │ -
2033 patchTable->GetFVarPatchArrays(fvarChannel),
│ │ │ │ -
2034 patchTable->GetFVarPatchIndexBuffer(fvarChannel),
│ │ │ │ -
2035 patchTable->GetFVarPatchParamBuffer(fvarChannel));
│ │ │ │ -
2036 }
│ │ │ │ -
│ │ │ │ -
2037
│ │ │ │ -
2043
│ │ │ │ -
2046 bool Compile(BufferDescriptor const &srcDesc,
│ │ │ │ -
2047 BufferDescriptor const &dstDesc,
│ │ │ │ -
2048 BufferDescriptor const &duDesc = BufferDescriptor(),
│ │ │ │ -
2049 BufferDescriptor const &dvDesc = BufferDescriptor(),
│ │ │ │ -
2050 BufferDescriptor const &duuDesc = BufferDescriptor(),
│ │ │ │ -
2051 BufferDescriptor const &duvDesc = BufferDescriptor(),
│ │ │ │ -
2052 BufferDescriptor const &dvvDesc = BufferDescriptor());
│ │ │ │ -
2053
│ │ │ │ -
2055 static void Synchronize(void *deviceContext);
│ │ │ │ -
2056
│ │ │ │ -
2057private:
│ │ │ │ -
2058 struct _StencilKernel {
│ │ │ │ -
2059 _StencilKernel();
│ │ │ │ -
2060 ~_StencilKernel();
│ │ │ │ -
2061 bool Compile(BufferDescriptor const &srcDesc,
│ │ │ │ -
2062 BufferDescriptor const &dstDesc,
│ │ │ │ -
2063 BufferDescriptor const &duDesc,
│ │ │ │ -
2064 BufferDescriptor const &dvDesc,
│ │ │ │ -
2065 BufferDescriptor const &duuDesc,
│ │ │ │ -
2066 BufferDescriptor const &duvDesc,
│ │ │ │ -
2067 BufferDescriptor const &dvvDesc,
│ │ │ │ -
2068 int workGroupSize);
│ │ │ │ -
2069 GLuint program;
│ │ │ │ -
2070 GLuint uniformStart;
│ │ │ │ -
2071 GLuint uniformEnd;
│ │ │ │ -
2072 GLuint uniformSrcOffset;
│ │ │ │ -
2073 GLuint uniformDstOffset;
│ │ │ │ -
2074 GLuint uniformDuDesc;
│ │ │ │ -
2075 GLuint uniformDvDesc;
│ │ │ │ -
2076 GLuint uniformDuuDesc;
│ │ │ │ -
2077 GLuint uniformDuvDesc;
│ │ │ │ -
2078 GLuint uniformDvvDesc;
│ │ │ │ -
2079 } _stencilKernel;
│ │ │ │ -
2080
│ │ │ │ -
2081 struct _PatchKernel {
│ │ │ │ -
2082 _PatchKernel();
│ │ │ │ -
2083 ~_PatchKernel();
│ │ │ │ -
2084 bool Compile(BufferDescriptor const &srcDesc,
│ │ │ │ -
2085 BufferDescriptor const &dstDesc,
│ │ │ │ -
2086 BufferDescriptor const &duDesc,
│ │ │ │ -
2087 BufferDescriptor const &dvDesc,
│ │ │ │ -
2088 BufferDescriptor const &duuDesc,
│ │ │ │ -
2089 BufferDescriptor const &duvDesc,
│ │ │ │ -
2090 BufferDescriptor const &dvvDesc,
│ │ │ │ -
2091 int workGroupSize);
│ │ │ │ -
2092 GLuint program;
│ │ │ │ -
2093 GLuint uniformSrcOffset;
│ │ │ │ -
2094 GLuint uniformDstOffset;
│ │ │ │ -
2095 GLuint uniformPatchArray;
│ │ │ │ -
2096 GLuint uniformDuDesc;
│ │ │ │ -
2097 GLuint uniformDvDesc;
│ │ │ │ -
2098 GLuint uniformDuuDesc;
│ │ │ │ -
2099 GLuint uniformDuvDesc;
│ │ │ │ -
2100 GLuint uniformDvvDesc;
│ │ │ │ -
2101 } _patchKernel;
│ │ │ │ -
2102
│ │ │ │ -
2103 int _workGroupSize;
│ │ │ │ -
2104 GLuint _patchArraysSSBO;
│ │ │ │ -
2105};
│ │ │ │ -
│ │ │ │ -
2106
│ │ │ │ -
2107} // end namespace Osd
│ │ │ │ -
2108
│ │ │ │ -
2109} // end namespace OPENSUBDIV_VERSION
│ │ │ │ -
2110using namespace OPENSUBDIV_VERSION;
│ │ │ │ -
2111
│ │ │ │ -
2112} // end namespace OpenSubdiv
│ │ │ │ -
2113
│ │ │ │ -
2114
│ │ │ │ -
2115#endif // OPENSUBDIV3_OSD_GL_COMPUTE_EVALUATOR_H
│ │ │ │ +
94} // end namespace OPENSUBDIV_VERSION
│ │ │ │ +
95using namespace OPENSUBDIV_VERSION;
│ │ │ │ +
96
│ │ │ │ +
97} // end namespace OpenSubdiv
│ │ │ │ +
98
│ │ │ │ +
99#endif // OPENSUBDIV3_OSD_CPU_D3D11_VERTEX_BUFFER_H
│ │ │ │ │ │ │ │ -
std::vector< PatchArray > PatchArrayVector
Definition types.h:132
│ │ │ │ -
Stencil table class wrapping the template for compatibility.
│ │ │ │ -
Limit stencil table class wrapping the template for compatibility.
│ │ │ │ -
BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
GLStencilTableSSBO(Far::LimitStencilTable const *limitStencilTable)
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
GLStencilTableSSBO(Far::StencilTable const *stencilTable)
│ │ │ │ - │ │ │ │ - │ │ │ │ -
static GLStencilTableSSBO * Create(Far::LimitStencilTable const *limitStencilTable, void *deviceContext=NULL)
│ │ │ │ - │ │ │ │ - │ │ │ │ -
static GLStencilTableSSBO * Create(Far::StencilTable const *stencilTable, void *deviceContext=NULL)
│ │ │ │ - │ │ │ │ -
bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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
Generic stencil function.
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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
Generic stencil function.
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ - │ │ │ │ -
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
│ │ │ │ -
~GLComputeEvaluator()
Destructor. note that the GL context must be made current.
│ │ │ │ -
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
Generic limit eval function with derivatives. This function has a same signature as other device kern...
│ │ │ │ -
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)
Generic static stencil function. This function has a same signature as other device kernels have so t...
│ │ │ │ -
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
Dispatch the GLSL compute kernel on GPU asynchronously returns false if the kernel hasn't been compil...
│ │ │ │ -
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)
Generic static stencil function. This function has a same signature as other device kernels have so t...
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ - │ │ │ │ -
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
Generic limit eval function with derivatives. This function has a same signature as other device kern...
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE const *stencilTable) const
Generic stencil function.
│ │ │ │ -
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
│ │ │ │ -
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
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
static GLComputeEvaluator * Create(BufferDescriptor const &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, void *deviceContext=NULL)
│ │ │ │ -
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
Dispatch the GLSL compute kernel on GPU asynchronously returns false if the kernel hasn't been compil...
│ │ │ │ -
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)
Generic static stencil function. This function has a same signature as other device kernels have so t...
│ │ │ │ -
static void Synchronize(void *deviceContext)
Wait the dispatched kernel finishes.
│ │ │ │ -
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())
│ │ │ │ -
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
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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)
│ │ │ │ -
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
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
Concrete vertex buffer class for Cpu subdivision and DirectX drawing.
│ │ │ │ +
static CpuD3D11VertexBuffer * Create(int numElements, int numVertices, ID3D11DeviceContext *deviceContext)
Creator. Returns NULL if error.
│ │ │ │ +
CpuD3D11VertexBuffer(int numElements, int numVertices)
Constructor.
│ │ │ │ +
int GetNumElements() const
Returns how many elements defined in this vertex buffer.
│ │ │ │ +
void UpdateData(const float *src, int startVertex, int numVertices, void *deviceContext=NULL)
│ │ │ │ +
int GetNumVertices() const
Returns how many vertices allocated in this vertex buffer.
│ │ │ │ +
ID3D11Buffer * BindD3D11Buffer(ID3D11DeviceContext *deviceContext)
Returns the D3D11 buffer object.
│ │ │ │ +
float * BindCpuBuffer()
Returns the address of CPU buffer.
│ │ │ │ + │ │ │ │ + │ │ │ │ +
ID3D11Buffer * BindVBO(ID3D11DeviceContext *deviceContext)
Returns the D3D11 buffer object (for Osd::Mesh interface)
│ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ -glComputeEvaluator.h │ │ │ │ │ +cpuD3D11VertexBuffer.h │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// │ │ │ │ │ -2// Copyright 2015 Pixar │ │ │ │ │ +2// Copyright 2013 Pixar │ │ │ │ │ 3// │ │ │ │ │ 4// Licensed under the Apache License, Version 2.0 (the "Apache License") │ │ │ │ │ 5// with the following modification; you may not use this file except in │ │ │ │ │ 6// compliance with the Apache License and the following modification to it: │ │ │ │ │ 7// Section 6. Trademarks. is deleted and replaced with: │ │ │ │ │ 8// │ │ │ │ │ 9// 6. Trademarks. This License does not grant permission to use the trade │ │ │ │ │ @@ -24,1359 +24,105 @@ │ │ │ │ │ 18// Unless required by applicable law or agreed to in writing, software │ │ │ │ │ 19// distributed under the Apache License with the above modification is │ │ │ │ │ 20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY │ │ │ │ │ 21// KIND, either express or implied. See the Apache License for the specific │ │ │ │ │ 22// language governing permissions and limitations under the Apache License. │ │ │ │ │ 23// │ │ │ │ │ 24 │ │ │ │ │ -25#ifndef OPENSUBDIV3_OSD_GL_COMPUTE_EVALUATOR_H │ │ │ │ │ -26#define OPENSUBDIV3_OSD_GL_COMPUTE_EVALUATOR_H │ │ │ │ │ +25#ifndef OPENSUBDIV3_OSD_CPU_D3D11_VERTEX_BUFFER_H │ │ │ │ │ +26#define OPENSUBDIV3_OSD_CPU_D3D11_VERTEX_BUFFER_H │ │ │ │ │ 27 │ │ │ │ │ 28#include "../version.h" │ │ │ │ │ -29 │ │ │ │ │ -30#include "../osd/opengl.h" │ │ │ │ │ -31#include "../osd/types.h" │ │ │ │ │ -32#include "../osd/bufferDescriptor.h" │ │ │ │ │ -33 │ │ │ │ │ -34namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ -35namespace OPENSUBDIV_VERSION { │ │ │ │ │ -36 │ │ │ │ │ -37namespace Far { │ │ │ │ │ -38 class PatchTable; │ │ │ │ │ -39 class StencilTable; │ │ │ │ │ -40 class LimitStencilTable; │ │ │ │ │ -41} │ │ │ │ │ -42 │ │ │ │ │ -43namespace Osd { │ │ │ │ │ -44 │ │ │ │ │ -_5_1class _G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O { │ │ │ │ │ -52public: │ │ │ │ │ -_5_3 static _G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O *_C_r_e_a_t_e(_F_a_r_:_:_S_t_e_n_c_i_l_T_a_b_l_e const *stencilTable, │ │ │ │ │ -54 void *deviceContext = NULL) { │ │ │ │ │ -55 (void)deviceContext; // unused │ │ │ │ │ -56 return new _G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O(stencilTable); │ │ │ │ │ -57 } │ │ │ │ │ -_5_8 static _G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O *_C_r_e_a_t_e( │ │ │ │ │ -59 _F_a_r_:_:_L_i_m_i_t_S_t_e_n_c_i_l_T_a_b_l_e const *limitStencilTable, │ │ │ │ │ -60 void *deviceContext = NULL) { │ │ │ │ │ -61 (void)deviceContext; // unused │ │ │ │ │ -62 return new _G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O(limitStencilTable); │ │ │ │ │ -63 } │ │ │ │ │ +29#include │ │ │ │ │ +30 │ │ │ │ │ +31struct ID3D11Buffer; │ │ │ │ │ +32struct ID3D11Device; │ │ │ │ │ +33struct ID3D11DeviceContext; │ │ │ │ │ +34 │ │ │ │ │ +35namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ +36namespace OPENSUBDIV_VERSION { │ │ │ │ │ +37 │ │ │ │ │ +38namespace Osd { │ │ │ │ │ +39 │ │ │ │ │ +_4_8class _C_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r { │ │ │ │ │ +49public: │ │ │ │ │ +_5_1 static _C_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r * _C_r_e_a_t_e(int numElements, int numVertices, │ │ │ │ │ +52 ID3D11DeviceContext *deviceContext); │ │ │ │ │ +53 │ │ │ │ │ +_5_5 virtual _~_C_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r(); │ │ │ │ │ +56 │ │ │ │ │ +_5_9 void _U_p_d_a_t_e_D_a_t_a(const float *src, int startVertex, int numVertices, │ │ │ │ │ +60 void *deviceContext = NULL); │ │ │ │ │ +61 │ │ │ │ │ +_6_3 int _G_e_t_N_u_m_E_l_e_m_e_n_t_s() const; │ │ │ │ │ 64 │ │ │ │ │ -_6_5 explicit _G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O(_F_a_r_:_:_S_t_e_n_c_i_l_T_a_b_l_e const *stencilTable); │ │ │ │ │ -_6_6 explicit _G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O(_F_a_r_:_:_L_i_m_i_t_S_t_e_n_c_i_l_T_a_b_l_e const │ │ │ │ │ -*limitStencilTable); │ │ │ │ │ -_6_7 _~_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O(); │ │ │ │ │ -68 │ │ │ │ │ -69 // interfaces needed for GLSLComputeKernel │ │ │ │ │ -_7_0 GLuint _G_e_t_S_i_z_e_s_B_u_f_f_e_r() const { return _sizes; } │ │ │ │ │ -_7_1 GLuint _G_e_t_O_f_f_s_e_t_s_B_u_f_f_e_r() const { return _offsets; } │ │ │ │ │ -_7_2 GLuint _G_e_t_I_n_d_i_c_e_s_B_u_f_f_e_r() const { return _indices; } │ │ │ │ │ -_7_3 GLuint _G_e_t_W_e_i_g_h_t_s_B_u_f_f_e_r() const { return _weights; } │ │ │ │ │ -_7_4 GLuint _G_e_t_D_u_W_e_i_g_h_t_s_B_u_f_f_e_r() const { return _duWeights; } │ │ │ │ │ -_7_5 GLuint _G_e_t_D_v_W_e_i_g_h_t_s_B_u_f_f_e_r() const { return _dvWeights; } │ │ │ │ │ -_7_6 GLuint _G_e_t_D_u_u_W_e_i_g_h_t_s_B_u_f_f_e_r() const { return _duuWeights; } │ │ │ │ │ -_7_7 GLuint _G_e_t_D_u_v_W_e_i_g_h_t_s_B_u_f_f_e_r() const { return _duvWeights; } │ │ │ │ │ -_7_8 GLuint _G_e_t_D_v_v_W_e_i_g_h_t_s_B_u_f_f_e_r() const { return _dvvWeights; } │ │ │ │ │ -_7_9 int _G_e_t_N_u_m_S_t_e_n_c_i_l_s() const { return _numStencils; } │ │ │ │ │ -80 │ │ │ │ │ -81private: │ │ │ │ │ -82 GLuint _sizes; │ │ │ │ │ -83 GLuint _offsets; │ │ │ │ │ -84 GLuint _indices; │ │ │ │ │ -85 GLuint _weights; │ │ │ │ │ -86 GLuint _duWeights; │ │ │ │ │ -87 GLuint _dvWeights; │ │ │ │ │ -88 GLuint _duuWeights; │ │ │ │ │ -89 GLuint _duvWeights; │ │ │ │ │ -90 GLuint _dvvWeights; │ │ │ │ │ -91 int _numStencils; │ │ │ │ │ -92}; │ │ │ │ │ +_6_6 int _G_e_t_N_u_m_V_e_r_t_i_c_e_s() const; │ │ │ │ │ +67 │ │ │ │ │ +_6_9 float * _B_i_n_d_C_p_u_B_u_f_f_e_r(); │ │ │ │ │ +70 │ │ │ │ │ +_7_2 ID3D11Buffer *_B_i_n_d_D_3_D_1_1_B_u_f_f_e_r(ID3D11DeviceContext *deviceContext); │ │ │ │ │ +73 │ │ │ │ │ +_7_5 ID3D11Buffer *_B_i_n_d_V_B_O(ID3D11DeviceContext *deviceContext) { │ │ │ │ │ +76 return _B_i_n_d_D_3_D_1_1_B_u_f_f_e_r(deviceContext); │ │ │ │ │ +77 } │ │ │ │ │ +78 │ │ │ │ │ +79protected: │ │ │ │ │ +_8_1 _C_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r(int numElements, int numVertices); │ │ │ │ │ +82 │ │ │ │ │ +_8_3 bool _a_l_l_o_c_a_t_e(ID3D11Device *device); │ │ │ │ │ +84 │ │ │ │ │ +85private: │ │ │ │ │ +86 int _numElements; │ │ │ │ │ +87 int _numVertices; │ │ │ │ │ +88 ID3D11Buffer *_d3d11Buffer; │ │ │ │ │ +89 float *_cpuBuffer; │ │ │ │ │ +90}; │ │ │ │ │ +91 │ │ │ │ │ +92} // end namespace Osd │ │ │ │ │ 93 │ │ │ │ │ -94// -------------------------------------------------------------------------- │ │ │ │ │ -- │ │ │ │ │ -95 │ │ │ │ │ -_9_6class _G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r { │ │ │ │ │ -97public: │ │ │ │ │ -_9_8 typedef bool _I_n_s_t_a_n_t_i_a_t_a_b_l_e; │ │ │ │ │ -_9_9 static _G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r * _C_r_e_a_t_e(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -100 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -101 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -102 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -103 void * deviceContext = NULL) { │ │ │ │ │ -104 return _C_r_e_a_t_e(srcDesc, dstDesc, duDesc, dvDesc, │ │ │ │ │ -105 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -106 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -107 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -108 deviceContext); │ │ │ │ │ -109 } │ │ │ │ │ -110 │ │ │ │ │ -_1_1_1 static _G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r * _C_r_e_a_t_e(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -112 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -113 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -114 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -115 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -116 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -117 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -118 void * deviceContext = NULL) { │ │ │ │ │ -119 (void)deviceContext; // not used │ │ │ │ │ -120 _G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r *instance = new _G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r(); │ │ │ │ │ -121 if (instance->_C_o_m_p_i_l_e(srcDesc, dstDesc, duDesc, dvDesc, │ │ │ │ │ -122 duuDesc, duvDesc, dvvDesc)) │ │ │ │ │ -123 return instance; │ │ │ │ │ -124 delete instance; │ │ │ │ │ -125 return NULL; │ │ │ │ │ -126 } │ │ │ │ │ -127 │ │ │ │ │ -_1_2_9 _G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r(); │ │ │ │ │ -130 │ │ │ │ │ -_1_3_2 _~_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r(); │ │ │ │ │ -133 │ │ │ │ │ -139 │ │ │ │ │ -167 template │ │ │ │ │ -_1_6_8 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ -169 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -170 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -171 STENCIL_TABLE const *stencilTable, │ │ │ │ │ -172 _G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ -173 void * deviceContext = NULL) { │ │ │ │ │ -174 │ │ │ │ │ -175 if (instance) { │ │ │ │ │ -176 return instance->_E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer, srcDesc, │ │ │ │ │ -177 dstBuffer, dstDesc, │ │ │ │ │ -178 stencilTable); │ │ │ │ │ -179 } else { │ │ │ │ │ -180 // Create an instance on demand (slow) │ │ │ │ │ -181 (void)deviceContext; // unused │ │ │ │ │ -182 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ -183 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -184 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r()); │ │ │ │ │ -185 if (instance) { │ │ │ │ │ -186 bool r = instance->_E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer, srcDesc, │ │ │ │ │ -187 dstBuffer, dstDesc, │ │ │ │ │ -188 stencilTable); │ │ │ │ │ -189 delete instance; │ │ │ │ │ -190 return r; │ │ │ │ │ -191 } │ │ │ │ │ -192 return false; │ │ │ │ │ -193 } │ │ │ │ │ -194 } │ │ │ │ │ -195 │ │ │ │ │ -235 template │ │ │ │ │ -_2_3_6 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ -237 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -238 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -239 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -240 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -241 STENCIL_TABLE const *stencilTable, │ │ │ │ │ -242 _G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ -243 void * deviceContext = NULL) { │ │ │ │ │ -244 │ │ │ │ │ -245 if (instance) { │ │ │ │ │ -246 return instance->_E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer, srcDesc, │ │ │ │ │ -247 dstBuffer, dstDesc, │ │ │ │ │ -248 duBuffer, duDesc, │ │ │ │ │ -249 dvBuffer, dvDesc, │ │ │ │ │ -250 stencilTable); │ │ │ │ │ -251 } else { │ │ │ │ │ -252 // Create an instance on demand (slow) │ │ │ │ │ -253 (void)deviceContext; // unused │ │ │ │ │ -254 instance = _C_r_e_a_t_e(srcDesc, dstDesc, duDesc, dvDesc); │ │ │ │ │ -255 if (instance) { │ │ │ │ │ -256 bool r = instance->_E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer, srcDesc, │ │ │ │ │ -257 dstBuffer, dstDesc, │ │ │ │ │ -258 duBuffer, duDesc, │ │ │ │ │ -259 dvBuffer, dvDesc, │ │ │ │ │ -260 stencilTable); │ │ │ │ │ -261 delete instance; │ │ │ │ │ -262 return r; │ │ │ │ │ -263 } │ │ │ │ │ -264 return false; │ │ │ │ │ -265 } │ │ │ │ │ -266 } │ │ │ │ │ -267 │ │ │ │ │ -325 template │ │ │ │ │ -_3_2_6 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ -327 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -328 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -329 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -330 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -331 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -332 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -333 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -334 STENCIL_TABLE const *stencilTable, │ │ │ │ │ -335 _G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ -336 void * deviceContext = NULL) { │ │ │ │ │ -337 │ │ │ │ │ -338 if (instance) { │ │ │ │ │ -339 return instance->_E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer, srcDesc, │ │ │ │ │ -340 dstBuffer, dstDesc, │ │ │ │ │ -341 duBuffer, duDesc, │ │ │ │ │ -342 dvBuffer, dvDesc, │ │ │ │ │ -343 duuBuffer, duuDesc, │ │ │ │ │ -344 duvBuffer, duvDesc, │ │ │ │ │ -345 dvvBuffer, dvvDesc, │ │ │ │ │ -346 stencilTable); │ │ │ │ │ -347 } else { │ │ │ │ │ -348 // Create an instance on demand (slow) │ │ │ │ │ -349 (void)deviceContext; // unused │ │ │ │ │ -350 instance = _C_r_e_a_t_e(srcDesc, dstDesc, duDesc, dvDesc, │ │ │ │ │ -351 duuDesc, duvDesc, dvvDesc); │ │ │ │ │ -352 if (instance) { │ │ │ │ │ -353 bool r = instance->_E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer, srcDesc, │ │ │ │ │ -354 dstBuffer, dstDesc, │ │ │ │ │ -355 duBuffer, duDesc, │ │ │ │ │ -356 dvBuffer, dvDesc, │ │ │ │ │ -357 duuBuffer, duuDesc, │ │ │ │ │ -358 duvBuffer, duvDesc, │ │ │ │ │ -359 dvvBuffer, dvvDesc, │ │ │ │ │ -360 stencilTable); │ │ │ │ │ -361 delete instance; │ │ │ │ │ -362 return r; │ │ │ │ │ -363 } │ │ │ │ │ -364 return false; │ │ │ │ │ -365 } │ │ │ │ │ -366 } │ │ │ │ │ -367 │ │ │ │ │ -385 template │ │ │ │ │ -_3_8_6 bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ -387 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -388 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -389 STENCIL_TABLE const *stencilTable) const { │ │ │ │ │ -390 return _E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ -391 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ -392 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -393 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -394 stencilTable->GetSizesBuffer(), │ │ │ │ │ -395 stencilTable->GetOffsetsBuffer(), │ │ │ │ │ -396 stencilTable->GetIndicesBuffer(), │ │ │ │ │ -397 stencilTable->GetWeightsBuffer(), │ │ │ │ │ -398 0, │ │ │ │ │ -399 0, │ │ │ │ │ -400 /* start = */ 0, │ │ │ │ │ -401 /* end = */ stencilTable->GetNumStencils()); │ │ │ │ │ -402 } │ │ │ │ │ -403 │ │ │ │ │ -433 template │ │ │ │ │ -_4_3_4 bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ -435 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -436 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -437 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -438 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -439 STENCIL_TABLE const *stencilTable) const { │ │ │ │ │ -440 return _E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ -441 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ -442 duBuffer->BindVBO(), duDesc, │ │ │ │ │ -443 dvBuffer->BindVBO(), dvDesc, │ │ │ │ │ -444 stencilTable->GetSizesBuffer(), │ │ │ │ │ -445 stencilTable->GetOffsetsBuffer(), │ │ │ │ │ -446 stencilTable->GetIndicesBuffer(), │ │ │ │ │ -447 stencilTable->GetWeightsBuffer(), │ │ │ │ │ -448 stencilTable->GetDuWeightsBuffer(), │ │ │ │ │ -449 stencilTable->GetDvWeightsBuffer(), │ │ │ │ │ -450 /* start = */ 0, │ │ │ │ │ -451 /* end = */ stencilTable->GetNumStencils()); │ │ │ │ │ -452 } │ │ │ │ │ -453 │ │ │ │ │ -501 template │ │ │ │ │ -_5_0_2 bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ -503 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -504 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -505 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -506 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -507 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -508 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -509 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -510 STENCIL_TABLE const *stencilTable) const { │ │ │ │ │ -511 return _E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ -512 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ -513 duBuffer->BindVBO(), duDesc, │ │ │ │ │ -514 dvBuffer->BindVBO(), dvDesc, │ │ │ │ │ -515 duuBuffer->BindVBO(), duuDesc, │ │ │ │ │ -516 duvBuffer->BindVBO(), duvDesc, │ │ │ │ │ -517 dvvBuffer->BindVBO(), dvvDesc, │ │ │ │ │ -518 stencilTable->GetSizesBuffer(), │ │ │ │ │ -519 stencilTable->GetOffsetsBuffer(), │ │ │ │ │ -520 stencilTable->GetIndicesBuffer(), │ │ │ │ │ -521 stencilTable->GetWeightsBuffer(), │ │ │ │ │ -522 stencilTable->GetDuWeightsBuffer(), │ │ │ │ │ -523 stencilTable->GetDvWeightsBuffer(), │ │ │ │ │ -524 stencilTable->GetDuuWeightsBuffer(), │ │ │ │ │ -525 stencilTable->GetDuvWeightsBuffer(), │ │ │ │ │ -526 stencilTable->GetDvvWeightsBuffer(), │ │ │ │ │ -527 /* start = */ 0, │ │ │ │ │ -528 /* end = */ stencilTable->GetNumStencils()); │ │ │ │ │ -529 } │ │ │ │ │ -530 │ │ │ │ │ -_5_6_6 bool _E_v_a_l_S_t_e_n_c_i_l_s(GLuint srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -567 GLuint dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -568 GLuint duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -569 GLuint dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -570 GLuint sizesBuffer, │ │ │ │ │ -571 GLuint offsetsBuffer, │ │ │ │ │ -572 GLuint indicesBuffer, │ │ │ │ │ -573 GLuint weightsBuffer, │ │ │ │ │ -574 GLuint duWeightsBuffer, │ │ │ │ │ -575 GLuint dvWeightsBuffer, │ │ │ │ │ -576 int start, │ │ │ │ │ -577 int end) const; │ │ │ │ │ -578 │ │ │ │ │ -_6_3_2 bool _E_v_a_l_S_t_e_n_c_i_l_s(GLuint srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -633 GLuint dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -634 GLuint duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -635 GLuint dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -636 GLuint duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -637 GLuint duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -638 GLuint dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -639 GLuint sizesBuffer, │ │ │ │ │ -640 GLuint offsetsBuffer, │ │ │ │ │ -641 GLuint indicesBuffer, │ │ │ │ │ -642 GLuint weightsBuffer, │ │ │ │ │ -643 GLuint duWeightsBuffer, │ │ │ │ │ -644 GLuint dvWeightsBuffer, │ │ │ │ │ -645 GLuint duuWeightsBuffer, │ │ │ │ │ -646 GLuint duvWeightsBuffer, │ │ │ │ │ -647 GLuint dvvWeightsBuffer, │ │ │ │ │ -648 int start, │ │ │ │ │ -649 int end) const; │ │ │ │ │ -650 │ │ │ │ │ -656 │ │ │ │ │ -689 template │ │ │ │ │ -_6_9_1 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ -692 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -693 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -694 int numPatchCoords, │ │ │ │ │ -695 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -696 PATCH_TABLE *patchTable, │ │ │ │ │ -697 _G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ -698 void * deviceContext = NULL) { │ │ │ │ │ -699 │ │ │ │ │ -700 if (instance) { │ │ │ │ │ -701 return instance->_E_v_a_l_P_a_t_c_h_e_s(srcBuffer, srcDesc, │ │ │ │ │ -702 dstBuffer, dstDesc, │ │ │ │ │ -703 numPatchCoords, patchCoords, │ │ │ │ │ -704 patchTable); │ │ │ │ │ -705 } else { │ │ │ │ │ -706 // Create an instance on demand (slow) │ │ │ │ │ -707 (void)deviceContext; // unused │ │ │ │ │ -708 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ -709 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -710 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r()); │ │ │ │ │ -711 if (instance) { │ │ │ │ │ -712 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s(srcBuffer, srcDesc, │ │ │ │ │ -713 dstBuffer, dstDesc, │ │ │ │ │ -714 numPatchCoords, patchCoords, │ │ │ │ │ -715 patchTable); │ │ │ │ │ -716 delete instance; │ │ │ │ │ -717 return r; │ │ │ │ │ -718 } │ │ │ │ │ -719 return false; │ │ │ │ │ -720 } │ │ │ │ │ -721 } │ │ │ │ │ -722 │ │ │ │ │ -767 template │ │ │ │ │ -_7_6_9 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ -770 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -771 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -772 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -773 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -774 int numPatchCoords, │ │ │ │ │ -775 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -776 PATCH_TABLE *patchTable, │ │ │ │ │ -777 _G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ -778 void * deviceContext = NULL) { │ │ │ │ │ -779 │ │ │ │ │ -780 if (instance) { │ │ │ │ │ -781 return instance->_E_v_a_l_P_a_t_c_h_e_s(srcBuffer, srcDesc, │ │ │ │ │ -782 dstBuffer, dstDesc, │ │ │ │ │ -783 duBuffer, duDesc, │ │ │ │ │ -784 dvBuffer, dvDesc, │ │ │ │ │ -785 numPatchCoords, patchCoords, │ │ │ │ │ -786 patchTable); │ │ │ │ │ -787 } else { │ │ │ │ │ -788 // Create an instance on demand (slow) │ │ │ │ │ -789 (void)deviceContext; // unused │ │ │ │ │ -790 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ -791 duDesc, dvDesc); │ │ │ │ │ -792 if (instance) { │ │ │ │ │ -793 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s(srcBuffer, srcDesc, │ │ │ │ │ -794 dstBuffer, dstDesc, │ │ │ │ │ -795 duBuffer, duDesc, │ │ │ │ │ -796 dvBuffer, dvDesc, │ │ │ │ │ -797 numPatchCoords, patchCoords, │ │ │ │ │ -798 patchTable); │ │ │ │ │ -799 delete instance; │ │ │ │ │ -800 return r; │ │ │ │ │ -801 } │ │ │ │ │ -802 return false; │ │ │ │ │ -803 } │ │ │ │ │ -804 } │ │ │ │ │ -805 │ │ │ │ │ -868 template │ │ │ │ │ -_8_7_0 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ -871 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -872 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -873 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -874 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -875 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -876 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -877 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -878 int numPatchCoords, │ │ │ │ │ -879 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -880 PATCH_TABLE *patchTable, │ │ │ │ │ -881 _G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ -882 void * deviceContext = NULL) { │ │ │ │ │ -883 │ │ │ │ │ -884 if (instance) { │ │ │ │ │ -885 return instance->_E_v_a_l_P_a_t_c_h_e_s(srcBuffer, srcDesc, │ │ │ │ │ -886 dstBuffer, dstDesc, │ │ │ │ │ -887 duBuffer, duDesc, │ │ │ │ │ -888 dvBuffer, dvDesc, │ │ │ │ │ -889 duuBuffer, duuDesc, │ │ │ │ │ -890 duvBuffer, duvDesc, │ │ │ │ │ -891 dvvBuffer, dvvDesc, │ │ │ │ │ -892 numPatchCoords, patchCoords, │ │ │ │ │ -893 patchTable); │ │ │ │ │ -894 } else { │ │ │ │ │ -895 // Create an instance on demand (slow) │ │ │ │ │ -896 (void)deviceContext; // unused │ │ │ │ │ -897 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ -898 duDesc, dvDesc, │ │ │ │ │ -899 duuDesc, duvDesc, dvvDesc); │ │ │ │ │ -900 if (instance) { │ │ │ │ │ -901 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s(srcBuffer, srcDesc, │ │ │ │ │ -902 dstBuffer, dstDesc, │ │ │ │ │ -903 duBuffer, duDesc, │ │ │ │ │ -904 dvBuffer, dvDesc, │ │ │ │ │ -905 duuBuffer, duuDesc, │ │ │ │ │ -906 duvBuffer, duvDesc, │ │ │ │ │ -907 dvvBuffer, dvvDesc, │ │ │ │ │ -908 numPatchCoords, patchCoords, │ │ │ │ │ -909 patchTable); │ │ │ │ │ -910 delete instance; │ │ │ │ │ -911 return r; │ │ │ │ │ -912 } │ │ │ │ │ -913 return false; │ │ │ │ │ -914 } │ │ │ │ │ -915 } │ │ │ │ │ -916 │ │ │ │ │ -941 template │ │ │ │ │ -_9_4_3 bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ -944 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -945 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -946 int numPatchCoords, │ │ │ │ │ -947 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -948 PATCH_TABLE *patchTable) const { │ │ │ │ │ -949 │ │ │ │ │ -950 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ -951 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ -952 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -953 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -954 numPatchCoords, │ │ │ │ │ -955 patchCoords->BindVBO(), │ │ │ │ │ -956 patchTable->GetPatchArrays(), │ │ │ │ │ -957 patchTable->GetPatchIndexBuffer(), │ │ │ │ │ -958 patchTable->GetPatchParamBuffer()); │ │ │ │ │ -959 } │ │ │ │ │ -960 │ │ │ │ │ -995 template │ │ │ │ │ -_9_9_7 bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ -998 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -999 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1000 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -1001 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -1002 int numPatchCoords, │ │ │ │ │ -1003 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1004 PATCH_TABLE *patchTable) const { │ │ │ │ │ -1005 │ │ │ │ │ -1006 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ -1007 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ -1008 duBuffer->BindVBO(), duDesc, │ │ │ │ │ -1009 dvBuffer->BindVBO(), dvDesc, │ │ │ │ │ -1010 numPatchCoords, │ │ │ │ │ -1011 patchCoords->BindVBO(), │ │ │ │ │ -1012 patchTable->GetPatchArrays(), │ │ │ │ │ -1013 patchTable->GetPatchIndexBuffer(), │ │ │ │ │ -1014 patchTable->GetPatchParamBuffer()); │ │ │ │ │ -1015 } │ │ │ │ │ -1016 │ │ │ │ │ -1069 template │ │ │ │ │ -_1_0_7_1 bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ -1072 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1073 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1074 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -1075 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -1076 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -1077 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -1078 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -1079 int numPatchCoords, │ │ │ │ │ -1080 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1081 PATCH_TABLE *patchTable) const { │ │ │ │ │ -1082 │ │ │ │ │ -1083 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ -1084 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ -1085 duBuffer->BindVBO(), duDesc, │ │ │ │ │ -1086 dvBuffer->BindVBO(), dvDesc, │ │ │ │ │ -1087 duuBuffer->BindVBO(), duuDesc, │ │ │ │ │ -1088 duvBuffer->BindVBO(), duvDesc, │ │ │ │ │ -1089 dvvBuffer->BindVBO(), dvvDesc, │ │ │ │ │ -1090 numPatchCoords, │ │ │ │ │ -1091 patchCoords->BindVBO(), │ │ │ │ │ -1092 patchTable->GetPatchArrays(), │ │ │ │ │ -1093 patchTable->GetPatchIndexBuffer(), │ │ │ │ │ -1094 patchTable->GetPatchParamBuffer()); │ │ │ │ │ -1095 } │ │ │ │ │ -1096 │ │ │ │ │ -_1_0_9_7 bool _E_v_a_l_P_a_t_c_h_e_s(GLuint srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1098 GLuint dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1099 GLuint duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -1100 GLuint dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -1101 int numPatchCoords, │ │ │ │ │ -1102 GLuint patchCoordsBuffer, │ │ │ │ │ -1103 const _P_a_t_c_h_A_r_r_a_y_V_e_c_t_o_r &patchArrays, │ │ │ │ │ -1104 GLuint patchIndexBuffer, │ │ │ │ │ -1105 GLuint patchParamsBuffer) const; │ │ │ │ │ -1106 │ │ │ │ │ -_1_1_0_7 bool _E_v_a_l_P_a_t_c_h_e_s(GLuint srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1108 GLuint dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1109 GLuint duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -1110 GLuint dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -1111 GLuint duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -1112 GLuint duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -1113 GLuint dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -1114 int numPatchCoords, │ │ │ │ │ -1115 GLuint patchCoordsBuffer, │ │ │ │ │ -1116 const _P_a_t_c_h_A_r_r_a_y_V_e_c_t_o_r &patchArrays, │ │ │ │ │ -1117 GLuint patchIndexBuffer, │ │ │ │ │ -1118 GLuint patchParamsBuffer) const; │ │ │ │ │ -1119 │ │ │ │ │ -1152 template │ │ │ │ │ -_1_1_5_4 static bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -1155 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1156 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1157 int numPatchCoords, │ │ │ │ │ -1158 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1159 PATCH_TABLE *patchTable, │ │ │ │ │ -1160 _G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ -1161 void * deviceContext = NULL) { │ │ │ │ │ -1162 │ │ │ │ │ -1163 if (instance) { │ │ │ │ │ -1164 return instance->_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -1165 srcBuffer, srcDesc, │ │ │ │ │ -1166 dstBuffer, dstDesc, │ │ │ │ │ -1167 numPatchCoords, patchCoords, │ │ │ │ │ -1168 patchTable); │ │ │ │ │ -1169 } else { │ │ │ │ │ -1170 // Create an instance on demand (slow) │ │ │ │ │ -1171 (void)deviceContext; // unused │ │ │ │ │ -1172 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ -1173 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -1174 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r()); │ │ │ │ │ -1175 if (instance) { │ │ │ │ │ -1176 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -1177 srcBuffer, srcDesc, │ │ │ │ │ -1178 dstBuffer, dstDesc, │ │ │ │ │ -1179 numPatchCoords, patchCoords, │ │ │ │ │ -1180 patchTable); │ │ │ │ │ -1181 delete instance; │ │ │ │ │ -1182 return r; │ │ │ │ │ -1183 } │ │ │ │ │ -1184 return false; │ │ │ │ │ -1185 } │ │ │ │ │ -1186 } │ │ │ │ │ -1187 │ │ │ │ │ -1212 template │ │ │ │ │ -_1_2_1_4 bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -1215 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1216 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1217 int numPatchCoords, │ │ │ │ │ -1218 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1219 PATCH_TABLE *patchTable) const { │ │ │ │ │ -1220 │ │ │ │ │ -1221 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ -1222 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ -1223 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -1224 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -1225 numPatchCoords, │ │ │ │ │ -1226 patchCoords->BindVBO(), │ │ │ │ │ -1227 patchTable->GetVaryingPatchArrays(), │ │ │ │ │ -1228 patchTable->GetVaryingPatchIndexBuffer(), │ │ │ │ │ -1229 patchTable->GetPatchParamBuffer()); │ │ │ │ │ -1230 } │ │ │ │ │ -1231 │ │ │ │ │ -1276 template │ │ │ │ │ -_1_2_7_8 static bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -1279 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1280 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1281 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -1282 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -1283 int numPatchCoords, │ │ │ │ │ -1284 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1285 PATCH_TABLE *patchTable, │ │ │ │ │ -1286 _G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ -1287 void * deviceContext = NULL) { │ │ │ │ │ -1288 │ │ │ │ │ -1289 if (instance) { │ │ │ │ │ -1290 return instance->_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -1291 srcBuffer, srcDesc, │ │ │ │ │ -1292 dstBuffer, dstDesc, │ │ │ │ │ -1293 duBuffer, duDesc, │ │ │ │ │ -1294 dvBuffer, dvDesc, │ │ │ │ │ -1295 numPatchCoords, patchCoords, │ │ │ │ │ -1296 patchTable); │ │ │ │ │ -1297 } else { │ │ │ │ │ -1298 // Create an instance on demand (slow) │ │ │ │ │ -1299 (void)deviceContext; // unused │ │ │ │ │ -1300 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ -1301 duDesc, dvDesc); │ │ │ │ │ -1302 if (instance) { │ │ │ │ │ -1303 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -1304 srcBuffer, srcDesc, │ │ │ │ │ -1305 dstBuffer, dstDesc, │ │ │ │ │ -1306 duBuffer, duDesc, │ │ │ │ │ -1307 dvBuffer, dvDesc, │ │ │ │ │ -1308 numPatchCoords, patchCoords, │ │ │ │ │ -1309 patchTable); │ │ │ │ │ -1310 delete instance; │ │ │ │ │ -1311 return r; │ │ │ │ │ -1312 } │ │ │ │ │ -1313 return false; │ │ │ │ │ -1314 } │ │ │ │ │ -1315 } │ │ │ │ │ -1316 │ │ │ │ │ -1353 template │ │ │ │ │ -_1_3_5_5 bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -1356 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1357 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1358 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -1359 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -1360 int numPatchCoords, │ │ │ │ │ -1361 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1362 PATCH_TABLE *patchTable) const { │ │ │ │ │ -1363 │ │ │ │ │ -1364 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ -1365 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ -1366 duBuffer->BindVBO(), duDesc, │ │ │ │ │ -1367 dvBuffer->BindVBO(), dvDesc, │ │ │ │ │ -1368 numPatchCoords, │ │ │ │ │ -1369 patchCoords->BindVBO(), │ │ │ │ │ -1370 patchTable->GetVaryingPatchArrays(), │ │ │ │ │ -1371 patchTable->GetVaryingPatchIndexBuffer(), │ │ │ │ │ -1372 patchTable->GetPatchParamBuffer()); │ │ │ │ │ -1373 } │ │ │ │ │ -1374 │ │ │ │ │ -1437 template │ │ │ │ │ -_1_4_3_9 static bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -1440 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1441 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1442 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -1443 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -1444 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -1445 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -1446 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -1447 int numPatchCoords, │ │ │ │ │ -1448 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1449 PATCH_TABLE *patchTable, │ │ │ │ │ -1450 _G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ -1451 void * deviceContext = NULL) { │ │ │ │ │ -1452 │ │ │ │ │ -1453 if (instance) { │ │ │ │ │ -1454 return instance->_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -1455 srcBuffer, srcDesc, │ │ │ │ │ -1456 dstBuffer, dstDesc, │ │ │ │ │ -1457 duBuffer, duDesc, │ │ │ │ │ -1458 dvBuffer, dvDesc, │ │ │ │ │ -1459 duuBuffer, duuDesc, │ │ │ │ │ -1460 duvBuffer, duvDesc, │ │ │ │ │ -1461 dvvBuffer, dvvDesc, │ │ │ │ │ -1462 numPatchCoords, patchCoords, │ │ │ │ │ -1463 patchTable); │ │ │ │ │ -1464 } else { │ │ │ │ │ -1465 // Create an instance on demand (slow) │ │ │ │ │ -1466 (void)deviceContext; // unused │ │ │ │ │ -1467 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ -1468 duDesc, dvDesc, │ │ │ │ │ -1469 duuDesc, duvDesc, dvvDesc); │ │ │ │ │ -1470 if (instance) { │ │ │ │ │ -1471 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -1472 srcBuffer, srcDesc, │ │ │ │ │ -1473 dstBuffer, dstDesc, │ │ │ │ │ -1474 duBuffer, duDesc, │ │ │ │ │ -1475 dvBuffer, dvDesc, │ │ │ │ │ -1476 duuBuffer, duuDesc, │ │ │ │ │ -1477 duvBuffer, duvDesc, │ │ │ │ │ -1478 dvvBuffer, dvvDesc, │ │ │ │ │ -1479 numPatchCoords, patchCoords, │ │ │ │ │ -1480 patchTable); │ │ │ │ │ -1481 delete instance; │ │ │ │ │ -1482 return r; │ │ │ │ │ -1483 } │ │ │ │ │ -1484 return false; │ │ │ │ │ -1485 } │ │ │ │ │ -1486 } │ │ │ │ │ -1487 │ │ │ │ │ -1542 template │ │ │ │ │ -_1_5_4_4 bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -1545 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1546 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1547 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -1548 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -1549 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -1550 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -1551 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -1552 int numPatchCoords, │ │ │ │ │ -1553 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1554 PATCH_TABLE *patchTable) const { │ │ │ │ │ -1555 │ │ │ │ │ -1556 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ -1557 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ -1558 duBuffer->BindVBO(), duDesc, │ │ │ │ │ -1559 dvBuffer->BindVBO(), dvDesc, │ │ │ │ │ -1560 duuBuffer->BindVBO(), duuDesc, │ │ │ │ │ -1561 duvBuffer->BindVBO(), duvDesc, │ │ │ │ │ -1562 dvvBuffer->BindVBO(), dvvDesc, │ │ │ │ │ -1563 numPatchCoords, │ │ │ │ │ -1564 patchCoords->BindVBO(), │ │ │ │ │ -1565 patchTable->GetVaryingPatchArrays(), │ │ │ │ │ -1566 patchTable->GetVaryingPatchIndexBuffer(), │ │ │ │ │ -1567 patchTable->GetPatchParamBuffer()); │ │ │ │ │ -1568 } │ │ │ │ │ -1569 │ │ │ │ │ -1604 template │ │ │ │ │ -_1_6_0_6 static bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -1607 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1608 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1609 int numPatchCoords, │ │ │ │ │ -1610 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1611 PATCH_TABLE *patchTable, │ │ │ │ │ -1612 int fvarChannel, │ │ │ │ │ -1613 _G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ -1614 void * deviceContext = NULL) { │ │ │ │ │ -1615 │ │ │ │ │ -1616 if (instance) { │ │ │ │ │ -1617 return instance->_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -1618 srcBuffer, srcDesc, │ │ │ │ │ -1619 dstBuffer, dstDesc, │ │ │ │ │ -1620 numPatchCoords, patchCoords, │ │ │ │ │ -1621 patchTable, fvarChannel); │ │ │ │ │ -1622 } else { │ │ │ │ │ -1623 // Create an instance on demand (slow) │ │ │ │ │ -1624 (void)deviceContext; // unused │ │ │ │ │ -1625 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ -1626 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -1627 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r()); │ │ │ │ │ -1628 if (instance) { │ │ │ │ │ -1629 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -1630 srcBuffer, srcDesc, │ │ │ │ │ -1631 dstBuffer, dstDesc, │ │ │ │ │ -1632 numPatchCoords, patchCoords, │ │ │ │ │ -1633 patchTable, fvarChannel); │ │ │ │ │ -1634 delete instance; │ │ │ │ │ -1635 return r; │ │ │ │ │ -1636 } │ │ │ │ │ -1637 return false; │ │ │ │ │ -1638 } │ │ │ │ │ -1639 } │ │ │ │ │ -1640 │ │ │ │ │ -1667 template │ │ │ │ │ -_1_6_6_9 bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -1670 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1671 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1672 int numPatchCoords, │ │ │ │ │ -1673 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1674 PATCH_TABLE *patchTable, │ │ │ │ │ -1675 int fvarChannel = 0) const { │ │ │ │ │ -1676 │ │ │ │ │ -1677 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ -1678 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ -1679 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -1680 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -1681 numPatchCoords, │ │ │ │ │ -1682 patchCoords->BindVBO(), │ │ │ │ │ -1683 patchTable->GetFVarPatchArrays(fvarChannel), │ │ │ │ │ -1684 patchTable->GetFVarPatchIndexBuffer(fvarChannel), │ │ │ │ │ -1685 patchTable->GetFVarPatchParamBuffer(fvarChannel)); │ │ │ │ │ -1686 } │ │ │ │ │ -1687 │ │ │ │ │ -1734 template │ │ │ │ │ -_1_7_3_6 static bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -1737 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1738 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1739 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -1740 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -1741 int numPatchCoords, │ │ │ │ │ -1742 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1743 PATCH_TABLE *patchTable, │ │ │ │ │ -1744 int fvarChannel, │ │ │ │ │ -1745 _G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ -1746 void * deviceContext = NULL) { │ │ │ │ │ -1747 │ │ │ │ │ -1748 if (instance) { │ │ │ │ │ -1749 return instance->_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -1750 srcBuffer, srcDesc, │ │ │ │ │ -1751 dstBuffer, dstDesc, │ │ │ │ │ -1752 duBuffer, duDesc, │ │ │ │ │ -1753 dvBuffer, dvDesc, │ │ │ │ │ -1754 numPatchCoords, patchCoords, │ │ │ │ │ -1755 patchTable, fvarChannel); │ │ │ │ │ -1756 } else { │ │ │ │ │ -1757 // Create an instance on demand (slow) │ │ │ │ │ -1758 (void)deviceContext; // unused │ │ │ │ │ -1759 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ -1760 duDesc, dvDesc); │ │ │ │ │ -1761 if (instance) { │ │ │ │ │ -1762 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -1763 srcBuffer, srcDesc, │ │ │ │ │ -1764 dstBuffer, dstDesc, │ │ │ │ │ -1765 duBuffer, duDesc, │ │ │ │ │ -1766 dvBuffer, dvDesc, │ │ │ │ │ -1767 numPatchCoords, patchCoords, │ │ │ │ │ -1768 patchTable, fvarChannel); │ │ │ │ │ -1769 delete instance; │ │ │ │ │ -1770 return r; │ │ │ │ │ -1771 } │ │ │ │ │ -1772 return false; │ │ │ │ │ -1773 } │ │ │ │ │ -1774 } │ │ │ │ │ -1775 │ │ │ │ │ -1814 template │ │ │ │ │ -_1_8_1_6 bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -1817 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1818 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1819 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -1820 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -1821 int numPatchCoords, │ │ │ │ │ -1822 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1823 PATCH_TABLE *patchTable, │ │ │ │ │ -1824 int fvarChannel = 0) const { │ │ │ │ │ -1825 │ │ │ │ │ -1826 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ -1827 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ -1828 duBuffer->BindVBO(), duDesc, │ │ │ │ │ -1829 dvBuffer->BindVBO(), dvDesc, │ │ │ │ │ -1830 numPatchCoords, │ │ │ │ │ -1831 patchCoords->BindVBO(), │ │ │ │ │ -1832 patchTable->GetFVarPatchArrays(fvarChannel), │ │ │ │ │ -1833 patchTable->GetFVarPatchIndexBuffer(fvarChannel), │ │ │ │ │ -1834 patchTable->GetFVarPatchParamBuffer(fvarChannel)); │ │ │ │ │ -1835 } │ │ │ │ │ -1836 │ │ │ │ │ -1901 template │ │ │ │ │ -_1_9_0_3 static bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -1904 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1905 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1906 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -1907 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -1908 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -1909 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -1910 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -1911 int numPatchCoords, │ │ │ │ │ -1912 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1913 PATCH_TABLE *patchTable, │ │ │ │ │ -1914 int fvarChannel, │ │ │ │ │ -1915 _G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ -1916 void * deviceContext = NULL) { │ │ │ │ │ -1917 │ │ │ │ │ -1918 if (instance) { │ │ │ │ │ -1919 return instance->_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -1920 srcBuffer, srcDesc, │ │ │ │ │ -1921 dstBuffer, dstDesc, │ │ │ │ │ -1922 duBuffer, duDesc, │ │ │ │ │ -1923 dvBuffer, dvDesc, │ │ │ │ │ -1924 duuBuffer, duuDesc, │ │ │ │ │ -1925 duvBuffer, duvDesc, │ │ │ │ │ -1926 dvvBuffer, dvvDesc, │ │ │ │ │ -1927 numPatchCoords, patchCoords, │ │ │ │ │ -1928 patchTable, fvarChannel); │ │ │ │ │ -1929 } else { │ │ │ │ │ -1930 // Create an instance on demand (slow) │ │ │ │ │ -1931 (void)deviceContext; // unused │ │ │ │ │ -1932 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ -1933 duDesc, dvDesc, │ │ │ │ │ -1934 duuDesc, duvDesc, dvvDesc); │ │ │ │ │ -1935 if (instance) { │ │ │ │ │ -1936 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -1937 srcBuffer, srcDesc, │ │ │ │ │ -1938 dstBuffer, dstDesc, │ │ │ │ │ -1939 duBuffer, duDesc, │ │ │ │ │ -1940 dvBuffer, dvDesc, │ │ │ │ │ -1941 duuBuffer, duuDesc, │ │ │ │ │ -1942 duvBuffer, duvDesc, │ │ │ │ │ -1943 dvvBuffer, dvvDesc, │ │ │ │ │ -1944 numPatchCoords, patchCoords, │ │ │ │ │ -1945 patchTable, fvarChannel); │ │ │ │ │ -1946 delete instance; │ │ │ │ │ -1947 return r; │ │ │ │ │ -1948 } │ │ │ │ │ -1949 return false; │ │ │ │ │ -1950 } │ │ │ │ │ -1951 } │ │ │ │ │ -1952 │ │ │ │ │ -2009 template │ │ │ │ │ -_2_0_1_1 bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -2012 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -2013 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -2014 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -2015 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -2016 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -2017 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -2018 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -2019 int numPatchCoords, │ │ │ │ │ -2020 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -2021 PATCH_TABLE *patchTable, │ │ │ │ │ -2022 int fvarChannel = 0) const { │ │ │ │ │ -2023 │ │ │ │ │ -2024 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ -2025 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ -2026 duBuffer->BindVBO(), duDesc, │ │ │ │ │ -2027 dvBuffer->BindVBO(), dvDesc, │ │ │ │ │ -2028 duuBuffer->BindVBO(), duuDesc, │ │ │ │ │ -2029 duvBuffer->BindVBO(), duvDesc, │ │ │ │ │ -2030 dvvBuffer->BindVBO(), dvvDesc, │ │ │ │ │ -2031 numPatchCoords, │ │ │ │ │ -2032 patchCoords->BindVBO(), │ │ │ │ │ -2033 patchTable->GetFVarPatchArrays(fvarChannel), │ │ │ │ │ -2034 patchTable->GetFVarPatchIndexBuffer(fvarChannel), │ │ │ │ │ -2035 patchTable->GetFVarPatchParamBuffer(fvarChannel)); │ │ │ │ │ -2036 } │ │ │ │ │ -2037 │ │ │ │ │ -2043 │ │ │ │ │ -_2_0_4_6 bool _C_o_m_p_i_l_e(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -2047 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -2048 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc = _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -2049 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc = _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -2050 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc = _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -2051 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc = _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -2052 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc = _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r()); │ │ │ │ │ -2053 │ │ │ │ │ -_2_0_5_5 static void _S_y_n_c_h_r_o_n_i_z_e(void *deviceContext); │ │ │ │ │ -2056 │ │ │ │ │ -2057private: │ │ │ │ │ -2058 struct _StencilKernel { │ │ │ │ │ -2059 _StencilKernel(); │ │ │ │ │ -2060 ~_StencilKernel(); │ │ │ │ │ -2061 bool Compile(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -2062 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -2063 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -2064 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -2065 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -2066 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -2067 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -2068 int workGroupSize); │ │ │ │ │ -2069 GLuint program; │ │ │ │ │ -2070 GLuint uniformStart; │ │ │ │ │ -2071 GLuint uniformEnd; │ │ │ │ │ -2072 GLuint uniformSrcOffset; │ │ │ │ │ -2073 GLuint uniformDstOffset; │ │ │ │ │ -2074 GLuint uniformDuDesc; │ │ │ │ │ -2075 GLuint uniformDvDesc; │ │ │ │ │ -2076 GLuint uniformDuuDesc; │ │ │ │ │ -2077 GLuint uniformDuvDesc; │ │ │ │ │ -2078 GLuint uniformDvvDesc; │ │ │ │ │ -2079 } _stencilKernel; │ │ │ │ │ -2080 │ │ │ │ │ -2081 struct _PatchKernel { │ │ │ │ │ -2082 _PatchKernel(); │ │ │ │ │ -2083 ~_PatchKernel(); │ │ │ │ │ -2084 bool Compile(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -2085 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -2086 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -2087 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -2088 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -2089 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -2090 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -2091 int workGroupSize); │ │ │ │ │ -2092 GLuint program; │ │ │ │ │ -2093 GLuint uniformSrcOffset; │ │ │ │ │ -2094 GLuint uniformDstOffset; │ │ │ │ │ -2095 GLuint uniformPatchArray; │ │ │ │ │ -2096 GLuint uniformDuDesc; │ │ │ │ │ -2097 GLuint uniformDvDesc; │ │ │ │ │ -2098 GLuint uniformDuuDesc; │ │ │ │ │ -2099 GLuint uniformDuvDesc; │ │ │ │ │ -2100 GLuint uniformDvvDesc; │ │ │ │ │ -2101 } _patchKernel; │ │ │ │ │ -2102 │ │ │ │ │ -2103 int _workGroupSize; │ │ │ │ │ -2104 GLuint _patchArraysSSBO; │ │ │ │ │ -2105}; │ │ │ │ │ -2106 │ │ │ │ │ -2107} // end namespace Osd │ │ │ │ │ -2108 │ │ │ │ │ -2109} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ -2110using namespace OPENSUBDIV_VERSION; │ │ │ │ │ -2111 │ │ │ │ │ -2112} // end namespace OpenSubdiv │ │ │ │ │ -2113 │ │ │ │ │ -2114 │ │ │ │ │ -2115#endif // OPENSUBDIV3_OSD_GL_COMPUTE_EVALUATOR_H │ │ │ │ │ +94} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ +95using namespace OPENSUBDIV_VERSION; │ │ │ │ │ +96 │ │ │ │ │ +97} // end namespace OpenSubdiv │ │ │ │ │ +98 │ │ │ │ │ +99#endif // OPENSUBDIV3_OSD_CPU_D3D11_VERTEX_BUFFER_H │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v │ │ │ │ │ DDeeffiinniittiioonn _l_i_m_i_t_s_._h_:_3_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_P_a_t_c_h_A_r_r_a_y_V_e_c_t_o_r │ │ │ │ │ -std::vector< PatchArray > PatchArrayVector │ │ │ │ │ -DDeeffiinniittiioonn _t_y_p_e_s_._h_:_1_3_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ -Stencil table class wrapping the template for compatibility. │ │ │ │ │ -DDeeffiinniittiioonn _s_t_e_n_c_i_l_T_a_b_l_e_._h_:_2_7_3 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_L_i_m_i_t_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ -Limit stencil table class wrapping the template for compatibility. │ │ │ │ │ -DDeeffiinniittiioonn _s_t_e_n_c_i_l_T_a_b_l_e_._h_:_5_8_3 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ -BufferDescriptor is a struct which describes buffer elements in interleaved │ │ │ │ │ -data buffers.... │ │ │ │ │ -DDeeffiinniittiioonn _b_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r_._h_:_6_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O │ │ │ │ │ -GL stencil table (Shader Storage buffer) │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_5_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O_:_:_G_e_t_D_u_v_W_e_i_g_h_t_s_B_u_f_f_e_r │ │ │ │ │ -GLuint GetDuvWeightsBuffer() const │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_7_7 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O_:_:_G_e_t_W_e_i_g_h_t_s_B_u_f_f_e_r │ │ │ │ │ -GLuint GetWeightsBuffer() const │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_7_3 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O │ │ │ │ │ -GLStencilTableSSBO(Far::LimitStencilTable const *limitStencilTable) │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O_:_:_G_e_t_D_u_W_e_i_g_h_t_s_B_u_f_f_e_r │ │ │ │ │ -GLuint GetDuWeightsBuffer() const │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_7_4 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O_:_:_~_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O │ │ │ │ │ -~GLStencilTableSSBO() │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O_:_:_G_e_t_N_u_m_S_t_e_n_c_i_l_s │ │ │ │ │ -int GetNumStencils() const │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_7_9 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O_:_:_G_e_t_I_n_d_i_c_e_s_B_u_f_f_e_r │ │ │ │ │ -GLuint GetIndicesBuffer() const │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_7_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O_:_:_G_e_t_O_f_f_s_e_t_s_B_u_f_f_e_r │ │ │ │ │ -GLuint GetOffsetsBuffer() const │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_7_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O │ │ │ │ │ -GLStencilTableSSBO(Far::StencilTable const *stencilTable) │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O_:_:_G_e_t_D_v_v_W_e_i_g_h_t_s_B_u_f_f_e_r │ │ │ │ │ -GLuint GetDvvWeightsBuffer() const │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_7_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O_:_:_G_e_t_S_i_z_e_s_B_u_f_f_e_r │ │ │ │ │ -GLuint GetSizesBuffer() const │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_7_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O_:_:_C_r_e_a_t_e │ │ │ │ │ -static GLStencilTableSSBO * Create(Far::LimitStencilTable const │ │ │ │ │ -*limitStencilTable, void *deviceContext=NULL) │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_5_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O_:_:_G_e_t_D_u_u_W_e_i_g_h_t_s_B_u_f_f_e_r │ │ │ │ │ -GLuint GetDuuWeightsBuffer() const │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_7_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O_:_:_G_e_t_D_v_W_e_i_g_h_t_s_B_u_f_f_e_r │ │ │ │ │ -GLuint GetDvWeightsBuffer() const │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_7_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O_:_:_C_r_e_a_t_e │ │ │ │ │ -static GLStencilTableSSBO * Create(Far::StencilTable const *stencilTable, void │ │ │ │ │ -*deviceContext=NULL) │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_5_3 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_9_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ -bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, │ │ │ │ │ -DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords, │ │ │ │ │ -PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_1_2_1_4 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_1_7_3_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ -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 │ │ │ │ │ -Generic stencil function. │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_4_3_4 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_1_1_5_4 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_1_6_0_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ -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 │ │ │ │ │ -Generic stencil function. │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_5_0_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_1_2_7_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_I_n_s_t_a_n_t_i_a_t_a_b_l_e │ │ │ │ │ -bool Instantiatable │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_9_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ -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 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_~_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r │ │ │ │ │ -~GLComputeEvaluator() │ │ │ │ │ -Destructor. note that the GL context must be made current. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ -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 │ │ │ │ │ -Generic limit eval function with derivatives. This function has a same │ │ │ │ │ -signature as other device kern... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_1_0_7_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ -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) │ │ │ │ │ -Generic static stencil function. This function has a same signature as other │ │ │ │ │ -device kernels have so t... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_2_3_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ -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 │ │ │ │ │ -Dispatch the GLSL compute kernel on GPU asynchronously returns false if the │ │ │ │ │ -kernel hasn't been compil... │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ -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) │ │ │ │ │ -Generic static stencil function. This function has a same signature as other │ │ │ │ │ -device kernels have so t... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_1_6_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_1_4_3_9 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_7_6_9 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_1_9_0_3 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ -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 │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_1_5_4_4 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ -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 │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_1_8_1_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ -bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, │ │ │ │ │ -DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords, │ │ │ │ │ -PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_9_4_3 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r │ │ │ │ │ -GLComputeEvaluator() │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r │ │ │ │ │ +Concrete vertex buffer class for Cpu subdivision and DirectX drawing. │ │ │ │ │ +DDeeffiinniittiioonn _c_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r_._h_:_4_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r_:_:_C_r_e_a_t_e │ │ │ │ │ +static CpuD3D11VertexBuffer * Create(int numElements, int numVertices, │ │ │ │ │ +ID3D11DeviceContext *deviceContext) │ │ │ │ │ +Creator. Returns NULL if error. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r_:_:_C_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r │ │ │ │ │ +CpuD3D11VertexBuffer(int numElements, int numVertices) │ │ │ │ │ Constructor. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ -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 │ │ │ │ │ -Generic limit eval function with derivatives. This function has a same │ │ │ │ │ -signature as other device kern... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_9_9_7 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_6_9_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ -bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, │ │ │ │ │ -DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE const │ │ │ │ │ -*stencilTable) const │ │ │ │ │ -Generic stencil function. │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_3_8_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ -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 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ -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 │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_2_0_1_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_C_r_e_a_t_e │ │ │ │ │ -static GLComputeEvaluator * Create(BufferDescriptor const &srcDesc, │ │ │ │ │ -BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, │ │ │ │ │ -BufferDescriptor const &dvDesc, void *deviceContext=NULL) │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_9_9 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ -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 │ │ │ │ │ -Dispatch the GLSL compute kernel on GPU asynchronously returns false if the │ │ │ │ │ -kernel hasn't been compil... │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ -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) │ │ │ │ │ -Generic static stencil function. This function has a same signature as other │ │ │ │ │ -device kernels have so t... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_3_2_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_S_y_n_c_h_r_o_n_i_z_e │ │ │ │ │ -static void Synchronize(void *deviceContext) │ │ │ │ │ -Wait the dispatched kernel finishes. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_C_o_m_p_i_l_e │ │ │ │ │ -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()) │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ -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 │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_1_3_5_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_C_r_e_a_t_e │ │ │ │ │ -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) │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_1_1_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ -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 │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_1_6_6_9 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ -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 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r_:_:_G_e_t_N_u_m_E_l_e_m_e_n_t_s │ │ │ │ │ +int GetNumElements() const │ │ │ │ │ +Returns how many elements defined in this vertex buffer. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r_:_:_U_p_d_a_t_e_D_a_t_a │ │ │ │ │ +void UpdateData(const float *src, int startVertex, int numVertices, void │ │ │ │ │ *deviceContext=NULL) │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_8_7_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r_:_:_G_e_t_N_u_m_V_e_r_t_i_c_e_s │ │ │ │ │ +int GetNumVertices() const │ │ │ │ │ +Returns how many vertices allocated in this vertex buffer. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r_:_:_B_i_n_d_D_3_D_1_1_B_u_f_f_e_r │ │ │ │ │ +ID3D11Buffer * BindD3D11Buffer(ID3D11DeviceContext *deviceContext) │ │ │ │ │ +Returns the D3D11 buffer object. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r_:_:_B_i_n_d_C_p_u_B_u_f_f_e_r │ │ │ │ │ +float * BindCpuBuffer() │ │ │ │ │ +Returns the address of CPU buffer. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r_:_:_a_l_l_o_c_a_t_e │ │ │ │ │ +bool allocate(ID3D11Device *device) │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r_:_: │ │ │ │ │ +_~_C_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r │ │ │ │ │ +virtual ~CpuD3D11VertexBuffer() │ │ │ │ │ +Destructor. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r_:_:_B_i_n_d_V_B_O │ │ │ │ │ +ID3D11Buffer * BindVBO(ID3D11DeviceContext *deviceContext) │ │ │ │ │ +Returns the D3D11 buffer object (for Osd::Mesh interface) │ │ │ │ │ +DDeeffiinniittiioonn _c_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r_._h_:_7_5 │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _o_s_d │ │ │ │ │ - * _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h │ │ │ │ │ + * _c_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00848.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/osd/cpuD3D11VertexBuffer.h File Reference │ │ │ │ +OpenSubdiv: opensubdiv/osd/glXFBEvaluator.h File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -90,41 +90,47 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
cpuD3D11VertexBuffer.h File Reference
│ │ │ │ +
glXFBEvaluator.h File Reference
│ │ │ │
│ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ -#include <cstddef>
│ │ │ │ +#include "../osd/opengl.h"
│ │ │ │ +#include "../osd/types.h"
│ │ │ │ +#include "../osd/bufferDescriptor.h"
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  CpuD3D11VertexBuffer
 Concrete vertex buffer class for Cpu subdivision and DirectX drawing. More...
class  GLStencilTableTBO
 GL TextureBuffer stencil table. More...
 
class  GLXFBEvaluator
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  OpenSubdiv
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION::Far
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION::Osd
 
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,25 +1,30 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -cpuD3D11VertexBuffer.h File Reference │ │ │ │ │ +glXFBEvaluator.h File Reference │ │ │ │ │ #include "../version.h" │ │ │ │ │ -#include │ │ │ │ │ +#include "_._._/_o_s_d_/_o_p_e_n_g_l_._h" │ │ │ │ │ +#include "_._._/_o_s_d_/_t_y_p_e_s_._h" │ │ │ │ │ +#include "_._._/_o_s_d_/_b_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r_._h" │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -class   _C_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r │ │ │ │ │ -  Concrete vertex buffer class for Cpu subdivision and DirectX drawing. │ │ │ │ │ - _M_o_r_e_._._. │ │ │ │ │ +class   _G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O │ │ │ │ │ +  GL TextureBuffer stencil table. _M_o_r_e_._._. │ │ │ │ │ +  │ │ │ │ │ +class   _G_L_X_F_B_E_v_a_l_u_a_t_o_r │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N │ │ │ │ │   │ │ │ │ │ +namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r │ │ │ │ │ +  │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d │ │ │ │ │   │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _o_s_d │ │ │ │ │ - * _c_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r_._h │ │ │ │ │ + * _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00848.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -1,3 +1,4 @@ │ │ │ │ │ var a00848 = [ │ │ │ │ │ - ["CpuD3D11VertexBuffer", "a01161.html", "a01161"] │ │ │ │ │ + ["GLStencilTableTBO", "a01249.html", "a01249"], │ │ │ │ │ + ["GLXFBEvaluator", "a01253.html", "a01253"] │ │ │ │ │ ]; │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00848_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/osd/cpuD3D11VertexBuffer.h Source File │ │ │ │ +OpenSubdiv: opensubdiv/osd/glXFBEvaluator.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -92,19 +92,19 @@ │ │ │ │
No Matches
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
cpuD3D11VertexBuffer.h
│ │ │ │ +
glXFBEvaluator.h
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1//
│ │ │ │ -
2// Copyright 2013 Pixar
│ │ │ │ +
2// Copyright 2015 Pixar
│ │ │ │
3//
│ │ │ │
4// Licensed under the Apache License, Version 2.0 (the "Apache License")
│ │ │ │
5// with the following modification; you may not use this file except in
│ │ │ │
6// compliance with the Apache License and the following modification to it:
│ │ │ │
7// Section 6. Trademarks. is deleted and replaced with:
│ │ │ │
8//
│ │ │ │
9// 6. Trademarks. This License does not grant permission to use the trade
│ │ │ │ @@ -119,91 +119,1205 @@ │ │ │ │
18// Unless required by applicable law or agreed to in writing, software
│ │ │ │
19// distributed under the Apache License with the above modification is
│ │ │ │
20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
│ │ │ │
21// KIND, either express or implied. See the Apache License for the specific
│ │ │ │
22// language governing permissions and limitations under the Apache License.
│ │ │ │
23//
│ │ │ │
24
│ │ │ │ -
25#ifndef OPENSUBDIV3_OSD_CPU_D3D11_VERTEX_BUFFER_H
│ │ │ │ -
26#define OPENSUBDIV3_OSD_CPU_D3D11_VERTEX_BUFFER_H
│ │ │ │ +
25#ifndef OPENSUBDIV3_OSD_GL_XFB_EVALUATOR_H
│ │ │ │ +
26#define OPENSUBDIV3_OSD_GL_XFB_EVALUATOR_H
│ │ │ │
27
│ │ │ │
28#include "../version.h"
│ │ │ │ -
29#include <cstddef>
│ │ │ │ -
30
│ │ │ │ -
31struct ID3D11Buffer;
│ │ │ │ -
32struct ID3D11Device;
│ │ │ │ -
33struct ID3D11DeviceContext;
│ │ │ │ -
34
│ │ │ │ -
35namespace OpenSubdiv {
│ │ │ │ -
36namespace OPENSUBDIV_VERSION {
│ │ │ │ -
37
│ │ │ │ -
38namespace Osd {
│ │ │ │ -
39
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
49public:
│ │ │ │ -
51 static CpuD3D11VertexBuffer * Create(int numElements, int numVertices,
│ │ │ │ -
52 ID3D11DeviceContext *deviceContext);
│ │ │ │ -
53
│ │ │ │ - │ │ │ │ -
56
│ │ │ │ -
59 void UpdateData(const float *src, int startVertex, int numVertices,
│ │ │ │ -
60 void *deviceContext = NULL);
│ │ │ │ -
61
│ │ │ │ -
63 int GetNumElements() const;
│ │ │ │ -
64
│ │ │ │ -
66 int GetNumVertices() const;
│ │ │ │ -
67
│ │ │ │ -
69 float * BindCpuBuffer();
│ │ │ │ +
29
│ │ │ │ +
30#include "../osd/opengl.h"
│ │ │ │ +
31#include "../osd/types.h"
│ │ │ │ +
32#include "../osd/bufferDescriptor.h"
│ │ │ │ +
33
│ │ │ │ +
34namespace OpenSubdiv {
│ │ │ │ +
35namespace OPENSUBDIV_VERSION {
│ │ │ │ +
36
│ │ │ │ +
37namespace Far {
│ │ │ │ +
38 class PatchTable;
│ │ │ │ +
39 class StencilTable;
│ │ │ │ +
40 class LimitStencilTable;
│ │ │ │ +
41}
│ │ │ │ +
42
│ │ │ │ +
43namespace Osd {
│ │ │ │ +
44
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
53public:
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
55 Far::StencilTable const *stencilTable, void *deviceContext = NULL) {
│ │ │ │ +
56 (void)deviceContext; // unused
│ │ │ │ +
57 return new GLStencilTableTBO(stencilTable);
│ │ │ │ +
58 }
│ │ │ │ +
│ │ │ │ +
59
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
61 Far::LimitStencilTable const *limitStencilTable,
│ │ │ │ +
62 void *deviceContext = NULL) {
│ │ │ │ +
63 (void)deviceContext; // unused
│ │ │ │ +
64 return new GLStencilTableTBO(limitStencilTable);
│ │ │ │ +
65 }
│ │ │ │ +
│ │ │ │ +
66
│ │ │ │ +
67 explicit GLStencilTableTBO(Far::StencilTable const *stencilTable);
│ │ │ │ +
68 explicit GLStencilTableTBO(Far::LimitStencilTable const *limitStencilTable);
│ │ │ │ + │ │ │ │
70
│ │ │ │ -
72 ID3D11Buffer *BindD3D11Buffer(ID3D11DeviceContext *deviceContext);
│ │ │ │ -
73
│ │ │ │ -
│ │ │ │ -
75 ID3D11Buffer *BindVBO(ID3D11DeviceContext *deviceContext) {
│ │ │ │ -
76 return BindD3D11Buffer(deviceContext);
│ │ │ │ -
77 }
│ │ │ │ -
│ │ │ │ -
78
│ │ │ │ -
79protected:
│ │ │ │ -
81 CpuD3D11VertexBuffer(int numElements, int numVertices);
│ │ │ │ +
71 // interfaces needed for GLSLTransformFeedbackKernel
│ │ │ │ +
72 GLuint GetSizesTexture() const { return _sizes; }
│ │ │ │ +
73 GLuint GetOffsetsTexture() const { return _offsets; }
│ │ │ │ +
74 GLuint GetIndicesTexture() const { return _indices; }
│ │ │ │ +
75 GLuint GetWeightsTexture() const { return _weights; }
│ │ │ │ +
76 GLuint GetDuWeightsTexture() const { return _duWeights; }
│ │ │ │ +
77 GLuint GetDvWeightsTexture() const { return _dvWeights; }
│ │ │ │ +
78 GLuint GetDuuWeightsTexture() const { return _duuWeights; }
│ │ │ │ +
79 GLuint GetDuvWeightsTexture() const { return _duvWeights; }
│ │ │ │ +
80 GLuint GetDvvWeightsTexture() const { return _dvvWeights; }
│ │ │ │ +
81 int GetNumStencils() const { return _numStencils; }
│ │ │ │
82
│ │ │ │ -
83 bool allocate(ID3D11Device *device);
│ │ │ │ -
84
│ │ │ │ -
85private:
│ │ │ │ -
86 int _numElements;
│ │ │ │ -
87 int _numVertices;
│ │ │ │ -
88 ID3D11Buffer *_d3d11Buffer;
│ │ │ │ -
89 float *_cpuBuffer;
│ │ │ │ -
90};
│ │ │ │ -
│ │ │ │ -
91
│ │ │ │ -
92} // end namespace Osd
│ │ │ │ -
93
│ │ │ │ -
94} // end namespace OPENSUBDIV_VERSION
│ │ │ │ -
95using namespace OPENSUBDIV_VERSION;
│ │ │ │ -
96
│ │ │ │ -
97} // end namespace OpenSubdiv
│ │ │ │ -
98
│ │ │ │ -
99#endif // OPENSUBDIV3_OSD_CPU_D3D11_VERTEX_BUFFER_H
│ │ │ │ +
83private:
│ │ │ │ +
84 GLuint _sizes;
│ │ │ │ +
85 GLuint _offsets;
│ │ │ │ +
86 GLuint _indices;
│ │ │ │ +
87 GLuint _weights;
│ │ │ │ +
88 GLuint _duWeights;
│ │ │ │ +
89 GLuint _dvWeights;
│ │ │ │ +
90 GLuint _duuWeights;
│ │ │ │ +
91 GLuint _duvWeights;
│ │ │ │ +
92 GLuint _dvvWeights;
│ │ │ │ +
93 int _numStencils;
│ │ │ │ +
94};
│ │ │ │ +
│ │ │ │ +
95
│ │ │ │ +
96// ---------------------------------------------------------------------------
│ │ │ │ +
97
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
99public:
│ │ │ │ +
100 typedef bool Instantiatable;
│ │ │ │ +
101
│ │ │ │ +
103 template <typename DEVICE_CONTEXT>
│ │ │ │ +
│ │ │ │ +
104 static GLXFBEvaluator *Create(BufferDescriptor const &srcDesc,
│ │ │ │ +
105 BufferDescriptor const &dstDesc,
│ │ │ │ +
106 BufferDescriptor const &duDesc,
│ │ │ │ +
107 BufferDescriptor const &dvDesc,
│ │ │ │ +
108 DEVICE_CONTEXT deviceContext) {
│ │ │ │ +
109 bool interleavedDerivativeBuffers = deviceContext
│ │ │ │ +
110 ? deviceContext->AreInterleavedDerivativeBuffers()
│ │ │ │ +
111 : false;
│ │ │ │ +
112 return Create(srcDesc, dstDesc, duDesc, dvDesc,
│ │ │ │ +
113 interleavedDerivativeBuffers);
│ │ │ │ +
114 }
│ │ │ │ +
│ │ │ │ +
115
│ │ │ │ +
│ │ │ │ +
117 static GLXFBEvaluator *Create(BufferDescriptor const &srcDesc,
│ │ │ │ +
118 BufferDescriptor const &dstDesc,
│ │ │ │ +
119 BufferDescriptor const &duDesc,
│ │ │ │ +
120 BufferDescriptor const &dvDesc,
│ │ │ │ +
121 void * deviceContext) {
│ │ │ │ +
122 (void)deviceContext; // not used
│ │ │ │ +
123 return Create(srcDesc, dstDesc, duDesc, dvDesc);
│ │ │ │ +
124 }
│ │ │ │ +
│ │ │ │ +
125
│ │ │ │ +
│ │ │ │ +
126 static GLXFBEvaluator * Create(BufferDescriptor const &srcDesc,
│ │ │ │ +
127 BufferDescriptor const &dstDesc,
│ │ │ │ +
128 BufferDescriptor const &duDesc,
│ │ │ │ +
129 BufferDescriptor const &dvDesc,
│ │ │ │ +
130 bool interleavedDerivativeBuffers = false) {
│ │ │ │ +
131 GLXFBEvaluator *instance = new GLXFBEvaluator(interleavedDerivativeBuffers);
│ │ │ │ +
132 if (instance->Compile(srcDesc, dstDesc, duDesc, dvDesc))
│ │ │ │ +
133 return instance;
│ │ │ │ +
134 delete instance;
│ │ │ │ +
135 return NULL;
│ │ │ │ +
136 }
│ │ │ │ +
│ │ │ │ +
137
│ │ │ │ +
139 template <typename DEVICE_CONTEXT>
│ │ │ │ +
│ │ │ │ +
140 static GLXFBEvaluator *Create(BufferDescriptor const &srcDesc,
│ │ │ │ +
141 BufferDescriptor const &dstDesc,
│ │ │ │ +
142 BufferDescriptor const &duDesc,
│ │ │ │ +
143 BufferDescriptor const &dvDesc,
│ │ │ │ +
144 BufferDescriptor const &duuDesc,
│ │ │ │ +
145 BufferDescriptor const &duvDesc,
│ │ │ │ +
146 BufferDescriptor const &dvvDesc,
│ │ │ │ +
147 DEVICE_CONTEXT deviceContext) {
│ │ │ │ +
148 bool interleavedDerivativeBuffers = deviceContext
│ │ │ │ +
149 ? deviceContext->AreInterleavedDerivativeBuffers()
│ │ │ │ +
150 : false;
│ │ │ │ +
151 return Create(srcDesc, dstDesc, duDesc, dvDesc,
│ │ │ │ +
152 duuDesc, duvDesc, dvvDesc,
│ │ │ │ +
153 interleavedDerivativeBuffers);
│ │ │ │ +
154 }
│ │ │ │ +
│ │ │ │ +
155
│ │ │ │ +
│ │ │ │ +
157 static GLXFBEvaluator *Create(BufferDescriptor const &srcDesc,
│ │ │ │ +
158 BufferDescriptor const &dstDesc,
│ │ │ │ +
159 BufferDescriptor const &duDesc,
│ │ │ │ +
160 BufferDescriptor const &dvDesc,
│ │ │ │ +
161 BufferDescriptor const &duuDesc,
│ │ │ │ +
162 BufferDescriptor const &duvDesc,
│ │ │ │ +
163 BufferDescriptor const &dvvDesc,
│ │ │ │ +
164 void * deviceContext) {
│ │ │ │ +
165 (void)deviceContext; // not used
│ │ │ │ +
166 return Create(srcDesc, dstDesc, duDesc, dvDesc,
│ │ │ │ +
167 duuDesc, duvDesc, dvvDesc);
│ │ │ │ +
168 }
│ │ │ │ +
│ │ │ │ +
169
│ │ │ │ +
│ │ │ │ +
170 static GLXFBEvaluator * Create(BufferDescriptor const &srcDesc,
│ │ │ │ +
171 BufferDescriptor const &dstDesc,
│ │ │ │ +
172 BufferDescriptor const &duDesc,
│ │ │ │ +
173 BufferDescriptor const &dvDesc,
│ │ │ │ +
174 BufferDescriptor const &duuDesc,
│ │ │ │ +
175 BufferDescriptor const &duvDesc,
│ │ │ │ +
176 BufferDescriptor const &dvvDesc,
│ │ │ │ +
177 bool interleavedDerivativeBuffers = false) {
│ │ │ │ +
178 GLXFBEvaluator *instance = new GLXFBEvaluator(interleavedDerivativeBuffers);
│ │ │ │ +
179 if (instance->Compile(srcDesc, dstDesc, duDesc, dvDesc,
│ │ │ │ +
180 duuDesc, duvDesc, dvvDesc))
│ │ │ │ +
181 return instance;
│ │ │ │ +
182 delete instance;
│ │ │ │ +
183 return NULL;
│ │ │ │ +
184 }
│ │ │ │ +
│ │ │ │ +
185
│ │ │ │ +
199 GLXFBEvaluator(bool interleavedDerivativeBuffers = false);
│ │ │ │ +
200
│ │ │ │ + │ │ │ │ +
203
│ │ │ │ +
209
│ │ │ │ +
237 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ +
│ │ │ │ +
238 static bool EvalStencils(
│ │ │ │ +
239 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
240 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
241 STENCIL_TABLE const *stencilTable,
│ │ │ │ +
242 GLXFBEvaluator const *instance,
│ │ │ │ +
243 void * deviceContext = NULL) {
│ │ │ │ +
244
│ │ │ │ +
245 if (instance) {
│ │ │ │ +
246 return instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │ +
247 dstBuffer, dstDesc,
│ │ │ │ +
248 stencilTable);
│ │ │ │ +
249 } else {
│ │ │ │ +
250 // Create an instance on demand (slow)
│ │ │ │ +
251 (void)deviceContext; // unused
│ │ │ │ +
252 instance = Create(srcDesc, dstDesc,
│ │ │ │ + │ │ │ │ + │ │ │ │ +
255 if (instance) {
│ │ │ │ +
256 bool r = instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │ +
257 dstBuffer, dstDesc,
│ │ │ │ +
258 stencilTable);
│ │ │ │ +
259 delete instance;
│ │ │ │ +
260 return r;
│ │ │ │ +
261 }
│ │ │ │ +
262 return false;
│ │ │ │ +
263 }
│ │ │ │ +
264 }
│ │ │ │ +
│ │ │ │ +
265
│ │ │ │ +
305 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ +
│ │ │ │ +
306 static bool EvalStencils(
│ │ │ │ +
307 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
308 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
309 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
310 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
311 STENCIL_TABLE const *stencilTable,
│ │ │ │ +
312 GLXFBEvaluator const *instance,
│ │ │ │ +
313 void * deviceContext = NULL) {
│ │ │ │ +
314
│ │ │ │ +
315 if (instance) {
│ │ │ │ +
316 return instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │ +
317 dstBuffer, dstDesc,
│ │ │ │ +
318 duBuffer, duDesc,
│ │ │ │ +
319 dvBuffer, dvDesc,
│ │ │ │ +
320 stencilTable);
│ │ │ │ +
321 } else {
│ │ │ │ +
322 // Create an instance on demand (slow)
│ │ │ │ +
323 (void)deviceContext; // unused
│ │ │ │ +
324 instance = Create(srcDesc, dstDesc, duDesc, dvDesc);
│ │ │ │ +
325 if (instance) {
│ │ │ │ +
326 bool r = instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │ +
327 dstBuffer, dstDesc,
│ │ │ │ +
328 duBuffer, duDesc,
│ │ │ │ +
329 dvBuffer, dvDesc,
│ │ │ │ +
330 stencilTable);
│ │ │ │ +
331 delete instance;
│ │ │ │ +
332 return r;
│ │ │ │ +
333 }
│ │ │ │ +
334 return false;
│ │ │ │ +
335 }
│ │ │ │ +
336 }
│ │ │ │ +
│ │ │ │ +
337
│ │ │ │ +
395 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ +
│ │ │ │ +
396 static bool EvalStencils(
│ │ │ │ +
397 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
398 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
399 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
400 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
401 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ +
402 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ +
403 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ +
404 STENCIL_TABLE const *stencilTable,
│ │ │ │ +
405 GLXFBEvaluator const *instance,
│ │ │ │ +
406 void * deviceContext = NULL) {
│ │ │ │ +
407
│ │ │ │ +
408 if (instance) {
│ │ │ │ +
409 return instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │ +
410 dstBuffer, dstDesc,
│ │ │ │ +
411 duBuffer, duDesc,
│ │ │ │ +
412 dvBuffer, dvDesc,
│ │ │ │ +
413 duuBuffer, duuDesc,
│ │ │ │ +
414 duvBuffer, duvDesc,
│ │ │ │ +
415 dvvBuffer, dvvDesc,
│ │ │ │ +
416 stencilTable);
│ │ │ │ +
417 } else {
│ │ │ │ +
418 // Create an instance on demand (slow)
│ │ │ │ +
419 (void)deviceContext; // unused
│ │ │ │ +
420 instance = Create(srcDesc, dstDesc,
│ │ │ │ +
421 duDesc, dvDesc,
│ │ │ │ +
422 duuDesc, duvDesc, dvvDesc);
│ │ │ │ +
423 if (instance) {
│ │ │ │ +
424 bool r = instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │ +
425 dstBuffer, dstDesc,
│ │ │ │ +
426 duBuffer, duDesc,
│ │ │ │ +
427 dvBuffer, dvDesc,
│ │ │ │ +
428 duuBuffer, duuDesc,
│ │ │ │ +
429 duvBuffer, duvDesc,
│ │ │ │ +
430 dvvBuffer, dvvDesc,
│ │ │ │ +
431 stencilTable);
│ │ │ │ +
432 delete instance;
│ │ │ │ +
433 return r;
│ │ │ │ +
434 }
│ │ │ │ +
435 return false;
│ │ │ │ +
436 }
│ │ │ │ +
437 }
│ │ │ │ +
│ │ │ │ +
438
│ │ │ │ +
456 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
458 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
459 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
460 STENCIL_TABLE const *stencilTable) const {
│ │ │ │ +
461
│ │ │ │ +
462 return EvalStencils(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ +
463 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ +
464 0, BufferDescriptor(),
│ │ │ │ +
465 0, BufferDescriptor(),
│ │ │ │ +
466 stencilTable->GetSizesTexture(),
│ │ │ │ +
467 stencilTable->GetOffsetsTexture(),
│ │ │ │ +
468 stencilTable->GetIndicesTexture(),
│ │ │ │ +
469 stencilTable->GetWeightsTexture(),
│ │ │ │ +
470 0,
│ │ │ │ +
471 0,
│ │ │ │ +
472 /* start = */ 0,
│ │ │ │ +
473 /* end = */ stencilTable->GetNumStencils());
│ │ │ │ +
474 }
│ │ │ │ +
│ │ │ │ +
475
│ │ │ │ +
505 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
507 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
508 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
509 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
510 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
511 STENCIL_TABLE const *stencilTable) const {
│ │ │ │ +
512
│ │ │ │ +
513 return EvalStencils(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ +
514 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ +
515 duBuffer->BindVBO(), duDesc,
│ │ │ │ +
516 dvBuffer->BindVBO(), dvDesc,
│ │ │ │ +
517 stencilTable->GetSizesTexture(),
│ │ │ │ +
518 stencilTable->GetOffsetsTexture(),
│ │ │ │ +
519 stencilTable->GetIndicesTexture(),
│ │ │ │ +
520 stencilTable->GetWeightsTexture(),
│ │ │ │ +
521 stencilTable->GetDuWeightsTexture(),
│ │ │ │ +
522 stencilTable->GetDvWeightsTexture(),
│ │ │ │ +
523 /* start = */ 0,
│ │ │ │ +
524 /* end = */ stencilTable->GetNumStencils());
│ │ │ │ +
525 }
│ │ │ │ +
│ │ │ │ +
526
│ │ │ │ +
574 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
576 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
577 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
578 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
579 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
580 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ +
581 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ +
582 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ +
583 STENCIL_TABLE const *stencilTable) const {
│ │ │ │ +
584
│ │ │ │ +
585 return EvalStencils(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ +
586 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ +
587 duBuffer->BindVBO(), duDesc,
│ │ │ │ +
588 dvBuffer->BindVBO(), dvDesc,
│ │ │ │ +
589 duuBuffer->BindVBO(), duuDesc,
│ │ │ │ +
590 duvBuffer->BindVBO(), duvDesc,
│ │ │ │ +
591 dvvBuffer->BindVBO(), dvvDesc,
│ │ │ │ +
592 stencilTable->GetSizesTexture(),
│ │ │ │ +
593 stencilTable->GetOffsetsTexture(),
│ │ │ │ +
594 stencilTable->GetIndicesTexture(),
│ │ │ │ +
595 stencilTable->GetWeightsTexture(),
│ │ │ │ +
596 stencilTable->GetDuWeightsTexture(),
│ │ │ │ +
597 stencilTable->GetDvWeightsTexture(),
│ │ │ │ +
598 stencilTable->GetDuuWeightsTexture(),
│ │ │ │ +
599 stencilTable->GetDuvWeightsTexture(),
│ │ │ │ +
600 stencilTable->GetDvvWeightsTexture(),
│ │ │ │ +
601 /* start = */ 0,
│ │ │ │ +
602 /* end = */ stencilTable->GetNumStencils());
│ │ │ │ +
603 }
│ │ │ │ +
│ │ │ │ +
604
│ │ │ │ +
640 bool EvalStencils(GLuint srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
641 GLuint dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
642 GLuint duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
643 GLuint dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
644 GLuint sizesBuffer,
│ │ │ │ +
645 GLuint offsetsBuffer,
│ │ │ │ +
646 GLuint indicesBuffer,
│ │ │ │ +
647 GLuint weightsBuffer,
│ │ │ │ +
648 GLuint duWeightsBuffer,
│ │ │ │ +
649 GLuint dvWeightsBuffer,
│ │ │ │ +
650 int start,
│ │ │ │ +
651 int end) const;
│ │ │ │ +
652
│ │ │ │ +
706 bool EvalStencils(GLuint srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
707 GLuint dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
708 GLuint duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
709 GLuint dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
710 GLuint duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ +
711 GLuint duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ +
712 GLuint dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ +
713 GLuint sizesBuffer,
│ │ │ │ +
714 GLuint offsetsBuffer,
│ │ │ │ +
715 GLuint indicesBuffer,
│ │ │ │ +
716 GLuint weightsBuffer,
│ │ │ │ +
717 GLuint duWeightsBuffer,
│ │ │ │ +
718 GLuint dvWeightsBuffer,
│ │ │ │ +
719 GLuint duuWeightsBuffer,
│ │ │ │ +
720 GLuint duvWeightsBuffer,
│ │ │ │ +
721 GLuint dvvWeightsBuffer,
│ │ │ │ +
722 int start,
│ │ │ │ +
723 int end) const;
│ │ │ │ +
724
│ │ │ │ +
730
│ │ │ │ +
763 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
764 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ +
765 static bool EvalPatches(
│ │ │ │ +
766 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
767 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
768 int numPatchCoords,
│ │ │ │ +
769 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
770 PATCH_TABLE *patchTable,
│ │ │ │ +
771 GLXFBEvaluator const *instance,
│ │ │ │ +
772 void * deviceContext = NULL) {
│ │ │ │ +
773
│ │ │ │ +
774 if (instance) {
│ │ │ │ +
775 return instance->EvalPatches(srcBuffer, srcDesc,
│ │ │ │ +
776 dstBuffer, dstDesc,
│ │ │ │ +
777 numPatchCoords, patchCoords,
│ │ │ │ +
778 patchTable);
│ │ │ │ +
779 } else {
│ │ │ │ +
780 // Create an instance on demand (slow)
│ │ │ │ +
781 (void)deviceContext; // unused
│ │ │ │ +
782 instance = Create(srcDesc, dstDesc,
│ │ │ │ + │ │ │ │ + │ │ │ │ +
785 if (instance) {
│ │ │ │ +
786 bool r = instance->EvalPatches(srcBuffer, srcDesc,
│ │ │ │ +
787 dstBuffer, dstDesc,
│ │ │ │ +
788 numPatchCoords, patchCoords,
│ │ │ │ +
789 patchTable);
│ │ │ │ +
790 delete instance;
│ │ │ │ +
791 return r;
│ │ │ │ +
792 }
│ │ │ │ +
793 return false;
│ │ │ │ +
794 }
│ │ │ │ +
795 }
│ │ │ │ +
│ │ │ │ +
796
│ │ │ │ +
841 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
842 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ +
843 static bool EvalPatches(
│ │ │ │ +
844 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
845 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
846 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
847 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
848 int numPatchCoords,
│ │ │ │ +
849 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
850 PATCH_TABLE *patchTable,
│ │ │ │ +
851 GLXFBEvaluator const *instance,
│ │ │ │ +
852 void * deviceContext = NULL) {
│ │ │ │ +
853
│ │ │ │ +
854 if (instance) {
│ │ │ │ +
855 return instance->EvalPatches(srcBuffer, srcDesc,
│ │ │ │ +
856 dstBuffer, dstDesc,
│ │ │ │ +
857 duBuffer, duDesc,
│ │ │ │ +
858 dvBuffer, dvDesc,
│ │ │ │ +
859 numPatchCoords, patchCoords,
│ │ │ │ +
860 patchTable);
│ │ │ │ +
861 } else {
│ │ │ │ +
862 // Create an instance on demand (slow)
│ │ │ │ +
863 (void)deviceContext; // unused
│ │ │ │ +
864 instance = Create(srcDesc, dstDesc, duDesc, dvDesc);
│ │ │ │ +
865 if (instance) {
│ │ │ │ +
866 bool r = instance->EvalPatches(srcBuffer, srcDesc,
│ │ │ │ +
867 dstBuffer, dstDesc,
│ │ │ │ +
868 duBuffer, duDesc,
│ │ │ │ +
869 dvBuffer, dvDesc,
│ │ │ │ +
870 numPatchCoords, patchCoords,
│ │ │ │ +
871 patchTable);
│ │ │ │ +
872 delete instance;
│ │ │ │ +
873 return r;
│ │ │ │ +
874 }
│ │ │ │ +
875 return false;
│ │ │ │ +
876 }
│ │ │ │ +
877 }
│ │ │ │ +
│ │ │ │ +
878
│ │ │ │ +
941 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
942 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ +
943 static bool EvalPatches(
│ │ │ │ +
944 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
945 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
946 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
947 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
948 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ +
949 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ +
950 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ +
951 int numPatchCoords,
│ │ │ │ +
952 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
953 PATCH_TABLE *patchTable,
│ │ │ │ +
954 GLXFBEvaluator const *instance,
│ │ │ │ +
955 void * deviceContext = NULL) {
│ │ │ │ +
956
│ │ │ │ +
957 if (instance) {
│ │ │ │ +
958 return instance->EvalPatches(srcBuffer, srcDesc,
│ │ │ │ +
959 dstBuffer, dstDesc,
│ │ │ │ +
960 duBuffer, duDesc,
│ │ │ │ +
961 dvBuffer, dvDesc,
│ │ │ │ +
962 duuBuffer, duuDesc,
│ │ │ │ +
963 duvBuffer, duvDesc,
│ │ │ │ +
964 dvvBuffer, dvvDesc,
│ │ │ │ +
965 numPatchCoords, patchCoords,
│ │ │ │ +
966 patchTable);
│ │ │ │ +
967 } else {
│ │ │ │ +
968 // Create an instance on demand (slow)
│ │ │ │ +
969 (void)deviceContext; // unused
│ │ │ │ +
970 instance = Create(srcDesc, dstDesc,
│ │ │ │ +
971 duDesc, dvDesc,
│ │ │ │ +
972 duuDesc, duvDesc, dvvDesc);
│ │ │ │ +
973 if (instance) {
│ │ │ │ +
974 bool r = instance->EvalPatches(srcBuffer, srcDesc,
│ │ │ │ +
975 dstBuffer, dstDesc,
│ │ │ │ +
976 duBuffer, duDesc,
│ │ │ │ +
977 dvBuffer, dvDesc,
│ │ │ │ +
978 duuBuffer, duuDesc,
│ │ │ │ +
979 duvBuffer, duvDesc,
│ │ │ │ +
980 dvvBuffer, dvvDesc,
│ │ │ │ +
981 numPatchCoords, patchCoords,
│ │ │ │ +
982 patchTable);
│ │ │ │ +
983 delete instance;
│ │ │ │ +
984 return r;
│ │ │ │ +
985 }
│ │ │ │ +
986 return false;
│ │ │ │ +
987 }
│ │ │ │ +
988 }
│ │ │ │ +
│ │ │ │ +
989
│ │ │ │ +
1014 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1015 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1017 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1018 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1019 int numPatchCoords,
│ │ │ │ +
1020 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1021 PATCH_TABLE *patchTable) const {
│ │ │ │ +
1022
│ │ │ │ +
1023 return EvalPatches(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ +
1024 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ +
1025 0, BufferDescriptor(),
│ │ │ │ +
1026 0, BufferDescriptor(),
│ │ │ │ +
1027 numPatchCoords,
│ │ │ │ +
1028 patchCoords->BindVBO(),
│ │ │ │ +
1029 patchTable->GetPatchArrays(),
│ │ │ │ +
1030 patchTable->GetPatchIndexTextureBuffer(),
│ │ │ │ +
1031 patchTable->GetPatchParamTextureBuffer());
│ │ │ │ +
1032 }
│ │ │ │ +
│ │ │ │ +
1033
│ │ │ │ +
1068 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1069 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1071 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1072 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1073 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
1074 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
1075 int numPatchCoords,
│ │ │ │ +
1076 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1077 PATCH_TABLE *patchTable) const {
│ │ │ │ +
1078
│ │ │ │ +
1079 return EvalPatches(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ +
1080 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ +
1081 duBuffer->BindVBO(), duDesc,
│ │ │ │ +
1082 dvBuffer->BindVBO(), dvDesc,
│ │ │ │ +
1083 numPatchCoords,
│ │ │ │ +
1084 patchCoords->BindVBO(),
│ │ │ │ +
1085 patchTable->GetPatchArrays(),
│ │ │ │ +
1086 patchTable->GetPatchIndexTextureBuffer(),
│ │ │ │ +
1087 patchTable->GetPatchParamTextureBuffer());
│ │ │ │ +
1088 }
│ │ │ │ +
│ │ │ │ +
1089
│ │ │ │ +
1142 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1143 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1145 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1146 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1147 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
1148 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
1149 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ +
1150 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ +
1151 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ +
1152 int numPatchCoords,
│ │ │ │ +
1153 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1154 PATCH_TABLE *patchTable) const {
│ │ │ │ +
1155
│ │ │ │ +
1156 return EvalPatches(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ +
1157 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ +
1158 duBuffer->BindVBO(), duDesc,
│ │ │ │ +
1159 dvBuffer->BindVBO(), dvDesc,
│ │ │ │ +
1160 duuBuffer->BindVBO(), duuDesc,
│ │ │ │ +
1161 duvBuffer->BindVBO(), duvDesc,
│ │ │ │ +
1162 dvvBuffer->BindVBO(), dvvDesc,
│ │ │ │ +
1163 numPatchCoords,
│ │ │ │ +
1164 patchCoords->BindVBO(),
│ │ │ │ +
1165 patchTable->GetPatchArrays(),
│ │ │ │ +
1166 patchTable->GetPatchIndexTextureBuffer(),
│ │ │ │ +
1167 patchTable->GetPatchParamTextureBuffer());
│ │ │ │ +
1168 }
│ │ │ │ +
│ │ │ │ +
1169
│ │ │ │ +
1170 bool EvalPatches(GLuint srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1171 GLuint dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1172 GLuint duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
1173 GLuint dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
1174 int numPatchCoords,
│ │ │ │ +
1175 GLuint patchCoordsBuffer,
│ │ │ │ +
1176 const PatchArrayVector &patchArrays,
│ │ │ │ +
1177 GLuint patchIndexBuffer,
│ │ │ │ +
1178 GLuint patchParamsBuffer) const;
│ │ │ │ +
1179
│ │ │ │ +
1180 bool EvalPatches(GLuint srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1181 GLuint dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1182 GLuint duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
1183 GLuint dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
1184 GLuint duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ +
1185 GLuint duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ +
1186 GLuint dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ +
1187 int numPatchCoords,
│ │ │ │ +
1188 GLuint patchCoordsBuffer,
│ │ │ │ +
1189 const PatchArrayVector &patchArrays,
│ │ │ │ +
1190 GLuint patchIndexBuffer,
│ │ │ │ +
1191 GLuint patchParamsBuffer) const;
│ │ │ │ +
1192
│ │ │ │ +
1225 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1226 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1228 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1229 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1230 int numPatchCoords,
│ │ │ │ +
1231 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1232 PATCH_TABLE *patchTable,
│ │ │ │ +
1233 GLXFBEvaluator const *instance,
│ │ │ │ +
1234 void * deviceContext = NULL) {
│ │ │ │ +
1235
│ │ │ │ +
1236 if (instance) {
│ │ │ │ +
1237 return instance->EvalPatchesVarying(
│ │ │ │ +
1238 srcBuffer, srcDesc,
│ │ │ │ +
1239 dstBuffer, dstDesc,
│ │ │ │ +
1240 numPatchCoords, patchCoords,
│ │ │ │ +
1241 patchTable);
│ │ │ │ +
1242 } else {
│ │ │ │ +
1243 // Create an instance on demand (slow)
│ │ │ │ +
1244 (void)deviceContext; // unused
│ │ │ │ +
1245 instance = Create(srcDesc, dstDesc,
│ │ │ │ + │ │ │ │ + │ │ │ │ +
1248 if (instance) {
│ │ │ │ +
1249 bool r = instance->EvalPatchesVarying(
│ │ │ │ +
1250 srcBuffer, srcDesc,
│ │ │ │ +
1251 dstBuffer, dstDesc,
│ │ │ │ +
1252 numPatchCoords, patchCoords,
│ │ │ │ +
1253 patchTable);
│ │ │ │ +
1254 delete instance;
│ │ │ │ +
1255 return r;
│ │ │ │ +
1256 }
│ │ │ │ +
1257 return false;
│ │ │ │ +
1258 }
│ │ │ │ +
1259 }
│ │ │ │ +
│ │ │ │ +
1260
│ │ │ │ +
1285 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1286 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1288 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1289 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1290 int numPatchCoords,
│ │ │ │ +
1291 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1292 PATCH_TABLE *patchTable) const {
│ │ │ │ +
1293
│ │ │ │ +
1294 return EvalPatches(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ +
1295 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ +
1296 0, BufferDescriptor(),
│ │ │ │ +
1297 0, BufferDescriptor(),
│ │ │ │ +
1298 numPatchCoords,
│ │ │ │ +
1299 patchCoords->BindVBO(),
│ │ │ │ +
1300 patchTable->GetVaryingPatchArrays(),
│ │ │ │ +
1301 patchTable->GetVaryingPatchIndexTextureBuffer(),
│ │ │ │ +
1302 patchTable->GetPatchParamTextureBuffer());
│ │ │ │ +
1303 }
│ │ │ │ +
│ │ │ │ +
1304
│ │ │ │ +
1349 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1350 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1352 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1353 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1354 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
1355 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
1356 int numPatchCoords,
│ │ │ │ +
1357 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1358 PATCH_TABLE *patchTable,
│ │ │ │ +
1359 GLXFBEvaluator const *instance,
│ │ │ │ +
1360 void * deviceContext = NULL) {
│ │ │ │ +
1361
│ │ │ │ +
1362 if (instance) {
│ │ │ │ +
1363 return instance->EvalPatchesVarying(
│ │ │ │ +
1364 srcBuffer, srcDesc,
│ │ │ │ +
1365 dstBuffer, dstDesc,
│ │ │ │ +
1366 duBuffer, duDesc,
│ │ │ │ +
1367 dvBuffer, dvDesc,
│ │ │ │ +
1368 numPatchCoords, patchCoords,
│ │ │ │ +
1369 patchTable);
│ │ │ │ +
1370 } else {
│ │ │ │ +
1371 // Create an instance on demand (slow)
│ │ │ │ +
1372 (void)deviceContext; // unused
│ │ │ │ +
1373 instance = Create(srcDesc, dstDesc,
│ │ │ │ +
1374 duDesc, dvDesc);
│ │ │ │ +
1375 if (instance) {
│ │ │ │ +
1376 bool r = instance->EvalPatchesVarying(
│ │ │ │ +
1377 srcBuffer, srcDesc,
│ │ │ │ +
1378 dstBuffer, dstDesc,
│ │ │ │ +
1379 duBuffer, duDesc,
│ │ │ │ +
1380 dvBuffer, dvDesc,
│ │ │ │ +
1381 numPatchCoords, patchCoords,
│ │ │ │ +
1382 patchTable);
│ │ │ │ +
1383 delete instance;
│ │ │ │ +
1384 return r;
│ │ │ │ +
1385 }
│ │ │ │ +
1386 return false;
│ │ │ │ +
1387 }
│ │ │ │ +
1388 }
│ │ │ │ +
│ │ │ │ +
1389
│ │ │ │ +
1426 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1427 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1429 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1430 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1431 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
1432 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
1433 int numPatchCoords,
│ │ │ │ +
1434 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1435 PATCH_TABLE *patchTable) const {
│ │ │ │ +
1436
│ │ │ │ +
1437 return EvalPatches(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ +
1438 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ +
1439 duBuffer->BindVBO(), duDesc,
│ │ │ │ +
1440 dvBuffer->BindVBO(), dvDesc,
│ │ │ │ +
1441 numPatchCoords,
│ │ │ │ +
1442 patchCoords->BindVBO(),
│ │ │ │ +
1443 patchTable->GetVaryingPatchArrays(),
│ │ │ │ +
1444 patchTable->GetVaryingPatchIndexTextureBuffer(),
│ │ │ │ +
1445 patchTable->GetPatchParamTextureBuffer());
│ │ │ │ +
1446 }
│ │ │ │ +
│ │ │ │ +
1447
│ │ │ │ +
1510 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1511 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1513 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1514 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1515 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
1516 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
1517 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ +
1518 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ +
1519 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ +
1520 int numPatchCoords,
│ │ │ │ +
1521 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1522 PATCH_TABLE *patchTable,
│ │ │ │ +
1523 GLXFBEvaluator const *instance,
│ │ │ │ +
1524 void * deviceContext = NULL) {
│ │ │ │ +
1525
│ │ │ │ +
1526 if (instance) {
│ │ │ │ +
1527 return instance->EvalPatchesVarying(
│ │ │ │ +
1528 srcBuffer, srcDesc,
│ │ │ │ +
1529 dstBuffer, dstDesc,
│ │ │ │ +
1530 duBuffer, duDesc,
│ │ │ │ +
1531 dvBuffer, dvDesc,
│ │ │ │ +
1532 duuBuffer, duuDesc,
│ │ │ │ +
1533 duvBuffer, duvDesc,
│ │ │ │ +
1534 dvvBuffer, dvvDesc,
│ │ │ │ +
1535 numPatchCoords, patchCoords,
│ │ │ │ +
1536 patchTable);
│ │ │ │ +
1537 } else {
│ │ │ │ +
1538 // Create an instance on demand (slow)
│ │ │ │ +
1539 (void)deviceContext; // unused
│ │ │ │ +
1540 instance = Create(srcDesc, dstDesc,
│ │ │ │ +
1541 duDesc, dvDesc,
│ │ │ │ +
1542 duuDesc, duvDesc, dvvDesc);
│ │ │ │ +
1543 if (instance) {
│ │ │ │ +
1544 bool r = instance->EvalPatchesVarying(
│ │ │ │ +
1545 srcBuffer, srcDesc,
│ │ │ │ +
1546 dstBuffer, dstDesc,
│ │ │ │ +
1547 duBuffer, duDesc,
│ │ │ │ +
1548 dvBuffer, dvDesc,
│ │ │ │ +
1549 duuBuffer, duuDesc,
│ │ │ │ +
1550 duvBuffer, duvDesc,
│ │ │ │ +
1551 dvvBuffer, dvvDesc,
│ │ │ │ +
1552 numPatchCoords, patchCoords,
│ │ │ │ +
1553 patchTable);
│ │ │ │ +
1554 delete instance;
│ │ │ │ +
1555 return r;
│ │ │ │ +
1556 }
│ │ │ │ +
1557 return false;
│ │ │ │ +
1558 }
│ │ │ │ +
1559 }
│ │ │ │ +
│ │ │ │ +
1560
│ │ │ │ +
1615 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1616 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1618 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1619 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1620 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
1621 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
1622 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ +
1623 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ +
1624 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ +
1625 int numPatchCoords,
│ │ │ │ +
1626 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1627 PATCH_TABLE *patchTable) const {
│ │ │ │ +
1628
│ │ │ │ +
1629 return EvalPatches(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ +
1630 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ +
1631 duBuffer->BindVBO(), duDesc,
│ │ │ │ +
1632 dvBuffer->BindVBO(), dvDesc,
│ │ │ │ +
1633 duuBuffer->BindVBO(), duuDesc,
│ │ │ │ +
1634 duvBuffer->BindVBO(), duvDesc,
│ │ │ │ +
1635 dvvBuffer->BindVBO(), dvvDesc,
│ │ │ │ +
1636 numPatchCoords,
│ │ │ │ +
1637 patchCoords->BindVBO(),
│ │ │ │ +
1638 patchTable->GetVaryingPatchArrays(),
│ │ │ │ +
1639 patchTable->GetVaryingPatchIndexTextureBuffer(),
│ │ │ │ +
1640 patchTable->GetPatchParamTextureBuffer());
│ │ │ │ +
1641 }
│ │ │ │ +
│ │ │ │ +
1642
│ │ │ │ +
1677 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1678 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1680 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1681 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1682 int numPatchCoords,
│ │ │ │ +
1683 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1684 PATCH_TABLE *patchTable,
│ │ │ │ +
1685 int fvarChannel,
│ │ │ │ +
1686 GLXFBEvaluator const *instance,
│ │ │ │ +
1687 void * deviceContext = NULL) {
│ │ │ │ +
1688
│ │ │ │ +
1689 if (instance) {
│ │ │ │ +
1690 return instance->EvalPatchesFaceVarying(
│ │ │ │ +
1691 srcBuffer, srcDesc,
│ │ │ │ +
1692 dstBuffer, dstDesc,
│ │ │ │ +
1693 numPatchCoords, patchCoords,
│ │ │ │ +
1694 patchTable, fvarChannel);
│ │ │ │ +
1695 } else {
│ │ │ │ +
1696 // Create an instance on demand (slow)
│ │ │ │ +
1697 (void)deviceContext; // unused
│ │ │ │ +
1698 instance = Create(srcDesc, dstDesc,
│ │ │ │ + │ │ │ │ + │ │ │ │ +
1701 if (instance) {
│ │ │ │ +
1702 bool r = instance->EvalPatchesFaceVarying(
│ │ │ │ +
1703 srcBuffer, srcDesc,
│ │ │ │ +
1704 dstBuffer, dstDesc,
│ │ │ │ +
1705 numPatchCoords, patchCoords,
│ │ │ │ +
1706 patchTable, fvarChannel);
│ │ │ │ +
1707 delete instance;
│ │ │ │ +
1708 return r;
│ │ │ │ +
1709 }
│ │ │ │ +
1710 return false;
│ │ │ │ +
1711 }
│ │ │ │ +
1712 }
│ │ │ │ +
│ │ │ │ +
1713
│ │ │ │ +
1740 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1741 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1743 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1744 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1745 int numPatchCoords,
│ │ │ │ +
1746 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1747 PATCH_TABLE *patchTable,
│ │ │ │ +
1748 int fvarChannel = 0) const {
│ │ │ │ +
1749
│ │ │ │ +
1750 return EvalPatches(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ +
1751 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ +
1752 0, BufferDescriptor(),
│ │ │ │ +
1753 0, BufferDescriptor(),
│ │ │ │ +
1754 numPatchCoords,
│ │ │ │ +
1755 patchCoords->BindVBO(),
│ │ │ │ +
1756 patchTable->GetFVarPatchArrays(fvarChannel),
│ │ │ │ +
1757 patchTable->GetFVarPatchIndexTextureBuffer(fvarChannel),
│ │ │ │ +
1758 patchTable->GetFVarPatchParamTextureBuffer(fvarChannel));
│ │ │ │ +
1759 }
│ │ │ │ +
│ │ │ │ +
1760
│ │ │ │ +
1807 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1808 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1810 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1811 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1812 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
1813 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
1814 int numPatchCoords,
│ │ │ │ +
1815 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1816 PATCH_TABLE *patchTable,
│ │ │ │ +
1817 int fvarChannel,
│ │ │ │ +
1818 GLXFBEvaluator const *instance,
│ │ │ │ +
1819 void * deviceContext = NULL) {
│ │ │ │ +
1820
│ │ │ │ +
1821 if (instance) {
│ │ │ │ +
1822 return instance->EvalPatchesFaceVarying(
│ │ │ │ +
1823 srcBuffer, srcDesc,
│ │ │ │ +
1824 dstBuffer, dstDesc,
│ │ │ │ +
1825 duBuffer, duDesc,
│ │ │ │ +
1826 dvBuffer, dvDesc,
│ │ │ │ +
1827 numPatchCoords, patchCoords,
│ │ │ │ +
1828 patchTable, fvarChannel);
│ │ │ │ +
1829 } else {
│ │ │ │ +
1830 // Create an instance on demand (slow)
│ │ │ │ +
1831 (void)deviceContext; // unused
│ │ │ │ +
1832 instance = Create(srcDesc, dstDesc,
│ │ │ │ +
1833 duDesc, dvDesc);
│ │ │ │ +
1834 if (instance) {
│ │ │ │ +
1835 bool r = instance->EvalPatchesFaceVarying(
│ │ │ │ +
1836 srcBuffer, srcDesc,
│ │ │ │ +
1837 dstBuffer, dstDesc,
│ │ │ │ +
1838 duBuffer, duDesc,
│ │ │ │ +
1839 dvBuffer, dvDesc,
│ │ │ │ +
1840 numPatchCoords, patchCoords,
│ │ │ │ +
1841 patchTable, fvarChannel);
│ │ │ │ +
1842 delete instance;
│ │ │ │ +
1843 return r;
│ │ │ │ +
1844 }
│ │ │ │ +
1845 return false;
│ │ │ │ +
1846 }
│ │ │ │ +
1847 }
│ │ │ │ +
│ │ │ │ +
1848
│ │ │ │ +
1887 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1888 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1890 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1891 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1892 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
1893 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
1894 int numPatchCoords,
│ │ │ │ +
1895 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1896 PATCH_TABLE *patchTable,
│ │ │ │ +
1897 int fvarChannel = 0) const {
│ │ │ │ +
1898
│ │ │ │ +
1899 return EvalPatches(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ +
1900 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ +
1901 duBuffer->BindVBO(), duDesc,
│ │ │ │ +
1902 dvBuffer->BindVBO(), dvDesc,
│ │ │ │ +
1903 numPatchCoords,
│ │ │ │ +
1904 patchCoords->BindVBO(),
│ │ │ │ +
1905 patchTable->GetFVarPatchArrays(fvarChannel),
│ │ │ │ +
1906 patchTable->GetFVarPatchIndexTextureBuffer(fvarChannel),
│ │ │ │ +
1907 patchTable->GetFVarPatchParamTextureBuffer(fvarChannel));
│ │ │ │ +
1908 }
│ │ │ │ +
│ │ │ │ +
1909
│ │ │ │ +
1974 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1975 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1977 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1978 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1979 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
1980 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
1981 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ +
1982 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ +
1983 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ +
1984 int numPatchCoords,
│ │ │ │ +
1985 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1986 PATCH_TABLE *patchTable,
│ │ │ │ +
1987 int fvarChannel,
│ │ │ │ +
1988 GLXFBEvaluator const *instance,
│ │ │ │ +
1989 void * deviceContext = NULL) {
│ │ │ │ +
1990
│ │ │ │ +
1991 if (instance) {
│ │ │ │ +
1992 return instance->EvalPatchesFaceVarying(
│ │ │ │ +
1993 srcBuffer, srcDesc,
│ │ │ │ +
1994 dstBuffer, dstDesc,
│ │ │ │ +
1995 duBuffer, duDesc,
│ │ │ │ +
1996 dvBuffer, dvDesc,
│ │ │ │ +
1997 duuBuffer, duuDesc,
│ │ │ │ +
1998 duvBuffer, duvDesc,
│ │ │ │ +
1999 dvvBuffer, dvvDesc,
│ │ │ │ +
2000 numPatchCoords, patchCoords,
│ │ │ │ +
2001 patchTable, fvarChannel);
│ │ │ │ +
2002 } else {
│ │ │ │ +
2003 // Create an instance on demand (slow)
│ │ │ │ +
2004 (void)deviceContext; // unused
│ │ │ │ +
2005 instance = Create(srcDesc, dstDesc,
│ │ │ │ +
2006 duDesc, dvDesc,
│ │ │ │ +
2007 duuDesc, duvDesc, dvvDesc);
│ │ │ │ +
2008 if (instance) {
│ │ │ │ +
2009 bool r = instance->EvalPatchesFaceVarying(
│ │ │ │ +
2010 srcBuffer, srcDesc,
│ │ │ │ +
2011 dstBuffer, dstDesc,
│ │ │ │ +
2012 duBuffer, duDesc,
│ │ │ │ +
2013 dvBuffer, dvDesc,
│ │ │ │ +
2014 duuBuffer, duuDesc,
│ │ │ │ +
2015 duvBuffer, duvDesc,
│ │ │ │ +
2016 dvvBuffer, dvvDesc,
│ │ │ │ +
2017 numPatchCoords, patchCoords,
│ │ │ │ +
2018 patchTable, fvarChannel);
│ │ │ │ +
2019 delete instance;
│ │ │ │ +
2020 return r;
│ │ │ │ +
2021 }
│ │ │ │ +
2022 return false;
│ │ │ │ +
2023 }
│ │ │ │ +
2024 }
│ │ │ │ +
│ │ │ │ +
2025
│ │ │ │ +
2082 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
2083 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
2085 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
2086 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
2087 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
2088 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
2089 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ +
2090 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ +
2091 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ +
2092 int numPatchCoords,
│ │ │ │ +
2093 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
2094 PATCH_TABLE *patchTable,
│ │ │ │ +
2095 int fvarChannel = 0) const {
│ │ │ │ +
2096
│ │ │ │ +
2097 return EvalPatches(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ +
2098 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ +
2099 duBuffer->BindVBO(), duDesc,
│ │ │ │ +
2100 dvBuffer->BindVBO(), dvDesc,
│ │ │ │ +
2101 duuBuffer->BindVBO(), duuDesc,
│ │ │ │ +
2102 duvBuffer->BindVBO(), duvDesc,
│ │ │ │ +
2103 dvvBuffer->BindVBO(), dvvDesc,
│ │ │ │ +
2104 numPatchCoords,
│ │ │ │ +
2105 patchCoords->BindVBO(),
│ │ │ │ +
2106 patchTable->GetFVarPatchArrays(fvarChannel),
│ │ │ │ +
2107 patchTable->GetFVarPatchIndexTextureBuffer(fvarChannel),
│ │ │ │ +
2108 patchTable->GetFVarPatchParamTextureBuffer(fvarChannel));
│ │ │ │ +
2109 }
│ │ │ │ +
│ │ │ │ +
2110
│ │ │ │ +
2116
│ │ │ │ +
2119 bool Compile(BufferDescriptor const &srcDesc,
│ │ │ │ +
2120 BufferDescriptor const &dstDesc,
│ │ │ │ +
2121 BufferDescriptor const &duDesc = BufferDescriptor(),
│ │ │ │ +
2122 BufferDescriptor const &dvDesc = BufferDescriptor(),
│ │ │ │ +
2123 BufferDescriptor const &duuDesc = BufferDescriptor(),
│ │ │ │ +
2124 BufferDescriptor const &duvDesc = BufferDescriptor(),
│ │ │ │ +
2125 BufferDescriptor const &dvvDesc = BufferDescriptor());
│ │ │ │ +
2126
│ │ │ │ +
2128 static void Synchronize(void *kernel);
│ │ │ │ +
2129
│ │ │ │ +
2130private:
│ │ │ │ +
2131 GLuint _srcBufferTexture;
│ │ │ │ +
2132 GLuint _patchArraysUBO;
│ │ │ │ +
2133 bool _interleavedDerivativeBuffers;
│ │ │ │ +
2134
│ │ │ │ +
2135 struct _StencilKernel {
│ │ │ │ +
2136 _StencilKernel();
│ │ │ │ +
2137 ~_StencilKernel();
│ │ │ │ +
2138 bool Compile(BufferDescriptor const &srcDesc,
│ │ │ │ +
2139 BufferDescriptor const &dstDesc,
│ │ │ │ +
2140 BufferDescriptor const &duDesc,
│ │ │ │ +
2141 BufferDescriptor const &dvDesc,
│ │ │ │ +
2142 BufferDescriptor const &duuDesc,
│ │ │ │ +
2143 BufferDescriptor const &duvDesc,
│ │ │ │ +
2144 BufferDescriptor const &dvvDesc,
│ │ │ │ +
2145 bool interleavedDerivativeBuffers);
│ │ │ │ +
2146 GLuint program;
│ │ │ │ +
2147 GLint uniformSrcBufferTexture;
│ │ │ │ +
2148 GLint uniformSrcOffset; // src buffer offset (in elements)
│ │ │ │ +
2149
│ │ │ │ +
2150 GLint uniformSizesTexture;
│ │ │ │ +
2151 GLint uniformOffsetsTexture;
│ │ │ │ +
2152 GLint uniformIndicesTexture;
│ │ │ │ +
2153 GLint uniformWeightsTexture;
│ │ │ │ +
2154 GLint uniformDuWeightsTexture;
│ │ │ │ +
2155 GLint uniformDvWeightsTexture;
│ │ │ │ +
2156 GLint uniformDuuWeightsTexture;
│ │ │ │ +
2157 GLint uniformDuvWeightsTexture;
│ │ │ │ +
2158 GLint uniformDvvWeightsTexture;
│ │ │ │ +
2159 GLint uniformStart; // range
│ │ │ │ +
2160 GLint uniformEnd;
│ │ │ │ +
2161 } _stencilKernel;
│ │ │ │ +
2162
│ │ │ │ +
2163 struct _PatchKernel {
│ │ │ │ +
2164 _PatchKernel();
│ │ │ │ +
2165 ~_PatchKernel();
│ │ │ │ +
2166 bool Compile(BufferDescriptor const &srcDesc,
│ │ │ │ +
2167 BufferDescriptor const &dstDesc,
│ │ │ │ +
2168 BufferDescriptor const &duDesc,
│ │ │ │ +
2169 BufferDescriptor const &dvDesc,
│ │ │ │ +
2170 BufferDescriptor const &duuDesc,
│ │ │ │ +
2171 BufferDescriptor const &duvDesc,
│ │ │ │ +
2172 BufferDescriptor const &dvvDesc,
│ │ │ │ +
2173 bool interleavedDerivativeBuffers);
│ │ │ │ +
2174 GLuint program;
│ │ │ │ +
2175 GLint uniformSrcBufferTexture;
│ │ │ │ +
2176 GLint uniformSrcOffset; // src buffer offset (in elements)
│ │ │ │ +
2177
│ │ │ │ +
2178 GLint uniformPatchArraysUBOBinding;
│ │ │ │ +
2179 GLint uniformPatchParamTexture;
│ │ │ │ +
2180 GLint uniformPatchIndexTexture;
│ │ │ │ +
2181 } _patchKernel;
│ │ │ │ +
2182
│ │ │ │ +
2183};
│ │ │ │ +
│ │ │ │ +
2184
│ │ │ │ +
2185} // end namespace Osd
│ │ │ │ +
2186
│ │ │ │ +
2187} // end namespace OPENSUBDIV_VERSION
│ │ │ │ +
2188using namespace OPENSUBDIV_VERSION;
│ │ │ │ +
2189
│ │ │ │ +
2190} // end namespace OpenSubdiv
│ │ │ │ +
2191
│ │ │ │ +
2192
│ │ │ │ +
2193#endif // OPENSUBDIV3_OSD_GL_XFB_EVALUATOR_H
│ │ │ │ │ │ │ │ -
Concrete vertex buffer class for Cpu subdivision and DirectX drawing.
│ │ │ │ -
static CpuD3D11VertexBuffer * Create(int numElements, int numVertices, ID3D11DeviceContext *deviceContext)
Creator. Returns NULL if error.
│ │ │ │ -
CpuD3D11VertexBuffer(int numElements, int numVertices)
Constructor.
│ │ │ │ -
int GetNumElements() const
Returns how many elements defined in this vertex buffer.
│ │ │ │ -
void UpdateData(const float *src, int startVertex, int numVertices, void *deviceContext=NULL)
│ │ │ │ -
int GetNumVertices() const
Returns how many vertices allocated in this vertex buffer.
│ │ │ │ -
ID3D11Buffer * BindD3D11Buffer(ID3D11DeviceContext *deviceContext)
Returns the D3D11 buffer object.
│ │ │ │ -
float * BindCpuBuffer()
Returns the address of CPU buffer.
│ │ │ │ - │ │ │ │ - │ │ │ │ -
ID3D11Buffer * BindVBO(ID3D11DeviceContext *deviceContext)
Returns the D3D11 buffer object (for Osd::Mesh interface)
│ │ │ │ +
std::vector< PatchArray > PatchArrayVector
Definition types.h:132
│ │ │ │ +
Stencil table class wrapping the template for compatibility.
│ │ │ │ +
Limit stencil table class wrapping the template for compatibility.
│ │ │ │ +
BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....
│ │ │ │ + │ │ │ │ + │ │ │ │ +
static GLStencilTableTBO * Create(Far::StencilTable const *stencilTable, void *deviceContext=NULL)
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
GLStencilTableTBO(Far::StencilTable const *stencilTable)
│ │ │ │ +
GLStencilTableTBO(Far::LimitStencilTable const *limitStencilTable)
│ │ │ │ + │ │ │ │ +
static GLStencilTableTBO * Create(Far::LimitStencilTable const *limitStencilTable, void *deviceContext=NULL)
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
static GLXFBEvaluator * Create(BufferDescriptor const &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, bool interleavedDerivativeBuffers=false)
│ │ │ │ +
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
Generic stencil function.
│ │ │ │ +
GLXFBEvaluator(bool interleavedDerivativeBuffers=false)
Constructor.
│ │ │ │ +
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
Generic stencil function.
│ │ │ │ + │ │ │ │ +
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
│ │ │ │ +
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)
Generic static stencil function. This function has a same signature as other device kernels have so t...
│ │ │ │ +
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
Generic limit eval function with derivatives. This function has a same signature as other device kern...
│ │ │ │ +
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)
│ │ │ │ +
static GLXFBEvaluator * Create(BufferDescriptor const &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, void *deviceContext)
Specialization to allow creation without a device context.
│ │ │ │ +
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)
Generic static stencil function. This function has a same signature as other device kernels have so t...
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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
Dispatch the GLSL XFB kernel on on GPU asynchronously returns false if the kernel hasn't been compile...
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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)
Generic creator template.
│ │ │ │ +
static GLXFBEvaluator * Create(BufferDescriptor const &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, DEVICE_CONTEXT deviceContext)
Generic creator template.
│ │ │ │ +
static void Synchronize(void *kernel)
Wait the dispatched kernel finishes.
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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
Generic limit eval function with derivatives. This function has a same signature as other device kern...
│ │ │ │ +
bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE const *stencilTable) const
Generic stencil function.
│ │ │ │ +
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
│ │ │ │ +
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)
Specialization to allow creation without a device context.
│ │ │ │ +
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
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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
Dispatch the GLSL XFB kernel on on GPU asynchronously returns false if the kernel hasn't been compile...
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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)
Generic static stencil function. This function has a same signature as other device kernels have so t...
│ │ │ │ +
~GLXFBEvaluator()
Destructor. note that the GL context must be made current.
│ │ │ │ +
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())
│ │ │ │ +
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
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ -cpuD3D11VertexBuffer.h │ │ │ │ │ +glXFBEvaluator.h │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// │ │ │ │ │ -2// Copyright 2013 Pixar │ │ │ │ │ +2// Copyright 2015 Pixar │ │ │ │ │ 3// │ │ │ │ │ 4// Licensed under the Apache License, Version 2.0 (the "Apache License") │ │ │ │ │ 5// with the following modification; you may not use this file except in │ │ │ │ │ 6// compliance with the Apache License and the following modification to it: │ │ │ │ │ 7// Section 6. Trademarks. is deleted and replaced with: │ │ │ │ │ 8// │ │ │ │ │ 9// 6. Trademarks. This License does not grant permission to use the trade │ │ │ │ │ @@ -24,105 +24,1448 @@ │ │ │ │ │ 18// Unless required by applicable law or agreed to in writing, software │ │ │ │ │ 19// distributed under the Apache License with the above modification is │ │ │ │ │ 20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY │ │ │ │ │ 21// KIND, either express or implied. See the Apache License for the specific │ │ │ │ │ 22// language governing permissions and limitations under the Apache License. │ │ │ │ │ 23// │ │ │ │ │ 24 │ │ │ │ │ -25#ifndef OPENSUBDIV3_OSD_CPU_D3D11_VERTEX_BUFFER_H │ │ │ │ │ -26#define OPENSUBDIV3_OSD_CPU_D3D11_VERTEX_BUFFER_H │ │ │ │ │ +25#ifndef OPENSUBDIV3_OSD_GL_XFB_EVALUATOR_H │ │ │ │ │ +26#define OPENSUBDIV3_OSD_GL_XFB_EVALUATOR_H │ │ │ │ │ 27 │ │ │ │ │ 28#include "../version.h" │ │ │ │ │ -29#include │ │ │ │ │ -30 │ │ │ │ │ -31struct ID3D11Buffer; │ │ │ │ │ -32struct ID3D11Device; │ │ │ │ │ -33struct ID3D11DeviceContext; │ │ │ │ │ -34 │ │ │ │ │ -35namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ -36namespace OPENSUBDIV_VERSION { │ │ │ │ │ -37 │ │ │ │ │ -38namespace Osd { │ │ │ │ │ -39 │ │ │ │ │ -_4_8class _C_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r { │ │ │ │ │ -49public: │ │ │ │ │ -_5_1 static _C_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r * _C_r_e_a_t_e(int numElements, int numVertices, │ │ │ │ │ -52 ID3D11DeviceContext *deviceContext); │ │ │ │ │ -53 │ │ │ │ │ -_5_5 virtual _~_C_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r(); │ │ │ │ │ -56 │ │ │ │ │ -_5_9 void _U_p_d_a_t_e_D_a_t_a(const float *src, int startVertex, int numVertices, │ │ │ │ │ -60 void *deviceContext = NULL); │ │ │ │ │ -61 │ │ │ │ │ -_6_3 int _G_e_t_N_u_m_E_l_e_m_e_n_t_s() const; │ │ │ │ │ -64 │ │ │ │ │ -_6_6 int _G_e_t_N_u_m_V_e_r_t_i_c_e_s() const; │ │ │ │ │ -67 │ │ │ │ │ -_6_9 float * _B_i_n_d_C_p_u_B_u_f_f_e_r(); │ │ │ │ │ +29 │ │ │ │ │ +30#include "../osd/opengl.h" │ │ │ │ │ +31#include "../osd/types.h" │ │ │ │ │ +32#include "../osd/bufferDescriptor.h" │ │ │ │ │ +33 │ │ │ │ │ +34namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ +35namespace OPENSUBDIV_VERSION { │ │ │ │ │ +36 │ │ │ │ │ +37namespace Far { │ │ │ │ │ +38 class PatchTable; │ │ │ │ │ +39 class StencilTable; │ │ │ │ │ +40 class LimitStencilTable; │ │ │ │ │ +41} │ │ │ │ │ +42 │ │ │ │ │ +43namespace Osd { │ │ │ │ │ +44 │ │ │ │ │ +_5_2class _G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O { │ │ │ │ │ +53public: │ │ │ │ │ +_5_4 static _G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O *_C_r_e_a_t_e( │ │ │ │ │ +55 _F_a_r_:_:_S_t_e_n_c_i_l_T_a_b_l_e const *stencilTable, void *deviceContext = NULL) { │ │ │ │ │ +56 (void)deviceContext; // unused │ │ │ │ │ +57 return new _G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O(stencilTable); │ │ │ │ │ +58 } │ │ │ │ │ +59 │ │ │ │ │ +_6_0 static _G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O *_C_r_e_a_t_e( │ │ │ │ │ +61 _F_a_r_:_:_L_i_m_i_t_S_t_e_n_c_i_l_T_a_b_l_e const *limitStencilTable, │ │ │ │ │ +62 void *deviceContext = NULL) { │ │ │ │ │ +63 (void)deviceContext; // unused │ │ │ │ │ +64 return new _G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O(limitStencilTable); │ │ │ │ │ +65 } │ │ │ │ │ +66 │ │ │ │ │ +_6_7 explicit _G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O(_F_a_r_:_:_S_t_e_n_c_i_l_T_a_b_l_e const *stencilTable); │ │ │ │ │ +_6_8 explicit _G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O(_F_a_r_:_:_L_i_m_i_t_S_t_e_n_c_i_l_T_a_b_l_e const *limitStencilTable); │ │ │ │ │ +_6_9 _~_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O(); │ │ │ │ │ 70 │ │ │ │ │ -_7_2 ID3D11Buffer *_B_i_n_d_D_3_D_1_1_B_u_f_f_e_r(ID3D11DeviceContext *deviceContext); │ │ │ │ │ -73 │ │ │ │ │ -_7_5 ID3D11Buffer *_B_i_n_d_V_B_O(ID3D11DeviceContext *deviceContext) { │ │ │ │ │ -76 return _B_i_n_d_D_3_D_1_1_B_u_f_f_e_r(deviceContext); │ │ │ │ │ -77 } │ │ │ │ │ -78 │ │ │ │ │ -79protected: │ │ │ │ │ -_8_1 _C_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r(int numElements, int numVertices); │ │ │ │ │ +71 // interfaces needed for GLSLTransformFeedbackKernel │ │ │ │ │ +_7_2 GLuint _G_e_t_S_i_z_e_s_T_e_x_t_u_r_e() const { return _sizes; } │ │ │ │ │ +_7_3 GLuint _G_e_t_O_f_f_s_e_t_s_T_e_x_t_u_r_e() const { return _offsets; } │ │ │ │ │ +_7_4 GLuint _G_e_t_I_n_d_i_c_e_s_T_e_x_t_u_r_e() const { return _indices; } │ │ │ │ │ +_7_5 GLuint _G_e_t_W_e_i_g_h_t_s_T_e_x_t_u_r_e() const { return _weights; } │ │ │ │ │ +_7_6 GLuint _G_e_t_D_u_W_e_i_g_h_t_s_T_e_x_t_u_r_e() const { return _duWeights; } │ │ │ │ │ +_7_7 GLuint _G_e_t_D_v_W_e_i_g_h_t_s_T_e_x_t_u_r_e() const { return _dvWeights; } │ │ │ │ │ +_7_8 GLuint _G_e_t_D_u_u_W_e_i_g_h_t_s_T_e_x_t_u_r_e() const { return _duuWeights; } │ │ │ │ │ +_7_9 GLuint _G_e_t_D_u_v_W_e_i_g_h_t_s_T_e_x_t_u_r_e() const { return _duvWeights; } │ │ │ │ │ +_8_0 GLuint _G_e_t_D_v_v_W_e_i_g_h_t_s_T_e_x_t_u_r_e() const { return _dvvWeights; } │ │ │ │ │ +_8_1 int _G_e_t_N_u_m_S_t_e_n_c_i_l_s() const { return _numStencils; } │ │ │ │ │ 82 │ │ │ │ │ -_8_3 bool _a_l_l_o_c_a_t_e(ID3D11Device *device); │ │ │ │ │ -84 │ │ │ │ │ -85private: │ │ │ │ │ -86 int _numElements; │ │ │ │ │ -87 int _numVertices; │ │ │ │ │ -88 ID3D11Buffer *_d3d11Buffer; │ │ │ │ │ -89 float *_cpuBuffer; │ │ │ │ │ -90}; │ │ │ │ │ -91 │ │ │ │ │ -92} // end namespace Osd │ │ │ │ │ -93 │ │ │ │ │ -94} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ -95using namespace OPENSUBDIV_VERSION; │ │ │ │ │ -96 │ │ │ │ │ -97} // end namespace OpenSubdiv │ │ │ │ │ -98 │ │ │ │ │ -99#endif // OPENSUBDIV3_OSD_CPU_D3D11_VERTEX_BUFFER_H │ │ │ │ │ +83private: │ │ │ │ │ +84 GLuint _sizes; │ │ │ │ │ +85 GLuint _offsets; │ │ │ │ │ +86 GLuint _indices; │ │ │ │ │ +87 GLuint _weights; │ │ │ │ │ +88 GLuint _duWeights; │ │ │ │ │ +89 GLuint _dvWeights; │ │ │ │ │ +90 GLuint _duuWeights; │ │ │ │ │ +91 GLuint _duvWeights; │ │ │ │ │ +92 GLuint _dvvWeights; │ │ │ │ │ +93 int _numStencils; │ │ │ │ │ +94}; │ │ │ │ │ +95 │ │ │ │ │ +96// -------------------------------------------------------------------------- │ │ │ │ │ +- │ │ │ │ │ +97 │ │ │ │ │ +_9_8class _G_L_X_F_B_E_v_a_l_u_a_t_o_r { │ │ │ │ │ +99public: │ │ │ │ │ +_1_0_0 typedef bool _I_n_s_t_a_n_t_i_a_t_a_b_l_e; │ │ │ │ │ +101 │ │ │ │ │ +103 template │ │ │ │ │ +_1_0_4 static _G_L_X_F_B_E_v_a_l_u_a_t_o_r *_C_r_e_a_t_e(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +105 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +106 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +107 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +108 DEVICE_CONTEXT deviceContext) { │ │ │ │ │ +109 bool interleavedDerivativeBuffers = deviceContext │ │ │ │ │ +110 ? deviceContext->AreInterleavedDerivativeBuffers() │ │ │ │ │ +111 : false; │ │ │ │ │ +112 return _C_r_e_a_t_e(srcDesc, dstDesc, duDesc, dvDesc, │ │ │ │ │ +113 interleavedDerivativeBuffers); │ │ │ │ │ +114 } │ │ │ │ │ +115 │ │ │ │ │ +_1_1_7 static _G_L_X_F_B_E_v_a_l_u_a_t_o_r *_C_r_e_a_t_e(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +118 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +119 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +120 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +121 void * deviceContext) { │ │ │ │ │ +122 (void)deviceContext; // not used │ │ │ │ │ +123 return _C_r_e_a_t_e(srcDesc, dstDesc, duDesc, dvDesc); │ │ │ │ │ +124 } │ │ │ │ │ +125 │ │ │ │ │ +_1_2_6 static _G_L_X_F_B_E_v_a_l_u_a_t_o_r * _C_r_e_a_t_e(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +127 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +128 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +129 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +130 bool interleavedDerivativeBuffers = false) { │ │ │ │ │ +131 _G_L_X_F_B_E_v_a_l_u_a_t_o_r *instance = new _G_L_X_F_B_E_v_a_l_u_a_t_o_r │ │ │ │ │ +(interleavedDerivativeBuffers); │ │ │ │ │ +132 if (instance->_C_o_m_p_i_l_e(srcDesc, dstDesc, duDesc, dvDesc)) │ │ │ │ │ +133 return instance; │ │ │ │ │ +134 delete instance; │ │ │ │ │ +135 return NULL; │ │ │ │ │ +136 } │ │ │ │ │ +137 │ │ │ │ │ +139 template │ │ │ │ │ +_1_4_0 static _G_L_X_F_B_E_v_a_l_u_a_t_o_r *_C_r_e_a_t_e(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +141 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +142 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +143 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +144 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +145 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +146 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +147 DEVICE_CONTEXT deviceContext) { │ │ │ │ │ +148 bool interleavedDerivativeBuffers = deviceContext │ │ │ │ │ +149 ? deviceContext->AreInterleavedDerivativeBuffers() │ │ │ │ │ +150 : false; │ │ │ │ │ +151 return _C_r_e_a_t_e(srcDesc, dstDesc, duDesc, dvDesc, │ │ │ │ │ +152 duuDesc, duvDesc, dvvDesc, │ │ │ │ │ +153 interleavedDerivativeBuffers); │ │ │ │ │ +154 } │ │ │ │ │ +155 │ │ │ │ │ +_1_5_7 static _G_L_X_F_B_E_v_a_l_u_a_t_o_r *_C_r_e_a_t_e(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +158 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +159 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +160 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +161 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +162 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +163 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +164 void * deviceContext) { │ │ │ │ │ +165 (void)deviceContext; // not used │ │ │ │ │ +166 return _C_r_e_a_t_e(srcDesc, dstDesc, duDesc, dvDesc, │ │ │ │ │ +167 duuDesc, duvDesc, dvvDesc); │ │ │ │ │ +168 } │ │ │ │ │ +169 │ │ │ │ │ +_1_7_0 static _G_L_X_F_B_E_v_a_l_u_a_t_o_r * _C_r_e_a_t_e(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +171 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +172 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +173 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +174 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +175 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +176 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +177 bool interleavedDerivativeBuffers = false) { │ │ │ │ │ +178 _G_L_X_F_B_E_v_a_l_u_a_t_o_r *instance = new _G_L_X_F_B_E_v_a_l_u_a_t_o_r │ │ │ │ │ +(interleavedDerivativeBuffers); │ │ │ │ │ +179 if (instance->_C_o_m_p_i_l_e(srcDesc, dstDesc, duDesc, dvDesc, │ │ │ │ │ +180 duuDesc, duvDesc, dvvDesc)) │ │ │ │ │ +181 return instance; │ │ │ │ │ +182 delete instance; │ │ │ │ │ +183 return NULL; │ │ │ │ │ +184 } │ │ │ │ │ +185 │ │ │ │ │ +_1_9_9 _G_L_X_F_B_E_v_a_l_u_a_t_o_r(bool interleavedDerivativeBuffers = false); │ │ │ │ │ +200 │ │ │ │ │ +_2_0_2 _~_G_L_X_F_B_E_v_a_l_u_a_t_o_r(); │ │ │ │ │ +203 │ │ │ │ │ +209 │ │ │ │ │ +237 template │ │ │ │ │ +_2_3_8 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ +239 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +240 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +241 STENCIL_TABLE const *stencilTable, │ │ │ │ │ +242 _G_L_X_F_B_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ +243 void * deviceContext = NULL) { │ │ │ │ │ +244 │ │ │ │ │ +245 if (instance) { │ │ │ │ │ +246 return instance->_E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer, srcDesc, │ │ │ │ │ +247 dstBuffer, dstDesc, │ │ │ │ │ +248 stencilTable); │ │ │ │ │ +249 } else { │ │ │ │ │ +250 // Create an instance on demand (slow) │ │ │ │ │ +251 (void)deviceContext; // unused │ │ │ │ │ +252 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ +253 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +254 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r()); │ │ │ │ │ +255 if (instance) { │ │ │ │ │ +256 bool r = instance->_E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer, srcDesc, │ │ │ │ │ +257 dstBuffer, dstDesc, │ │ │ │ │ +258 stencilTable); │ │ │ │ │ +259 delete instance; │ │ │ │ │ +260 return r; │ │ │ │ │ +261 } │ │ │ │ │ +262 return false; │ │ │ │ │ +263 } │ │ │ │ │ +264 } │ │ │ │ │ +265 │ │ │ │ │ +305 template │ │ │ │ │ +_3_0_6 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ +307 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +308 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +309 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +310 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +311 STENCIL_TABLE const *stencilTable, │ │ │ │ │ +312 _G_L_X_F_B_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ +313 void * deviceContext = NULL) { │ │ │ │ │ +314 │ │ │ │ │ +315 if (instance) { │ │ │ │ │ +316 return instance->_E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer, srcDesc, │ │ │ │ │ +317 dstBuffer, dstDesc, │ │ │ │ │ +318 duBuffer, duDesc, │ │ │ │ │ +319 dvBuffer, dvDesc, │ │ │ │ │ +320 stencilTable); │ │ │ │ │ +321 } else { │ │ │ │ │ +322 // Create an instance on demand (slow) │ │ │ │ │ +323 (void)deviceContext; // unused │ │ │ │ │ +324 instance = _C_r_e_a_t_e(srcDesc, dstDesc, duDesc, dvDesc); │ │ │ │ │ +325 if (instance) { │ │ │ │ │ +326 bool r = instance->_E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer, srcDesc, │ │ │ │ │ +327 dstBuffer, dstDesc, │ │ │ │ │ +328 duBuffer, duDesc, │ │ │ │ │ +329 dvBuffer, dvDesc, │ │ │ │ │ +330 stencilTable); │ │ │ │ │ +331 delete instance; │ │ │ │ │ +332 return r; │ │ │ │ │ +333 } │ │ │ │ │ +334 return false; │ │ │ │ │ +335 } │ │ │ │ │ +336 } │ │ │ │ │ +337 │ │ │ │ │ +395 template │ │ │ │ │ +_3_9_6 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ +397 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +398 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +399 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +400 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +401 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +402 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +403 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +404 STENCIL_TABLE const *stencilTable, │ │ │ │ │ +405 _G_L_X_F_B_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ +406 void * deviceContext = NULL) { │ │ │ │ │ +407 │ │ │ │ │ +408 if (instance) { │ │ │ │ │ +409 return instance->_E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer, srcDesc, │ │ │ │ │ +410 dstBuffer, dstDesc, │ │ │ │ │ +411 duBuffer, duDesc, │ │ │ │ │ +412 dvBuffer, dvDesc, │ │ │ │ │ +413 duuBuffer, duuDesc, │ │ │ │ │ +414 duvBuffer, duvDesc, │ │ │ │ │ +415 dvvBuffer, dvvDesc, │ │ │ │ │ +416 stencilTable); │ │ │ │ │ +417 } else { │ │ │ │ │ +418 // Create an instance on demand (slow) │ │ │ │ │ +419 (void)deviceContext; // unused │ │ │ │ │ +420 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ +421 duDesc, dvDesc, │ │ │ │ │ +422 duuDesc, duvDesc, dvvDesc); │ │ │ │ │ +423 if (instance) { │ │ │ │ │ +424 bool r = instance->_E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer, srcDesc, │ │ │ │ │ +425 dstBuffer, dstDesc, │ │ │ │ │ +426 duBuffer, duDesc, │ │ │ │ │ +427 dvBuffer, dvDesc, │ │ │ │ │ +428 duuBuffer, duuDesc, │ │ │ │ │ +429 duvBuffer, duvDesc, │ │ │ │ │ +430 dvvBuffer, dvvDesc, │ │ │ │ │ +431 stencilTable); │ │ │ │ │ +432 delete instance; │ │ │ │ │ +433 return r; │ │ │ │ │ +434 } │ │ │ │ │ +435 return false; │ │ │ │ │ +436 } │ │ │ │ │ +437 } │ │ │ │ │ +438 │ │ │ │ │ +456 template │ │ │ │ │ +_4_5_7 bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ +458 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +459 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +460 STENCIL_TABLE const *stencilTable) const { │ │ │ │ │ +461 │ │ │ │ │ +462 return _E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ +463 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ +464 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +465 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +466 stencilTable->GetSizesTexture(), │ │ │ │ │ +467 stencilTable->GetOffsetsTexture(), │ │ │ │ │ +468 stencilTable->GetIndicesTexture(), │ │ │ │ │ +469 stencilTable->GetWeightsTexture(), │ │ │ │ │ +470 0, │ │ │ │ │ +471 0, │ │ │ │ │ +472 /* start = */ 0, │ │ │ │ │ +473 /* end = */ stencilTable->GetNumStencils()); │ │ │ │ │ +474 } │ │ │ │ │ +475 │ │ │ │ │ +505 template │ │ │ │ │ +_5_0_6 bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ +507 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +508 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +509 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +510 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +511 STENCIL_TABLE const *stencilTable) const { │ │ │ │ │ +512 │ │ │ │ │ +513 return _E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ +514 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ +515 duBuffer->BindVBO(), duDesc, │ │ │ │ │ +516 dvBuffer->BindVBO(), dvDesc, │ │ │ │ │ +517 stencilTable->GetSizesTexture(), │ │ │ │ │ +518 stencilTable->GetOffsetsTexture(), │ │ │ │ │ +519 stencilTable->GetIndicesTexture(), │ │ │ │ │ +520 stencilTable->GetWeightsTexture(), │ │ │ │ │ +521 stencilTable->GetDuWeightsTexture(), │ │ │ │ │ +522 stencilTable->GetDvWeightsTexture(), │ │ │ │ │ +523 /* start = */ 0, │ │ │ │ │ +524 /* end = */ stencilTable->GetNumStencils()); │ │ │ │ │ +525 } │ │ │ │ │ +526 │ │ │ │ │ +574 template │ │ │ │ │ +_5_7_5 bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ +576 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +577 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +578 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +579 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +580 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +581 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +582 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +583 STENCIL_TABLE const *stencilTable) const { │ │ │ │ │ +584 │ │ │ │ │ +585 return _E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ +586 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ +587 duBuffer->BindVBO(), duDesc, │ │ │ │ │ +588 dvBuffer->BindVBO(), dvDesc, │ │ │ │ │ +589 duuBuffer->BindVBO(), duuDesc, │ │ │ │ │ +590 duvBuffer->BindVBO(), duvDesc, │ │ │ │ │ +591 dvvBuffer->BindVBO(), dvvDesc, │ │ │ │ │ +592 stencilTable->GetSizesTexture(), │ │ │ │ │ +593 stencilTable->GetOffsetsTexture(), │ │ │ │ │ +594 stencilTable->GetIndicesTexture(), │ │ │ │ │ +595 stencilTable->GetWeightsTexture(), │ │ │ │ │ +596 stencilTable->GetDuWeightsTexture(), │ │ │ │ │ +597 stencilTable->GetDvWeightsTexture(), │ │ │ │ │ +598 stencilTable->GetDuuWeightsTexture(), │ │ │ │ │ +599 stencilTable->GetDuvWeightsTexture(), │ │ │ │ │ +600 stencilTable->GetDvvWeightsTexture(), │ │ │ │ │ +601 /* start = */ 0, │ │ │ │ │ +602 /* end = */ stencilTable->GetNumStencils()); │ │ │ │ │ +603 } │ │ │ │ │ +604 │ │ │ │ │ +_6_4_0 bool _E_v_a_l_S_t_e_n_c_i_l_s(GLuint srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +641 GLuint dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +642 GLuint duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +643 GLuint dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +644 GLuint sizesBuffer, │ │ │ │ │ +645 GLuint offsetsBuffer, │ │ │ │ │ +646 GLuint indicesBuffer, │ │ │ │ │ +647 GLuint weightsBuffer, │ │ │ │ │ +648 GLuint duWeightsBuffer, │ │ │ │ │ +649 GLuint dvWeightsBuffer, │ │ │ │ │ +650 int start, │ │ │ │ │ +651 int end) const; │ │ │ │ │ +652 │ │ │ │ │ +_7_0_6 bool _E_v_a_l_S_t_e_n_c_i_l_s(GLuint srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +707 GLuint dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +708 GLuint duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +709 GLuint dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +710 GLuint duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +711 GLuint duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +712 GLuint dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +713 GLuint sizesBuffer, │ │ │ │ │ +714 GLuint offsetsBuffer, │ │ │ │ │ +715 GLuint indicesBuffer, │ │ │ │ │ +716 GLuint weightsBuffer, │ │ │ │ │ +717 GLuint duWeightsBuffer, │ │ │ │ │ +718 GLuint dvWeightsBuffer, │ │ │ │ │ +719 GLuint duuWeightsBuffer, │ │ │ │ │ +720 GLuint duvWeightsBuffer, │ │ │ │ │ +721 GLuint dvvWeightsBuffer, │ │ │ │ │ +722 int start, │ │ │ │ │ +723 int end) const; │ │ │ │ │ +724 │ │ │ │ │ +730 │ │ │ │ │ +763 template │ │ │ │ │ +_7_6_5 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ +766 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +767 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +768 int numPatchCoords, │ │ │ │ │ +769 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +770 PATCH_TABLE *patchTable, │ │ │ │ │ +771 _G_L_X_F_B_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ +772 void * deviceContext = NULL) { │ │ │ │ │ +773 │ │ │ │ │ +774 if (instance) { │ │ │ │ │ +775 return instance->_E_v_a_l_P_a_t_c_h_e_s(srcBuffer, srcDesc, │ │ │ │ │ +776 dstBuffer, dstDesc, │ │ │ │ │ +777 numPatchCoords, patchCoords, │ │ │ │ │ +778 patchTable); │ │ │ │ │ +779 } else { │ │ │ │ │ +780 // Create an instance on demand (slow) │ │ │ │ │ +781 (void)deviceContext; // unused │ │ │ │ │ +782 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ +783 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +784 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r()); │ │ │ │ │ +785 if (instance) { │ │ │ │ │ +786 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s(srcBuffer, srcDesc, │ │ │ │ │ +787 dstBuffer, dstDesc, │ │ │ │ │ +788 numPatchCoords, patchCoords, │ │ │ │ │ +789 patchTable); │ │ │ │ │ +790 delete instance; │ │ │ │ │ +791 return r; │ │ │ │ │ +792 } │ │ │ │ │ +793 return false; │ │ │ │ │ +794 } │ │ │ │ │ +795 } │ │ │ │ │ +796 │ │ │ │ │ +841 template │ │ │ │ │ +_8_4_3 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ +844 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +845 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +846 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +847 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +848 int numPatchCoords, │ │ │ │ │ +849 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +850 PATCH_TABLE *patchTable, │ │ │ │ │ +851 _G_L_X_F_B_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ +852 void * deviceContext = NULL) { │ │ │ │ │ +853 │ │ │ │ │ +854 if (instance) { │ │ │ │ │ +855 return instance->_E_v_a_l_P_a_t_c_h_e_s(srcBuffer, srcDesc, │ │ │ │ │ +856 dstBuffer, dstDesc, │ │ │ │ │ +857 duBuffer, duDesc, │ │ │ │ │ +858 dvBuffer, dvDesc, │ │ │ │ │ +859 numPatchCoords, patchCoords, │ │ │ │ │ +860 patchTable); │ │ │ │ │ +861 } else { │ │ │ │ │ +862 // Create an instance on demand (slow) │ │ │ │ │ +863 (void)deviceContext; // unused │ │ │ │ │ +864 instance = _C_r_e_a_t_e(srcDesc, dstDesc, duDesc, dvDesc); │ │ │ │ │ +865 if (instance) { │ │ │ │ │ +866 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s(srcBuffer, srcDesc, │ │ │ │ │ +867 dstBuffer, dstDesc, │ │ │ │ │ +868 duBuffer, duDesc, │ │ │ │ │ +869 dvBuffer, dvDesc, │ │ │ │ │ +870 numPatchCoords, patchCoords, │ │ │ │ │ +871 patchTable); │ │ │ │ │ +872 delete instance; │ │ │ │ │ +873 return r; │ │ │ │ │ +874 } │ │ │ │ │ +875 return false; │ │ │ │ │ +876 } │ │ │ │ │ +877 } │ │ │ │ │ +878 │ │ │ │ │ +941 template │ │ │ │ │ +_9_4_3 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ +944 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +945 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +946 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +947 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +948 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +949 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +950 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +951 int numPatchCoords, │ │ │ │ │ +952 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +953 PATCH_TABLE *patchTable, │ │ │ │ │ +954 _G_L_X_F_B_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ +955 void * deviceContext = NULL) { │ │ │ │ │ +956 │ │ │ │ │ +957 if (instance) { │ │ │ │ │ +958 return instance->_E_v_a_l_P_a_t_c_h_e_s(srcBuffer, srcDesc, │ │ │ │ │ +959 dstBuffer, dstDesc, │ │ │ │ │ +960 duBuffer, duDesc, │ │ │ │ │ +961 dvBuffer, dvDesc, │ │ │ │ │ +962 duuBuffer, duuDesc, │ │ │ │ │ +963 duvBuffer, duvDesc, │ │ │ │ │ +964 dvvBuffer, dvvDesc, │ │ │ │ │ +965 numPatchCoords, patchCoords, │ │ │ │ │ +966 patchTable); │ │ │ │ │ +967 } else { │ │ │ │ │ +968 // Create an instance on demand (slow) │ │ │ │ │ +969 (void)deviceContext; // unused │ │ │ │ │ +970 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ +971 duDesc, dvDesc, │ │ │ │ │ +972 duuDesc, duvDesc, dvvDesc); │ │ │ │ │ +973 if (instance) { │ │ │ │ │ +974 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s(srcBuffer, srcDesc, │ │ │ │ │ +975 dstBuffer, dstDesc, │ │ │ │ │ +976 duBuffer, duDesc, │ │ │ │ │ +977 dvBuffer, dvDesc, │ │ │ │ │ +978 duuBuffer, duuDesc, │ │ │ │ │ +979 duvBuffer, duvDesc, │ │ │ │ │ +980 dvvBuffer, dvvDesc, │ │ │ │ │ +981 numPatchCoords, patchCoords, │ │ │ │ │ +982 patchTable); │ │ │ │ │ +983 delete instance; │ │ │ │ │ +984 return r; │ │ │ │ │ +985 } │ │ │ │ │ +986 return false; │ │ │ │ │ +987 } │ │ │ │ │ +988 } │ │ │ │ │ +989 │ │ │ │ │ +1014 template │ │ │ │ │ +_1_0_1_6 bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ +1017 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1018 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1019 int numPatchCoords, │ │ │ │ │ +1020 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1021 PATCH_TABLE *patchTable) const { │ │ │ │ │ +1022 │ │ │ │ │ +1023 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ +1024 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ +1025 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +1026 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +1027 numPatchCoords, │ │ │ │ │ +1028 patchCoords->BindVBO(), │ │ │ │ │ +1029 patchTable->GetPatchArrays(), │ │ │ │ │ +1030 patchTable->GetPatchIndexTextureBuffer(), │ │ │ │ │ +1031 patchTable->GetPatchParamTextureBuffer()); │ │ │ │ │ +1032 } │ │ │ │ │ +1033 │ │ │ │ │ +1068 template │ │ │ │ │ +_1_0_7_0 bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ +1071 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1072 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1073 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +1074 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +1075 int numPatchCoords, │ │ │ │ │ +1076 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1077 PATCH_TABLE *patchTable) const { │ │ │ │ │ +1078 │ │ │ │ │ +1079 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ +1080 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ +1081 duBuffer->BindVBO(), duDesc, │ │ │ │ │ +1082 dvBuffer->BindVBO(), dvDesc, │ │ │ │ │ +1083 numPatchCoords, │ │ │ │ │ +1084 patchCoords->BindVBO(), │ │ │ │ │ +1085 patchTable->GetPatchArrays(), │ │ │ │ │ +1086 patchTable->GetPatchIndexTextureBuffer(), │ │ │ │ │ +1087 patchTable->GetPatchParamTextureBuffer()); │ │ │ │ │ +1088 } │ │ │ │ │ +1089 │ │ │ │ │ +1142 template │ │ │ │ │ +_1_1_4_4 bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ +1145 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1146 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1147 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +1148 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +1149 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +1150 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +1151 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +1152 int numPatchCoords, │ │ │ │ │ +1153 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1154 PATCH_TABLE *patchTable) const { │ │ │ │ │ +1155 │ │ │ │ │ +1156 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ +1157 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ +1158 duBuffer->BindVBO(), duDesc, │ │ │ │ │ +1159 dvBuffer->BindVBO(), dvDesc, │ │ │ │ │ +1160 duuBuffer->BindVBO(), duuDesc, │ │ │ │ │ +1161 duvBuffer->BindVBO(), duvDesc, │ │ │ │ │ +1162 dvvBuffer->BindVBO(), dvvDesc, │ │ │ │ │ +1163 numPatchCoords, │ │ │ │ │ +1164 patchCoords->BindVBO(), │ │ │ │ │ +1165 patchTable->GetPatchArrays(), │ │ │ │ │ +1166 patchTable->GetPatchIndexTextureBuffer(), │ │ │ │ │ +1167 patchTable->GetPatchParamTextureBuffer()); │ │ │ │ │ +1168 } │ │ │ │ │ +1169 │ │ │ │ │ +_1_1_7_0 bool _E_v_a_l_P_a_t_c_h_e_s(GLuint srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1171 GLuint dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1172 GLuint duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +1173 GLuint dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +1174 int numPatchCoords, │ │ │ │ │ +1175 GLuint patchCoordsBuffer, │ │ │ │ │ +1176 const _P_a_t_c_h_A_r_r_a_y_V_e_c_t_o_r &patchArrays, │ │ │ │ │ +1177 GLuint patchIndexBuffer, │ │ │ │ │ +1178 GLuint patchParamsBuffer) const; │ │ │ │ │ +1179 │ │ │ │ │ +_1_1_8_0 bool _E_v_a_l_P_a_t_c_h_e_s(GLuint srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1181 GLuint dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1182 GLuint duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +1183 GLuint dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +1184 GLuint duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +1185 GLuint duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +1186 GLuint dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +1187 int numPatchCoords, │ │ │ │ │ +1188 GLuint patchCoordsBuffer, │ │ │ │ │ +1189 const _P_a_t_c_h_A_r_r_a_y_V_e_c_t_o_r &patchArrays, │ │ │ │ │ +1190 GLuint patchIndexBuffer, │ │ │ │ │ +1191 GLuint patchParamsBuffer) const; │ │ │ │ │ +1192 │ │ │ │ │ +1225 template │ │ │ │ │ +_1_2_2_7 static bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +1228 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1229 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1230 int numPatchCoords, │ │ │ │ │ +1231 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1232 PATCH_TABLE *patchTable, │ │ │ │ │ +1233 _G_L_X_F_B_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ +1234 void * deviceContext = NULL) { │ │ │ │ │ +1235 │ │ │ │ │ +1236 if (instance) { │ │ │ │ │ +1237 return instance->_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +1238 srcBuffer, srcDesc, │ │ │ │ │ +1239 dstBuffer, dstDesc, │ │ │ │ │ +1240 numPatchCoords, patchCoords, │ │ │ │ │ +1241 patchTable); │ │ │ │ │ +1242 } else { │ │ │ │ │ +1243 // Create an instance on demand (slow) │ │ │ │ │ +1244 (void)deviceContext; // unused │ │ │ │ │ +1245 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ +1246 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +1247 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r()); │ │ │ │ │ +1248 if (instance) { │ │ │ │ │ +1249 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +1250 srcBuffer, srcDesc, │ │ │ │ │ +1251 dstBuffer, dstDesc, │ │ │ │ │ +1252 numPatchCoords, patchCoords, │ │ │ │ │ +1253 patchTable); │ │ │ │ │ +1254 delete instance; │ │ │ │ │ +1255 return r; │ │ │ │ │ +1256 } │ │ │ │ │ +1257 return false; │ │ │ │ │ +1258 } │ │ │ │ │ +1259 } │ │ │ │ │ +1260 │ │ │ │ │ +1285 template │ │ │ │ │ +_1_2_8_7 bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +1288 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1289 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1290 int numPatchCoords, │ │ │ │ │ +1291 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1292 PATCH_TABLE *patchTable) const { │ │ │ │ │ +1293 │ │ │ │ │ +1294 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ +1295 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ +1296 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +1297 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +1298 numPatchCoords, │ │ │ │ │ +1299 patchCoords->BindVBO(), │ │ │ │ │ +1300 patchTable->GetVaryingPatchArrays(), │ │ │ │ │ +1301 patchTable->GetVaryingPatchIndexTextureBuffer(), │ │ │ │ │ +1302 patchTable->GetPatchParamTextureBuffer()); │ │ │ │ │ +1303 } │ │ │ │ │ +1304 │ │ │ │ │ +1349 template │ │ │ │ │ +_1_3_5_1 static bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +1352 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1353 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1354 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +1355 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +1356 int numPatchCoords, │ │ │ │ │ +1357 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1358 PATCH_TABLE *patchTable, │ │ │ │ │ +1359 _G_L_X_F_B_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ +1360 void * deviceContext = NULL) { │ │ │ │ │ +1361 │ │ │ │ │ +1362 if (instance) { │ │ │ │ │ +1363 return instance->_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +1364 srcBuffer, srcDesc, │ │ │ │ │ +1365 dstBuffer, dstDesc, │ │ │ │ │ +1366 duBuffer, duDesc, │ │ │ │ │ +1367 dvBuffer, dvDesc, │ │ │ │ │ +1368 numPatchCoords, patchCoords, │ │ │ │ │ +1369 patchTable); │ │ │ │ │ +1370 } else { │ │ │ │ │ +1371 // Create an instance on demand (slow) │ │ │ │ │ +1372 (void)deviceContext; // unused │ │ │ │ │ +1373 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ +1374 duDesc, dvDesc); │ │ │ │ │ +1375 if (instance) { │ │ │ │ │ +1376 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +1377 srcBuffer, srcDesc, │ │ │ │ │ +1378 dstBuffer, dstDesc, │ │ │ │ │ +1379 duBuffer, duDesc, │ │ │ │ │ +1380 dvBuffer, dvDesc, │ │ │ │ │ +1381 numPatchCoords, patchCoords, │ │ │ │ │ +1382 patchTable); │ │ │ │ │ +1383 delete instance; │ │ │ │ │ +1384 return r; │ │ │ │ │ +1385 } │ │ │ │ │ +1386 return false; │ │ │ │ │ +1387 } │ │ │ │ │ +1388 } │ │ │ │ │ +1389 │ │ │ │ │ +1426 template │ │ │ │ │ +_1_4_2_8 bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +1429 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1430 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1431 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +1432 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +1433 int numPatchCoords, │ │ │ │ │ +1434 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1435 PATCH_TABLE *patchTable) const { │ │ │ │ │ +1436 │ │ │ │ │ +1437 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ +1438 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ +1439 duBuffer->BindVBO(), duDesc, │ │ │ │ │ +1440 dvBuffer->BindVBO(), dvDesc, │ │ │ │ │ +1441 numPatchCoords, │ │ │ │ │ +1442 patchCoords->BindVBO(), │ │ │ │ │ +1443 patchTable->GetVaryingPatchArrays(), │ │ │ │ │ +1444 patchTable->GetVaryingPatchIndexTextureBuffer(), │ │ │ │ │ +1445 patchTable->GetPatchParamTextureBuffer()); │ │ │ │ │ +1446 } │ │ │ │ │ +1447 │ │ │ │ │ +1510 template │ │ │ │ │ +_1_5_1_2 static bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +1513 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1514 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1515 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +1516 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +1517 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +1518 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +1519 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +1520 int numPatchCoords, │ │ │ │ │ +1521 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1522 PATCH_TABLE *patchTable, │ │ │ │ │ +1523 _G_L_X_F_B_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ +1524 void * deviceContext = NULL) { │ │ │ │ │ +1525 │ │ │ │ │ +1526 if (instance) { │ │ │ │ │ +1527 return instance->_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +1528 srcBuffer, srcDesc, │ │ │ │ │ +1529 dstBuffer, dstDesc, │ │ │ │ │ +1530 duBuffer, duDesc, │ │ │ │ │ +1531 dvBuffer, dvDesc, │ │ │ │ │ +1532 duuBuffer, duuDesc, │ │ │ │ │ +1533 duvBuffer, duvDesc, │ │ │ │ │ +1534 dvvBuffer, dvvDesc, │ │ │ │ │ +1535 numPatchCoords, patchCoords, │ │ │ │ │ +1536 patchTable); │ │ │ │ │ +1537 } else { │ │ │ │ │ +1538 // Create an instance on demand (slow) │ │ │ │ │ +1539 (void)deviceContext; // unused │ │ │ │ │ +1540 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ +1541 duDesc, dvDesc, │ │ │ │ │ +1542 duuDesc, duvDesc, dvvDesc); │ │ │ │ │ +1543 if (instance) { │ │ │ │ │ +1544 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +1545 srcBuffer, srcDesc, │ │ │ │ │ +1546 dstBuffer, dstDesc, │ │ │ │ │ +1547 duBuffer, duDesc, │ │ │ │ │ +1548 dvBuffer, dvDesc, │ │ │ │ │ +1549 duuBuffer, duuDesc, │ │ │ │ │ +1550 duvBuffer, duvDesc, │ │ │ │ │ +1551 dvvBuffer, dvvDesc, │ │ │ │ │ +1552 numPatchCoords, patchCoords, │ │ │ │ │ +1553 patchTable); │ │ │ │ │ +1554 delete instance; │ │ │ │ │ +1555 return r; │ │ │ │ │ +1556 } │ │ │ │ │ +1557 return false; │ │ │ │ │ +1558 } │ │ │ │ │ +1559 } │ │ │ │ │ +1560 │ │ │ │ │ +1615 template │ │ │ │ │ +_1_6_1_7 bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +1618 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1619 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1620 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +1621 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +1622 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +1623 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +1624 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +1625 int numPatchCoords, │ │ │ │ │ +1626 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1627 PATCH_TABLE *patchTable) const { │ │ │ │ │ +1628 │ │ │ │ │ +1629 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ +1630 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ +1631 duBuffer->BindVBO(), duDesc, │ │ │ │ │ +1632 dvBuffer->BindVBO(), dvDesc, │ │ │ │ │ +1633 duuBuffer->BindVBO(), duuDesc, │ │ │ │ │ +1634 duvBuffer->BindVBO(), duvDesc, │ │ │ │ │ +1635 dvvBuffer->BindVBO(), dvvDesc, │ │ │ │ │ +1636 numPatchCoords, │ │ │ │ │ +1637 patchCoords->BindVBO(), │ │ │ │ │ +1638 patchTable->GetVaryingPatchArrays(), │ │ │ │ │ +1639 patchTable->GetVaryingPatchIndexTextureBuffer(), │ │ │ │ │ +1640 patchTable->GetPatchParamTextureBuffer()); │ │ │ │ │ +1641 } │ │ │ │ │ +1642 │ │ │ │ │ +1677 template │ │ │ │ │ +_1_6_7_9 static bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +1680 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1681 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1682 int numPatchCoords, │ │ │ │ │ +1683 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1684 PATCH_TABLE *patchTable, │ │ │ │ │ +1685 int fvarChannel, │ │ │ │ │ +1686 _G_L_X_F_B_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ +1687 void * deviceContext = NULL) { │ │ │ │ │ +1688 │ │ │ │ │ +1689 if (instance) { │ │ │ │ │ +1690 return instance->_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +1691 srcBuffer, srcDesc, │ │ │ │ │ +1692 dstBuffer, dstDesc, │ │ │ │ │ +1693 numPatchCoords, patchCoords, │ │ │ │ │ +1694 patchTable, fvarChannel); │ │ │ │ │ +1695 } else { │ │ │ │ │ +1696 // Create an instance on demand (slow) │ │ │ │ │ +1697 (void)deviceContext; // unused │ │ │ │ │ +1698 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ +1699 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +1700 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r()); │ │ │ │ │ +1701 if (instance) { │ │ │ │ │ +1702 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +1703 srcBuffer, srcDesc, │ │ │ │ │ +1704 dstBuffer, dstDesc, │ │ │ │ │ +1705 numPatchCoords, patchCoords, │ │ │ │ │ +1706 patchTable, fvarChannel); │ │ │ │ │ +1707 delete instance; │ │ │ │ │ +1708 return r; │ │ │ │ │ +1709 } │ │ │ │ │ +1710 return false; │ │ │ │ │ +1711 } │ │ │ │ │ +1712 } │ │ │ │ │ +1713 │ │ │ │ │ +1740 template │ │ │ │ │ +_1_7_4_2 bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +1743 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1744 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1745 int numPatchCoords, │ │ │ │ │ +1746 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1747 PATCH_TABLE *patchTable, │ │ │ │ │ +1748 int fvarChannel = 0) const { │ │ │ │ │ +1749 │ │ │ │ │ +1750 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ +1751 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ +1752 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +1753 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +1754 numPatchCoords, │ │ │ │ │ +1755 patchCoords->BindVBO(), │ │ │ │ │ +1756 patchTable->GetFVarPatchArrays(fvarChannel), │ │ │ │ │ +1757 patchTable->GetFVarPatchIndexTextureBuffer(fvarChannel), │ │ │ │ │ +1758 patchTable->GetFVarPatchParamTextureBuffer(fvarChannel)); │ │ │ │ │ +1759 } │ │ │ │ │ +1760 │ │ │ │ │ +1807 template │ │ │ │ │ +_1_8_0_9 static bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +1810 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1811 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1812 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +1813 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +1814 int numPatchCoords, │ │ │ │ │ +1815 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1816 PATCH_TABLE *patchTable, │ │ │ │ │ +1817 int fvarChannel, │ │ │ │ │ +1818 _G_L_X_F_B_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ +1819 void * deviceContext = NULL) { │ │ │ │ │ +1820 │ │ │ │ │ +1821 if (instance) { │ │ │ │ │ +1822 return instance->_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +1823 srcBuffer, srcDesc, │ │ │ │ │ +1824 dstBuffer, dstDesc, │ │ │ │ │ +1825 duBuffer, duDesc, │ │ │ │ │ +1826 dvBuffer, dvDesc, │ │ │ │ │ +1827 numPatchCoords, patchCoords, │ │ │ │ │ +1828 patchTable, fvarChannel); │ │ │ │ │ +1829 } else { │ │ │ │ │ +1830 // Create an instance on demand (slow) │ │ │ │ │ +1831 (void)deviceContext; // unused │ │ │ │ │ +1832 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ +1833 duDesc, dvDesc); │ │ │ │ │ +1834 if (instance) { │ │ │ │ │ +1835 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +1836 srcBuffer, srcDesc, │ │ │ │ │ +1837 dstBuffer, dstDesc, │ │ │ │ │ +1838 duBuffer, duDesc, │ │ │ │ │ +1839 dvBuffer, dvDesc, │ │ │ │ │ +1840 numPatchCoords, patchCoords, │ │ │ │ │ +1841 patchTable, fvarChannel); │ │ │ │ │ +1842 delete instance; │ │ │ │ │ +1843 return r; │ │ │ │ │ +1844 } │ │ │ │ │ +1845 return false; │ │ │ │ │ +1846 } │ │ │ │ │ +1847 } │ │ │ │ │ +1848 │ │ │ │ │ +1887 template │ │ │ │ │ +_1_8_8_9 bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +1890 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1891 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1892 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +1893 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +1894 int numPatchCoords, │ │ │ │ │ +1895 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1896 PATCH_TABLE *patchTable, │ │ │ │ │ +1897 int fvarChannel = 0) const { │ │ │ │ │ +1898 │ │ │ │ │ +1899 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ +1900 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ +1901 duBuffer->BindVBO(), duDesc, │ │ │ │ │ +1902 dvBuffer->BindVBO(), dvDesc, │ │ │ │ │ +1903 numPatchCoords, │ │ │ │ │ +1904 patchCoords->BindVBO(), │ │ │ │ │ +1905 patchTable->GetFVarPatchArrays(fvarChannel), │ │ │ │ │ +1906 patchTable->GetFVarPatchIndexTextureBuffer(fvarChannel), │ │ │ │ │ +1907 patchTable->GetFVarPatchParamTextureBuffer(fvarChannel)); │ │ │ │ │ +1908 } │ │ │ │ │ +1909 │ │ │ │ │ +1974 template │ │ │ │ │ +_1_9_7_6 static bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +1977 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1978 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1979 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +1980 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +1981 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +1982 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +1983 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +1984 int numPatchCoords, │ │ │ │ │ +1985 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1986 PATCH_TABLE *patchTable, │ │ │ │ │ +1987 int fvarChannel, │ │ │ │ │ +1988 _G_L_X_F_B_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ +1989 void * deviceContext = NULL) { │ │ │ │ │ +1990 │ │ │ │ │ +1991 if (instance) { │ │ │ │ │ +1992 return instance->_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +1993 srcBuffer, srcDesc, │ │ │ │ │ +1994 dstBuffer, dstDesc, │ │ │ │ │ +1995 duBuffer, duDesc, │ │ │ │ │ +1996 dvBuffer, dvDesc, │ │ │ │ │ +1997 duuBuffer, duuDesc, │ │ │ │ │ +1998 duvBuffer, duvDesc, │ │ │ │ │ +1999 dvvBuffer, dvvDesc, │ │ │ │ │ +2000 numPatchCoords, patchCoords, │ │ │ │ │ +2001 patchTable, fvarChannel); │ │ │ │ │ +2002 } else { │ │ │ │ │ +2003 // Create an instance on demand (slow) │ │ │ │ │ +2004 (void)deviceContext; // unused │ │ │ │ │ +2005 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ +2006 duDesc, dvDesc, │ │ │ │ │ +2007 duuDesc, duvDesc, dvvDesc); │ │ │ │ │ +2008 if (instance) { │ │ │ │ │ +2009 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +2010 srcBuffer, srcDesc, │ │ │ │ │ +2011 dstBuffer, dstDesc, │ │ │ │ │ +2012 duBuffer, duDesc, │ │ │ │ │ +2013 dvBuffer, dvDesc, │ │ │ │ │ +2014 duuBuffer, duuDesc, │ │ │ │ │ +2015 duvBuffer, duvDesc, │ │ │ │ │ +2016 dvvBuffer, dvvDesc, │ │ │ │ │ +2017 numPatchCoords, patchCoords, │ │ │ │ │ +2018 patchTable, fvarChannel); │ │ │ │ │ +2019 delete instance; │ │ │ │ │ +2020 return r; │ │ │ │ │ +2021 } │ │ │ │ │ +2022 return false; │ │ │ │ │ +2023 } │ │ │ │ │ +2024 } │ │ │ │ │ +2025 │ │ │ │ │ +2082 template │ │ │ │ │ +_2_0_8_4 bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +2085 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +2086 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +2087 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +2088 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +2089 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +2090 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +2091 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +2092 int numPatchCoords, │ │ │ │ │ +2093 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +2094 PATCH_TABLE *patchTable, │ │ │ │ │ +2095 int fvarChannel = 0) const { │ │ │ │ │ +2096 │ │ │ │ │ +2097 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ +2098 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ +2099 duBuffer->BindVBO(), duDesc, │ │ │ │ │ +2100 dvBuffer->BindVBO(), dvDesc, │ │ │ │ │ +2101 duuBuffer->BindVBO(), duuDesc, │ │ │ │ │ +2102 duvBuffer->BindVBO(), duvDesc, │ │ │ │ │ +2103 dvvBuffer->BindVBO(), dvvDesc, │ │ │ │ │ +2104 numPatchCoords, │ │ │ │ │ +2105 patchCoords->BindVBO(), │ │ │ │ │ +2106 patchTable->GetFVarPatchArrays(fvarChannel), │ │ │ │ │ +2107 patchTable->GetFVarPatchIndexTextureBuffer(fvarChannel), │ │ │ │ │ +2108 patchTable->GetFVarPatchParamTextureBuffer(fvarChannel)); │ │ │ │ │ +2109 } │ │ │ │ │ +2110 │ │ │ │ │ +2116 │ │ │ │ │ +_2_1_1_9 bool _C_o_m_p_i_l_e(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +2120 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +2121 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc = _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +2122 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc = _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +2123 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc = _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +2124 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc = _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +2125 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc = _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r()); │ │ │ │ │ +2126 │ │ │ │ │ +_2_1_2_8 static void _S_y_n_c_h_r_o_n_i_z_e(void *kernel); │ │ │ │ │ +2129 │ │ │ │ │ +2130private: │ │ │ │ │ +2131 GLuint _srcBufferTexture; │ │ │ │ │ +2132 GLuint _patchArraysUBO; │ │ │ │ │ +2133 bool _interleavedDerivativeBuffers; │ │ │ │ │ +2134 │ │ │ │ │ +2135 struct _StencilKernel { │ │ │ │ │ +2136 _StencilKernel(); │ │ │ │ │ +2137 ~_StencilKernel(); │ │ │ │ │ +2138 bool Compile(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +2139 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +2140 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +2141 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +2142 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +2143 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +2144 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +2145 bool interleavedDerivativeBuffers); │ │ │ │ │ +2146 GLuint program; │ │ │ │ │ +2147 GLint uniformSrcBufferTexture; │ │ │ │ │ +2148 GLint uniformSrcOffset; // src buffer offset (in elements) │ │ │ │ │ +2149 │ │ │ │ │ +2150 GLint uniformSizesTexture; │ │ │ │ │ +2151 GLint uniformOffsetsTexture; │ │ │ │ │ +2152 GLint uniformIndicesTexture; │ │ │ │ │ +2153 GLint uniformWeightsTexture; │ │ │ │ │ +2154 GLint uniformDuWeightsTexture; │ │ │ │ │ +2155 GLint uniformDvWeightsTexture; │ │ │ │ │ +2156 GLint uniformDuuWeightsTexture; │ │ │ │ │ +2157 GLint uniformDuvWeightsTexture; │ │ │ │ │ +2158 GLint uniformDvvWeightsTexture; │ │ │ │ │ +2159 GLint uniformStart; // range │ │ │ │ │ +2160 GLint uniformEnd; │ │ │ │ │ +2161 } _stencilKernel; │ │ │ │ │ +2162 │ │ │ │ │ +2163 struct _PatchKernel { │ │ │ │ │ +2164 _PatchKernel(); │ │ │ │ │ +2165 ~_PatchKernel(); │ │ │ │ │ +2166 bool Compile(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +2167 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +2168 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +2169 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +2170 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +2171 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +2172 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +2173 bool interleavedDerivativeBuffers); │ │ │ │ │ +2174 GLuint program; │ │ │ │ │ +2175 GLint uniformSrcBufferTexture; │ │ │ │ │ +2176 GLint uniformSrcOffset; // src buffer offset (in elements) │ │ │ │ │ +2177 │ │ │ │ │ +2178 GLint uniformPatchArraysUBOBinding; │ │ │ │ │ +2179 GLint uniformPatchParamTexture; │ │ │ │ │ +2180 GLint uniformPatchIndexTexture; │ │ │ │ │ +2181 } _patchKernel; │ │ │ │ │ +2182 │ │ │ │ │ +2183}; │ │ │ │ │ +2184 │ │ │ │ │ +2185} // end namespace Osd │ │ │ │ │ +2186 │ │ │ │ │ +2187} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ +2188using namespace OPENSUBDIV_VERSION; │ │ │ │ │ +2189 │ │ │ │ │ +2190} // end namespace OpenSubdiv │ │ │ │ │ +2191 │ │ │ │ │ +2192 │ │ │ │ │ +2193#endif // OPENSUBDIV3_OSD_GL_XFB_EVALUATOR_H │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v │ │ │ │ │ DDeeffiinniittiioonn _l_i_m_i_t_s_._h_:_3_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r │ │ │ │ │ -Concrete vertex buffer class for Cpu subdivision and DirectX drawing. │ │ │ │ │ -DDeeffiinniittiioonn _c_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r_._h_:_4_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r_:_:_C_r_e_a_t_e │ │ │ │ │ -static CpuD3D11VertexBuffer * Create(int numElements, int numVertices, │ │ │ │ │ -ID3D11DeviceContext *deviceContext) │ │ │ │ │ -Creator. Returns NULL if error. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r_:_:_C_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r │ │ │ │ │ -CpuD3D11VertexBuffer(int numElements, int numVertices) │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_P_a_t_c_h_A_r_r_a_y_V_e_c_t_o_r │ │ │ │ │ +std::vector< PatchArray > PatchArrayVector │ │ │ │ │ +DDeeffiinniittiioonn _t_y_p_e_s_._h_:_1_3_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ +Stencil table class wrapping the template for compatibility. │ │ │ │ │ +DDeeffiinniittiioonn _s_t_e_n_c_i_l_T_a_b_l_e_._h_:_2_7_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_L_i_m_i_t_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ +Limit stencil table class wrapping the template for compatibility. │ │ │ │ │ +DDeeffiinniittiioonn _s_t_e_n_c_i_l_T_a_b_l_e_._h_:_5_8_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ +BufferDescriptor is a struct which describes buffer elements in interleaved │ │ │ │ │ +data buffers.... │ │ │ │ │ +DDeeffiinniittiioonn _b_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r_._h_:_6_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O │ │ │ │ │ +GL TextureBuffer stencil table. │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_5_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O_:_:_G_e_t_S_i_z_e_s_T_e_x_t_u_r_e │ │ │ │ │ +GLuint GetSizesTexture() const │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_7_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O_:_:_C_r_e_a_t_e │ │ │ │ │ +static GLStencilTableTBO * Create(Far::StencilTable const *stencilTable, void │ │ │ │ │ +*deviceContext=NULL) │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_5_4 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O_:_:_G_e_t_D_v_v_W_e_i_g_h_t_s_T_e_x_t_u_r_e │ │ │ │ │ +GLuint GetDvvWeightsTexture() const │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_8_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O_:_:_G_e_t_N_u_m_S_t_e_n_c_i_l_s │ │ │ │ │ +int GetNumStencils() const │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_8_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O_:_:_G_e_t_D_u_v_W_e_i_g_h_t_s_T_e_x_t_u_r_e │ │ │ │ │ +GLuint GetDuvWeightsTexture() const │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_7_9 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O_:_:_G_e_t_D_u_u_W_e_i_g_h_t_s_T_e_x_t_u_r_e │ │ │ │ │ +GLuint GetDuuWeightsTexture() const │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_7_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O_:_:_G_e_t_I_n_d_i_c_e_s_T_e_x_t_u_r_e │ │ │ │ │ +GLuint GetIndicesTexture() const │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_7_4 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O_:_:_~_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O │ │ │ │ │ +~GLStencilTableTBO() │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O │ │ │ │ │ +GLStencilTableTBO(Far::StencilTable const *stencilTable) │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O │ │ │ │ │ +GLStencilTableTBO(Far::LimitStencilTable const *limitStencilTable) │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O_:_:_G_e_t_W_e_i_g_h_t_s_T_e_x_t_u_r_e │ │ │ │ │ +GLuint GetWeightsTexture() const │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_7_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O_:_:_C_r_e_a_t_e │ │ │ │ │ +static GLStencilTableTBO * Create(Far::LimitStencilTable const │ │ │ │ │ +*limitStencilTable, void *deviceContext=NULL) │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_6_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O_:_:_G_e_t_D_v_W_e_i_g_h_t_s_T_e_x_t_u_r_e │ │ │ │ │ +GLuint GetDvWeightsTexture() const │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_7_7 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O_:_:_G_e_t_D_u_W_e_i_g_h_t_s_T_e_x_t_u_r_e │ │ │ │ │ +GLuint GetDuWeightsTexture() const │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_7_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O_:_:_G_e_t_O_f_f_s_e_t_s_T_e_x_t_u_r_e │ │ │ │ │ +GLuint GetOffsetsTexture() const │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_7_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_9_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ +bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, │ │ │ │ │ +DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords, │ │ │ │ │ +PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_2_8_7 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_C_r_e_a_t_e │ │ │ │ │ +static GLXFBEvaluator * Create(BufferDescriptor const &srcDesc, │ │ │ │ │ +BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, │ │ │ │ │ +BufferDescriptor const &dvDesc, bool interleavedDerivativeBuffers=false) │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_2_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +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 │ │ │ │ │ +Generic stencil function. │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_5_0_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r │ │ │ │ │ +GLXFBEvaluator(bool interleavedDerivativeBuffers=false) │ │ │ │ │ Constructor. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r_:_:_G_e_t_N_u_m_E_l_e_m_e_n_t_s │ │ │ │ │ -int GetNumElements() const │ │ │ │ │ -Returns how many elements defined in this vertex buffer. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r_:_:_U_p_d_a_t_e_D_a_t_a │ │ │ │ │ -void UpdateData(const float *src, int startVertex, int numVertices, void │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +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 │ │ │ │ │ +Generic stencil function. │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_5_7_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_I_n_s_t_a_n_t_i_a_t_a_b_l_e │ │ │ │ │ +bool Instantiatable │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_0_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ +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 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +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) │ │ │ │ │ +Generic static stencil function. This function has a same signature as other │ │ │ │ │ +device kernels have so t... │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_3_9_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ +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 │ │ │ │ │ +Generic limit eval function with derivatives. This function has a same │ │ │ │ │ +signature as other device kern... │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_1_4_4 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_C_r_e_a_t_e │ │ │ │ │ +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) │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_7_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_C_r_e_a_t_e │ │ │ │ │ +static GLXFBEvaluator * Create(BufferDescriptor const &srcDesc, │ │ │ │ │ +BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, │ │ │ │ │ +BufferDescriptor const &dvDesc, void *deviceContext) │ │ │ │ │ +Specialization to allow creation without a device context. │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_1_7 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +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) │ │ │ │ │ +Generic static stencil function. This function has a same signature as other │ │ │ │ │ +device kernels have so t... │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_3_0_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_3_5_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +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 │ │ │ │ │ +Dispatch the GLSL XFB kernel on on GPU asynchronously returns false if the │ │ │ │ │ +kernel hasn't been compile... │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_8_4_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_C_r_e_a_t_e │ │ │ │ │ +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) │ │ │ │ │ +Generic creator template. │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_4_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_C_r_e_a_t_e │ │ │ │ │ +static GLXFBEvaluator * Create(BufferDescriptor const &srcDesc, │ │ │ │ │ +BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, │ │ │ │ │ +BufferDescriptor const &dvDesc, DEVICE_CONTEXT deviceContext) │ │ │ │ │ +Generic creator template. │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_0_4 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_S_y_n_c_h_r_o_n_i_z_e │ │ │ │ │ +static void Synchronize(void *kernel) │ │ │ │ │ +Wait the dispatched kernel finishes. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_2_2_7 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ +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 │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_6_1_7 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ +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 │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_8_8_9 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_7_6_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_8_0_9 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ +bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, │ │ │ │ │ +DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords, │ │ │ │ │ +PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_0_1_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ +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) │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r_:_:_G_e_t_N_u_m_V_e_r_t_i_c_e_s │ │ │ │ │ -int GetNumVertices() const │ │ │ │ │ -Returns how many vertices allocated in this vertex buffer. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r_:_:_B_i_n_d_D_3_D_1_1_B_u_f_f_e_r │ │ │ │ │ -ID3D11Buffer * BindD3D11Buffer(ID3D11DeviceContext *deviceContext) │ │ │ │ │ -Returns the D3D11 buffer object. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r_:_:_B_i_n_d_C_p_u_B_u_f_f_e_r │ │ │ │ │ -float * BindCpuBuffer() │ │ │ │ │ -Returns the address of CPU buffer. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r_:_:_a_l_l_o_c_a_t_e │ │ │ │ │ -bool allocate(ID3D11Device *device) │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r_:_: │ │ │ │ │ -_~_C_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r │ │ │ │ │ -virtual ~CpuD3D11VertexBuffer() │ │ │ │ │ -Destructor. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_C_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r_:_:_B_i_n_d_V_B_O │ │ │ │ │ -ID3D11Buffer * BindVBO(ID3D11DeviceContext *deviceContext) │ │ │ │ │ -Returns the D3D11 buffer object (for Osd::Mesh interface) │ │ │ │ │ -DDeeffiinniittiioonn _c_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r_._h_:_7_5 │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_9_4_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ +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 │ │ │ │ │ +Generic limit eval function with derivatives. This function has a same │ │ │ │ │ +signature as other device kern... │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_0_7_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, │ │ │ │ │ +DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE const │ │ │ │ │ +*stencilTable) const │ │ │ │ │ +Generic stencil function. │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_4_5_7 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ +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 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_C_r_e_a_t_e │ │ │ │ │ +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) │ │ │ │ │ +Specialization to allow creation without a device context. │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_5_7 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ +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 │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_2_0_8_4 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_5_1_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +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 │ │ │ │ │ +Dispatch the GLSL XFB kernel on on GPU asynchronously returns false if the │ │ │ │ │ +kernel hasn't been compile... │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_6_7_9 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +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) │ │ │ │ │ +Generic static stencil function. This function has a same signature as other │ │ │ │ │ +device kernels have so t... │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_2_3_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_~_G_L_X_F_B_E_v_a_l_u_a_t_o_r │ │ │ │ │ +~GLXFBEvaluator() │ │ │ │ │ +Destructor. note that the GL context must be made current. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_C_o_m_p_i_l_e │ │ │ │ │ +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()) │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ +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 │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_4_2_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ +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 │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_7_4_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_9_7_6 │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _o_s_d │ │ │ │ │ - * _c_p_u_D_3_D_1_1_V_e_r_t_e_x_B_u_f_f_e_r_._h │ │ │ │ │ + * _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00851.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/osd/glXFBEvaluator.h File Reference │ │ │ │ +OpenSubdiv: opensubdiv/osd/glComputeEvaluator.h File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -90,30 +90,30 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
glXFBEvaluator.h File Reference
│ │ │ │ +
glComputeEvaluator.h File Reference
│ │ │ │
│ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ #include "../osd/opengl.h"
│ │ │ │ #include "../osd/types.h"
│ │ │ │ #include "../osd/bufferDescriptor.h"
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  GLStencilTableTBO
 GL TextureBuffer stencil table. More...
class  GLStencilTableSSBO
 GL stencil table (Shader Storage buffer) More...
 
class  GLXFBEvaluator
class  GLComputeEvaluator
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -124,13 +124,13 @@ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  OpenSubdiv
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION
 
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,30 +1,30 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -glXFBEvaluator.h File Reference │ │ │ │ │ +glComputeEvaluator.h File Reference │ │ │ │ │ #include "../version.h" │ │ │ │ │ #include "_._._/_o_s_d_/_o_p_e_n_g_l_._h" │ │ │ │ │ #include "_._._/_o_s_d_/_t_y_p_e_s_._h" │ │ │ │ │ #include "_._._/_o_s_d_/_b_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r_._h" │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -class   _G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O │ │ │ │ │ -  GL TextureBuffer stencil table. _M_o_r_e_._._. │ │ │ │ │ +class   _G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O │ │ │ │ │ +  GL stencil table (Shader Storage buffer) _M_o_r_e_._._. │ │ │ │ │   │ │ │ │ │ -class   _G_L_X_F_B_E_v_a_l_u_a_t_o_r │ │ │ │ │ +class   _G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d │ │ │ │ │   │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _o_s_d │ │ │ │ │ - * _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h │ │ │ │ │ + * _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00851.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -1,4 +1,4 @@ │ │ │ │ │ var a00851 = [ │ │ │ │ │ - ["GLStencilTableTBO", "a01249.html", "a01249"], │ │ │ │ │ - ["GLXFBEvaluator", "a01253.html", "a01253"] │ │ │ │ │ + ["GLStencilTableSSBO", "a01217.html", "a01217"], │ │ │ │ │ + ["GLComputeEvaluator", "a01221.html", "a01221"] │ │ │ │ │ ]; │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00851_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/osd/glXFBEvaluator.h Source File │ │ │ │ +OpenSubdiv: opensubdiv/osd/glComputeEvaluator.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -92,15 +92,15 @@ │ │ │ │
No Matches
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
glXFBEvaluator.h
│ │ │ │ +
glComputeEvaluator.h
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1//
│ │ │ │
2// Copyright 2015 Pixar
│ │ │ │
3//
│ │ │ │
4// Licensed under the Apache License, Version 2.0 (the "Apache License")
│ │ │ │
5// with the following modification; you may not use this file except in
│ │ │ │ @@ -119,16 +119,16 @@ │ │ │ │
18// Unless required by applicable law or agreed to in writing, software
│ │ │ │
19// distributed under the Apache License with the above modification is
│ │ │ │
20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
│ │ │ │
21// KIND, either express or implied. See the Apache License for the specific
│ │ │ │
22// language governing permissions and limitations under the Apache License.
│ │ │ │
23//
│ │ │ │
24
│ │ │ │ -
25#ifndef OPENSUBDIV3_OSD_GL_XFB_EVALUATOR_H
│ │ │ │ -
26#define OPENSUBDIV3_OSD_GL_XFB_EVALUATOR_H
│ │ │ │ +
25#ifndef OPENSUBDIV3_OSD_GL_COMPUTE_EVALUATOR_H
│ │ │ │ +
26#define OPENSUBDIV3_OSD_GL_COMPUTE_EVALUATOR_H
│ │ │ │
27
│ │ │ │
28#include "../version.h"
│ │ │ │
29
│ │ │ │
30#include "../osd/opengl.h"
│ │ │ │
31#include "../osd/types.h"
│ │ │ │
32#include "../osd/bufferDescriptor.h"
│ │ │ │
33
│ │ │ │ @@ -139,1185 +139,1112 @@ │ │ │ │
38 class PatchTable;
│ │ │ │
39 class StencilTable;
│ │ │ │
40 class LimitStencilTable;
│ │ │ │
41}
│ │ │ │
42
│ │ │ │
43namespace Osd {
│ │ │ │
44
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
53public:
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
55 Far::StencilTable const *stencilTable, void *deviceContext = NULL) {
│ │ │ │ -
56 (void)deviceContext; // unused
│ │ │ │ -
57 return new GLStencilTableTBO(stencilTable);
│ │ │ │ -
58 }
│ │ │ │ -
│ │ │ │ -
59
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
61 Far::LimitStencilTable const *limitStencilTable,
│ │ │ │ -
62 void *deviceContext = NULL) {
│ │ │ │ -
63 (void)deviceContext; // unused
│ │ │ │ -
64 return new GLStencilTableTBO(limitStencilTable);
│ │ │ │ -
65 }
│ │ │ │ -
│ │ │ │ -
66
│ │ │ │ -
67 explicit GLStencilTableTBO(Far::StencilTable const *stencilTable);
│ │ │ │ -
68 explicit GLStencilTableTBO(Far::LimitStencilTable const *limitStencilTable);
│ │ │ │ - │ │ │ │ -
70
│ │ │ │ -
71 // interfaces needed for GLSLTransformFeedbackKernel
│ │ │ │ -
72 GLuint GetSizesTexture() const { return _sizes; }
│ │ │ │ -
73 GLuint GetOffsetsTexture() const { return _offsets; }
│ │ │ │ -
74 GLuint GetIndicesTexture() const { return _indices; }
│ │ │ │ -
75 GLuint GetWeightsTexture() const { return _weights; }
│ │ │ │ -
76 GLuint GetDuWeightsTexture() const { return _duWeights; }
│ │ │ │ -
77 GLuint GetDvWeightsTexture() const { return _dvWeights; }
│ │ │ │ -
78 GLuint GetDuuWeightsTexture() const { return _duuWeights; }
│ │ │ │ -
79 GLuint GetDuvWeightsTexture() const { return _duvWeights; }
│ │ │ │ -
80 GLuint GetDvvWeightsTexture() const { return _dvvWeights; }
│ │ │ │ -
81 int GetNumStencils() const { return _numStencils; }
│ │ │ │ -
82
│ │ │ │ -
83private:
│ │ │ │ -
84 GLuint _sizes;
│ │ │ │ -
85 GLuint _offsets;
│ │ │ │ -
86 GLuint _indices;
│ │ │ │ -
87 GLuint _weights;
│ │ │ │ -
88 GLuint _duWeights;
│ │ │ │ -
89 GLuint _dvWeights;
│ │ │ │ -
90 GLuint _duuWeights;
│ │ │ │ -
91 GLuint _duvWeights;
│ │ │ │ -
92 GLuint _dvvWeights;
│ │ │ │ -
93 int _numStencils;
│ │ │ │ -
94};
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
52public:
│ │ │ │ +
│ │ │ │ +
53 static GLStencilTableSSBO *Create(Far::StencilTable const *stencilTable,
│ │ │ │ +
54 void *deviceContext = NULL) {
│ │ │ │ +
55 (void)deviceContext; // unused
│ │ │ │ +
56 return new GLStencilTableSSBO(stencilTable);
│ │ │ │ +
57 }
│ │ │ │ +
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
59 Far::LimitStencilTable const *limitStencilTable,
│ │ │ │ +
60 void *deviceContext = NULL) {
│ │ │ │ +
61 (void)deviceContext; // unused
│ │ │ │ +
62 return new GLStencilTableSSBO(limitStencilTable);
│ │ │ │ +
63 }
│ │ │ │ +
│ │ │ │ +
64
│ │ │ │ +
65 explicit GLStencilTableSSBO(Far::StencilTable const *stencilTable);
│ │ │ │ +
66 explicit GLStencilTableSSBO(Far::LimitStencilTable const *limitStencilTable);
│ │ │ │ + │ │ │ │ +
68
│ │ │ │ +
69 // interfaces needed for GLSLComputeKernel
│ │ │ │ +
70 GLuint GetSizesBuffer() const { return _sizes; }
│ │ │ │ +
71 GLuint GetOffsetsBuffer() const { return _offsets; }
│ │ │ │ +
72 GLuint GetIndicesBuffer() const { return _indices; }
│ │ │ │ +
73 GLuint GetWeightsBuffer() const { return _weights; }
│ │ │ │ +
74 GLuint GetDuWeightsBuffer() const { return _duWeights; }
│ │ │ │ +
75 GLuint GetDvWeightsBuffer() const { return _dvWeights; }
│ │ │ │ +
76 GLuint GetDuuWeightsBuffer() const { return _duuWeights; }
│ │ │ │ +
77 GLuint GetDuvWeightsBuffer() const { return _duvWeights; }
│ │ │ │ +
78 GLuint GetDvvWeightsBuffer() const { return _dvvWeights; }
│ │ │ │ +
79 int GetNumStencils() const { return _numStencils; }
│ │ │ │ +
80
│ │ │ │ +
81private:
│ │ │ │ +
82 GLuint _sizes;
│ │ │ │ +
83 GLuint _offsets;
│ │ │ │ +
84 GLuint _indices;
│ │ │ │ +
85 GLuint _weights;
│ │ │ │ +
86 GLuint _duWeights;
│ │ │ │ +
87 GLuint _dvWeights;
│ │ │ │ +
88 GLuint _duuWeights;
│ │ │ │ +
89 GLuint _duvWeights;
│ │ │ │ +
90 GLuint _dvvWeights;
│ │ │ │ +
91 int _numStencils;
│ │ │ │ +
92};
│ │ │ │
│ │ │ │ +
93
│ │ │ │ +
94// ---------------------------------------------------------------------------
│ │ │ │
95
│ │ │ │ -
96// ---------------------------------------------------------------------------
│ │ │ │ -
97
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
99public:
│ │ │ │ -
100 typedef bool Instantiatable;
│ │ │ │ -
101
│ │ │ │ -
103 template <typename DEVICE_CONTEXT>
│ │ │ │ -
│ │ │ │ -
104 static GLXFBEvaluator *Create(BufferDescriptor const &srcDesc,
│ │ │ │ -
105 BufferDescriptor const &dstDesc,
│ │ │ │ -
106 BufferDescriptor const &duDesc,
│ │ │ │ -
107 BufferDescriptor const &dvDesc,
│ │ │ │ -
108 DEVICE_CONTEXT deviceContext) {
│ │ │ │ -
109 bool interleavedDerivativeBuffers = deviceContext
│ │ │ │ -
110 ? deviceContext->AreInterleavedDerivativeBuffers()
│ │ │ │ -
111 : false;
│ │ │ │ -
112 return Create(srcDesc, dstDesc, duDesc, dvDesc,
│ │ │ │ -
113 interleavedDerivativeBuffers);
│ │ │ │ -
114 }
│ │ │ │ -
│ │ │ │ -
115
│ │ │ │ -
│ │ │ │ -
117 static GLXFBEvaluator *Create(BufferDescriptor const &srcDesc,
│ │ │ │ -
118 BufferDescriptor const &dstDesc,
│ │ │ │ -
119 BufferDescriptor const &duDesc,
│ │ │ │ -
120 BufferDescriptor const &dvDesc,
│ │ │ │ -
121 void * deviceContext) {
│ │ │ │ -
122 (void)deviceContext; // not used
│ │ │ │ -
123 return Create(srcDesc, dstDesc, duDesc, dvDesc);
│ │ │ │ -
124 }
│ │ │ │ -
│ │ │ │ -
125
│ │ │ │ -
│ │ │ │ -
126 static GLXFBEvaluator * Create(BufferDescriptor const &srcDesc,
│ │ │ │ -
127 BufferDescriptor const &dstDesc,
│ │ │ │ -
128 BufferDescriptor const &duDesc,
│ │ │ │ -
129 BufferDescriptor const &dvDesc,
│ │ │ │ -
130 bool interleavedDerivativeBuffers = false) {
│ │ │ │ -
131 GLXFBEvaluator *instance = new GLXFBEvaluator(interleavedDerivativeBuffers);
│ │ │ │ -
132 if (instance->Compile(srcDesc, dstDesc, duDesc, dvDesc))
│ │ │ │ -
133 return instance;
│ │ │ │ -
134 delete instance;
│ │ │ │ -
135 return NULL;
│ │ │ │ -
136 }
│ │ │ │ -
│ │ │ │ -
137
│ │ │ │ -
139 template <typename DEVICE_CONTEXT>
│ │ │ │ -
│ │ │ │ -
140 static GLXFBEvaluator *Create(BufferDescriptor const &srcDesc,
│ │ │ │ -
141 BufferDescriptor const &dstDesc,
│ │ │ │ -
142 BufferDescriptor const &duDesc,
│ │ │ │ -
143 BufferDescriptor const &dvDesc,
│ │ │ │ -
144 BufferDescriptor const &duuDesc,
│ │ │ │ -
145 BufferDescriptor const &duvDesc,
│ │ │ │ -
146 BufferDescriptor const &dvvDesc,
│ │ │ │ -
147 DEVICE_CONTEXT deviceContext) {
│ │ │ │ -
148 bool interleavedDerivativeBuffers = deviceContext
│ │ │ │ -
149 ? deviceContext->AreInterleavedDerivativeBuffers()
│ │ │ │ -
150 : false;
│ │ │ │ -
151 return Create(srcDesc, dstDesc, duDesc, dvDesc,
│ │ │ │ -
152 duuDesc, duvDesc, dvvDesc,
│ │ │ │ -
153 interleavedDerivativeBuffers);
│ │ │ │ -
154 }
│ │ │ │ -
│ │ │ │ -
155
│ │ │ │ -
│ │ │ │ -
157 static GLXFBEvaluator *Create(BufferDescriptor const &srcDesc,
│ │ │ │ -
158 BufferDescriptor const &dstDesc,
│ │ │ │ -
159 BufferDescriptor const &duDesc,
│ │ │ │ -
160 BufferDescriptor const &dvDesc,
│ │ │ │ -
161 BufferDescriptor const &duuDesc,
│ │ │ │ -
162 BufferDescriptor const &duvDesc,
│ │ │ │ -
163 BufferDescriptor const &dvvDesc,
│ │ │ │ -
164 void * deviceContext) {
│ │ │ │ -
165 (void)deviceContext; // not used
│ │ │ │ -
166 return Create(srcDesc, dstDesc, duDesc, dvDesc,
│ │ │ │ -
167 duuDesc, duvDesc, dvvDesc);
│ │ │ │ -
168 }
│ │ │ │ -
│ │ │ │ -
169
│ │ │ │ -
│ │ │ │ -
170 static GLXFBEvaluator * Create(BufferDescriptor const &srcDesc,
│ │ │ │ -
171 BufferDescriptor const &dstDesc,
│ │ │ │ -
172 BufferDescriptor const &duDesc,
│ │ │ │ -
173 BufferDescriptor const &dvDesc,
│ │ │ │ -
174 BufferDescriptor const &duuDesc,
│ │ │ │ -
175 BufferDescriptor const &duvDesc,
│ │ │ │ -
176 BufferDescriptor const &dvvDesc,
│ │ │ │ -
177 bool interleavedDerivativeBuffers = false) {
│ │ │ │ -
178 GLXFBEvaluator *instance = new GLXFBEvaluator(interleavedDerivativeBuffers);
│ │ │ │ -
179 if (instance->Compile(srcDesc, dstDesc, duDesc, dvDesc,
│ │ │ │ -
180 duuDesc, duvDesc, dvvDesc))
│ │ │ │ -
181 return instance;
│ │ │ │ -
182 delete instance;
│ │ │ │ -
183 return NULL;
│ │ │ │ -
184 }
│ │ │ │ -
│ │ │ │ -
185
│ │ │ │ -
199 GLXFBEvaluator(bool interleavedDerivativeBuffers = false);
│ │ │ │ -
200
│ │ │ │ - │ │ │ │ -
203
│ │ │ │ -
209
│ │ │ │ -
237 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ -
│ │ │ │ -
238 static bool EvalStencils(
│ │ │ │ -
239 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
240 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
97public:
│ │ │ │ +
98 typedef bool Instantiatable;
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
100 BufferDescriptor const &dstDesc,
│ │ │ │ +
101 BufferDescriptor const &duDesc,
│ │ │ │ +
102 BufferDescriptor const &dvDesc,
│ │ │ │ +
103 void * deviceContext = NULL) {
│ │ │ │ +
104 return Create(srcDesc, dstDesc, duDesc, dvDesc,
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
108 deviceContext);
│ │ │ │ +
109 }
│ │ │ │ +
│ │ │ │ +
110
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
112 BufferDescriptor const &dstDesc,
│ │ │ │ +
113 BufferDescriptor const &duDesc,
│ │ │ │ +
114 BufferDescriptor const &dvDesc,
│ │ │ │ +
115 BufferDescriptor const &duuDesc,
│ │ │ │ +
116 BufferDescriptor const &duvDesc,
│ │ │ │ +
117 BufferDescriptor const &dvvDesc,
│ │ │ │ +
118 void * deviceContext = NULL) {
│ │ │ │ +
119 (void)deviceContext; // not used
│ │ │ │ +
120 GLComputeEvaluator *instance = new GLComputeEvaluator();
│ │ │ │ +
121 if (instance->Compile(srcDesc, dstDesc, duDesc, dvDesc,
│ │ │ │ +
122 duuDesc, duvDesc, dvvDesc))
│ │ │ │ +
123 return instance;
│ │ │ │ +
124 delete instance;
│ │ │ │ +
125 return NULL;
│ │ │ │ +
126 }
│ │ │ │ +
│ │ │ │ +
127
│ │ │ │ + │ │ │ │ +
130
│ │ │ │ + │ │ │ │ +
133
│ │ │ │ +
139
│ │ │ │ +
167 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ +
│ │ │ │ +
168 static bool EvalStencils(
│ │ │ │ +
169 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
170 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
171 STENCIL_TABLE const *stencilTable,
│ │ │ │ +
172 GLComputeEvaluator const *instance,
│ │ │ │ +
173 void * deviceContext = NULL) {
│ │ │ │ +
174
│ │ │ │ +
175 if (instance) {
│ │ │ │ +
176 return instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │ +
177 dstBuffer, dstDesc,
│ │ │ │ +
178 stencilTable);
│ │ │ │ +
179 } else {
│ │ │ │ +
180 // Create an instance on demand (slow)
│ │ │ │ +
181 (void)deviceContext; // unused
│ │ │ │ +
182 instance = Create(srcDesc, dstDesc,
│ │ │ │ + │ │ │ │ + │ │ │ │ +
185 if (instance) {
│ │ │ │ +
186 bool r = instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │ +
187 dstBuffer, dstDesc,
│ │ │ │ +
188 stencilTable);
│ │ │ │ +
189 delete instance;
│ │ │ │ +
190 return r;
│ │ │ │ +
191 }
│ │ │ │ +
192 return false;
│ │ │ │ +
193 }
│ │ │ │ +
194 }
│ │ │ │ +
│ │ │ │ +
195
│ │ │ │ +
235 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ +
│ │ │ │ +
236 static bool EvalStencils(
│ │ │ │ +
237 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
238 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
239 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
240 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │
241 STENCIL_TABLE const *stencilTable,
│ │ │ │ -
242 GLXFBEvaluator const *instance,
│ │ │ │ +
242 GLComputeEvaluator const *instance,
│ │ │ │
243 void * deviceContext = NULL) {
│ │ │ │
244
│ │ │ │
245 if (instance) {
│ │ │ │ -
246 return instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │ +
246 return instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │
247 dstBuffer, dstDesc,
│ │ │ │ -
248 stencilTable);
│ │ │ │ -
249 } else {
│ │ │ │ -
250 // Create an instance on demand (slow)
│ │ │ │ -
251 (void)deviceContext; // unused
│ │ │ │ -
252 instance = Create(srcDesc, dstDesc,
│ │ │ │ - │ │ │ │ - │ │ │ │ +
248 duBuffer, duDesc,
│ │ │ │ +
249 dvBuffer, dvDesc,
│ │ │ │ +
250 stencilTable);
│ │ │ │ +
251 } else {
│ │ │ │ +
252 // Create an instance on demand (slow)
│ │ │ │ +
253 (void)deviceContext; // unused
│ │ │ │ +
254 instance = Create(srcDesc, dstDesc, duDesc, dvDesc);
│ │ │ │
255 if (instance) {
│ │ │ │ -
256 bool r = instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │ +
256 bool r = instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │
257 dstBuffer, dstDesc,
│ │ │ │ -
258 stencilTable);
│ │ │ │ -
259 delete instance;
│ │ │ │ -
260 return r;
│ │ │ │ -
261 }
│ │ │ │ -
262 return false;
│ │ │ │ -
263 }
│ │ │ │ -
264 }
│ │ │ │ -
│ │ │ │ -
265
│ │ │ │ -
305 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ -
│ │ │ │ -
306 static bool EvalStencils(
│ │ │ │ -
307 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
308 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
309 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
310 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
311 STENCIL_TABLE const *stencilTable,
│ │ │ │ -
312 GLXFBEvaluator const *instance,
│ │ │ │ -
313 void * deviceContext = NULL) {
│ │ │ │ -
314
│ │ │ │ -
315 if (instance) {
│ │ │ │ -
316 return instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │ -
317 dstBuffer, dstDesc,
│ │ │ │ -
318 duBuffer, duDesc,
│ │ │ │ -
319 dvBuffer, dvDesc,
│ │ │ │ -
320 stencilTable);
│ │ │ │ -
321 } else {
│ │ │ │ -
322 // Create an instance on demand (slow)
│ │ │ │ -
323 (void)deviceContext; // unused
│ │ │ │ -
324 instance = Create(srcDesc, dstDesc, duDesc, dvDesc);
│ │ │ │ -
325 if (instance) {
│ │ │ │ -
326 bool r = instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │ -
327 dstBuffer, dstDesc,
│ │ │ │ -
328 duBuffer, duDesc,
│ │ │ │ -
329 dvBuffer, dvDesc,
│ │ │ │ -
330 stencilTable);
│ │ │ │ -
331 delete instance;
│ │ │ │ -
332 return r;
│ │ │ │ -
333 }
│ │ │ │ -
334 return false;
│ │ │ │ -
335 }
│ │ │ │ -
336 }
│ │ │ │ -
│ │ │ │ +
258 duBuffer, duDesc,
│ │ │ │ +
259 dvBuffer, dvDesc,
│ │ │ │ +
260 stencilTable);
│ │ │ │ +
261 delete instance;
│ │ │ │ +
262 return r;
│ │ │ │ +
263 }
│ │ │ │ +
264 return false;
│ │ │ │ +
265 }
│ │ │ │ +
266 }
│ │ │ │ +
│ │ │ │ +
267
│ │ │ │ +
325 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ +
│ │ │ │ +
326 static bool EvalStencils(
│ │ │ │ +
327 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
328 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
329 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
330 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
331 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ +
332 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ +
333 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ +
334 STENCIL_TABLE const *stencilTable,
│ │ │ │ +
335 GLComputeEvaluator const *instance,
│ │ │ │ +
336 void * deviceContext = NULL) {
│ │ │ │
337
│ │ │ │ -
395 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ -
│ │ │ │ -
396 static bool EvalStencils(
│ │ │ │ -
397 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
398 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
399 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
400 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
401 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ -
402 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ -
403 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ -
404 STENCIL_TABLE const *stencilTable,
│ │ │ │ -
405 GLXFBEvaluator const *instance,
│ │ │ │ -
406 void * deviceContext = NULL) {
│ │ │ │ -
407
│ │ │ │ -
408 if (instance) {
│ │ │ │ -
409 return instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │ -
410 dstBuffer, dstDesc,
│ │ │ │ -
411 duBuffer, duDesc,
│ │ │ │ -
412 dvBuffer, dvDesc,
│ │ │ │ -
413 duuBuffer, duuDesc,
│ │ │ │ -
414 duvBuffer, duvDesc,
│ │ │ │ -
415 dvvBuffer, dvvDesc,
│ │ │ │ -
416 stencilTable);
│ │ │ │ -
417 } else {
│ │ │ │ -
418 // Create an instance on demand (slow)
│ │ │ │ -
419 (void)deviceContext; // unused
│ │ │ │ -
420 instance = Create(srcDesc, dstDesc,
│ │ │ │ -
421 duDesc, dvDesc,
│ │ │ │ -
422 duuDesc, duvDesc, dvvDesc);
│ │ │ │ -
423 if (instance) {
│ │ │ │ -
424 bool r = instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │ -
425 dstBuffer, dstDesc,
│ │ │ │ -
426 duBuffer, duDesc,
│ │ │ │ -
427 dvBuffer, dvDesc,
│ │ │ │ -
428 duuBuffer, duuDesc,
│ │ │ │ -
429 duvBuffer, duvDesc,
│ │ │ │ -
430 dvvBuffer, dvvDesc,
│ │ │ │ -
431 stencilTable);
│ │ │ │ -
432 delete instance;
│ │ │ │ -
433 return r;
│ │ │ │ -
434 }
│ │ │ │ -
435 return false;
│ │ │ │ -
436 }
│ │ │ │ -
437 }
│ │ │ │ -
│ │ │ │ -
438
│ │ │ │ -
456 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
458 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
459 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
460 STENCIL_TABLE const *stencilTable) const {
│ │ │ │ -
461
│ │ │ │ -
462 return EvalStencils(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ -
463 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ -
464 0, BufferDescriptor(),
│ │ │ │ -
465 0, BufferDescriptor(),
│ │ │ │ -
466 stencilTable->GetSizesTexture(),
│ │ │ │ -
467 stencilTable->GetOffsetsTexture(),
│ │ │ │ -
468 stencilTable->GetIndicesTexture(),
│ │ │ │ -
469 stencilTable->GetWeightsTexture(),
│ │ │ │ -
470 0,
│ │ │ │ -
471 0,
│ │ │ │ -
472 /* start = */ 0,
│ │ │ │ -
473 /* end = */ stencilTable->GetNumStencils());
│ │ │ │ -
474 }
│ │ │ │ -
│ │ │ │ -
475
│ │ │ │ -
505 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
507 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
508 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
509 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
510 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
511 STENCIL_TABLE const *stencilTable) const {
│ │ │ │ -
512
│ │ │ │ -
513 return EvalStencils(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ -
514 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ -
515 duBuffer->BindVBO(), duDesc,
│ │ │ │ -
516 dvBuffer->BindVBO(), dvDesc,
│ │ │ │ -
517 stencilTable->GetSizesTexture(),
│ │ │ │ -
518 stencilTable->GetOffsetsTexture(),
│ │ │ │ -
519 stencilTable->GetIndicesTexture(),
│ │ │ │ -
520 stencilTable->GetWeightsTexture(),
│ │ │ │ -
521 stencilTable->GetDuWeightsTexture(),
│ │ │ │ -
522 stencilTable->GetDvWeightsTexture(),
│ │ │ │ -
523 /* start = */ 0,
│ │ │ │ -
524 /* end = */ stencilTable->GetNumStencils());
│ │ │ │ -
525 }
│ │ │ │ -
│ │ │ │ -
526
│ │ │ │ -
574 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
576 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
577 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
578 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
579 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
580 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ -
581 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ -
582 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ -
583 STENCIL_TABLE const *stencilTable) const {
│ │ │ │ -
584
│ │ │ │ -
585 return EvalStencils(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ -
586 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ -
587 duBuffer->BindVBO(), duDesc,
│ │ │ │ -
588 dvBuffer->BindVBO(), dvDesc,
│ │ │ │ -
589 duuBuffer->BindVBO(), duuDesc,
│ │ │ │ -
590 duvBuffer->BindVBO(), duvDesc,
│ │ │ │ -
591 dvvBuffer->BindVBO(), dvvDesc,
│ │ │ │ -
592 stencilTable->GetSizesTexture(),
│ │ │ │ -
593 stencilTable->GetOffsetsTexture(),
│ │ │ │ -
594 stencilTable->GetIndicesTexture(),
│ │ │ │ -
595 stencilTable->GetWeightsTexture(),
│ │ │ │ -
596 stencilTable->GetDuWeightsTexture(),
│ │ │ │ -
597 stencilTable->GetDvWeightsTexture(),
│ │ │ │ -
598 stencilTable->GetDuuWeightsTexture(),
│ │ │ │ -
599 stencilTable->GetDuvWeightsTexture(),
│ │ │ │ -
600 stencilTable->GetDvvWeightsTexture(),
│ │ │ │ -
601 /* start = */ 0,
│ │ │ │ -
602 /* end = */ stencilTable->GetNumStencils());
│ │ │ │ -
603 }
│ │ │ │ -
│ │ │ │ -
604
│ │ │ │ -
640 bool EvalStencils(GLuint srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
641 GLuint dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
642 GLuint duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
643 GLuint dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
644 GLuint sizesBuffer,
│ │ │ │ -
645 GLuint offsetsBuffer,
│ │ │ │ -
646 GLuint indicesBuffer,
│ │ │ │ -
647 GLuint weightsBuffer,
│ │ │ │ -
648 GLuint duWeightsBuffer,
│ │ │ │ -
649 GLuint dvWeightsBuffer,
│ │ │ │ -
650 int start,
│ │ │ │ -
651 int end) const;
│ │ │ │ -
652
│ │ │ │ -
706 bool EvalStencils(GLuint srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
707 GLuint dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
708 GLuint duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
709 GLuint dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
710 GLuint duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ -
711 GLuint duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ -
712 GLuint dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ -
713 GLuint sizesBuffer,
│ │ │ │ -
714 GLuint offsetsBuffer,
│ │ │ │ -
715 GLuint indicesBuffer,
│ │ │ │ -
716 GLuint weightsBuffer,
│ │ │ │ -
717 GLuint duWeightsBuffer,
│ │ │ │ -
718 GLuint dvWeightsBuffer,
│ │ │ │ -
719 GLuint duuWeightsBuffer,
│ │ │ │ -
720 GLuint duvWeightsBuffer,
│ │ │ │ -
721 GLuint dvvWeightsBuffer,
│ │ │ │ -
722 int start,
│ │ │ │ -
723 int end) const;
│ │ │ │ -
724
│ │ │ │ -
730
│ │ │ │ -
763 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
764 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ -
765 static bool EvalPatches(
│ │ │ │ -
766 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
767 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
768 int numPatchCoords,
│ │ │ │ -
769 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
770 PATCH_TABLE *patchTable,
│ │ │ │ -
771 GLXFBEvaluator const *instance,
│ │ │ │ -
772 void * deviceContext = NULL) {
│ │ │ │ -
773
│ │ │ │ -
774 if (instance) {
│ │ │ │ -
775 return instance->EvalPatches(srcBuffer, srcDesc,
│ │ │ │ -
776 dstBuffer, dstDesc,
│ │ │ │ -
777 numPatchCoords, patchCoords,
│ │ │ │ -
778 patchTable);
│ │ │ │ -
779 } else {
│ │ │ │ -
780 // Create an instance on demand (slow)
│ │ │ │ -
781 (void)deviceContext; // unused
│ │ │ │ -
782 instance = Create(srcDesc, dstDesc,
│ │ │ │ - │ │ │ │ - │ │ │ │ -
785 if (instance) {
│ │ │ │ -
786 bool r = instance->EvalPatches(srcBuffer, srcDesc,
│ │ │ │ -
787 dstBuffer, dstDesc,
│ │ │ │ -
788 numPatchCoords, patchCoords,
│ │ │ │ -
789 patchTable);
│ │ │ │ -
790 delete instance;
│ │ │ │ -
791 return r;
│ │ │ │ -
792 }
│ │ │ │ -
793 return false;
│ │ │ │ -
794 }
│ │ │ │ -
795 }
│ │ │ │ -
│ │ │ │ -
796
│ │ │ │ -
841 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
842 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ -
843 static bool EvalPatches(
│ │ │ │ -
844 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
845 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
846 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
847 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
848 int numPatchCoords,
│ │ │ │ -
849 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
850 PATCH_TABLE *patchTable,
│ │ │ │ -
851 GLXFBEvaluator const *instance,
│ │ │ │ -
852 void * deviceContext = NULL) {
│ │ │ │ -
853
│ │ │ │ -
854 if (instance) {
│ │ │ │ -
855 return instance->EvalPatches(srcBuffer, srcDesc,
│ │ │ │ -
856 dstBuffer, dstDesc,
│ │ │ │ -
857 duBuffer, duDesc,
│ │ │ │ -
858 dvBuffer, dvDesc,
│ │ │ │ -
859 numPatchCoords, patchCoords,
│ │ │ │ -
860 patchTable);
│ │ │ │ -
861 } else {
│ │ │ │ -
862 // Create an instance on demand (slow)
│ │ │ │ -
863 (void)deviceContext; // unused
│ │ │ │ -
864 instance = Create(srcDesc, dstDesc, duDesc, dvDesc);
│ │ │ │ -
865 if (instance) {
│ │ │ │ -
866 bool r = instance->EvalPatches(srcBuffer, srcDesc,
│ │ │ │ -
867 dstBuffer, dstDesc,
│ │ │ │ -
868 duBuffer, duDesc,
│ │ │ │ -
869 dvBuffer, dvDesc,
│ │ │ │ -
870 numPatchCoords, patchCoords,
│ │ │ │ -
871 patchTable);
│ │ │ │ -
872 delete instance;
│ │ │ │ -
873 return r;
│ │ │ │ -
874 }
│ │ │ │ -
875 return false;
│ │ │ │ -
876 }
│ │ │ │ -
877 }
│ │ │ │ +
338 if (instance) {
│ │ │ │ +
339 return instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │ +
340 dstBuffer, dstDesc,
│ │ │ │ +
341 duBuffer, duDesc,
│ │ │ │ +
342 dvBuffer, dvDesc,
│ │ │ │ +
343 duuBuffer, duuDesc,
│ │ │ │ +
344 duvBuffer, duvDesc,
│ │ │ │ +
345 dvvBuffer, dvvDesc,
│ │ │ │ +
346 stencilTable);
│ │ │ │ +
347 } else {
│ │ │ │ +
348 // Create an instance on demand (slow)
│ │ │ │ +
349 (void)deviceContext; // unused
│ │ │ │ +
350 instance = Create(srcDesc, dstDesc, duDesc, dvDesc,
│ │ │ │ +
351 duuDesc, duvDesc, dvvDesc);
│ │ │ │ +
352 if (instance) {
│ │ │ │ +
353 bool r = instance->EvalStencils(srcBuffer, srcDesc,
│ │ │ │ +
354 dstBuffer, dstDesc,
│ │ │ │ +
355 duBuffer, duDesc,
│ │ │ │ +
356 dvBuffer, dvDesc,
│ │ │ │ +
357 duuBuffer, duuDesc,
│ │ │ │ +
358 duvBuffer, duvDesc,
│ │ │ │ +
359 dvvBuffer, dvvDesc,
│ │ │ │ +
360 stencilTable);
│ │ │ │ +
361 delete instance;
│ │ │ │ +
362 return r;
│ │ │ │ +
363 }
│ │ │ │ +
364 return false;
│ │ │ │ +
365 }
│ │ │ │ +
366 }
│ │ │ │ +
│ │ │ │ +
367
│ │ │ │ +
385 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
387 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
388 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
389 STENCIL_TABLE const *stencilTable) const {
│ │ │ │ +
390 return EvalStencils(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ +
391 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ +
392 0, BufferDescriptor(),
│ │ │ │ +
393 0, BufferDescriptor(),
│ │ │ │ +
394 stencilTable->GetSizesBuffer(),
│ │ │ │ +
395 stencilTable->GetOffsetsBuffer(),
│ │ │ │ +
396 stencilTable->GetIndicesBuffer(),
│ │ │ │ +
397 stencilTable->GetWeightsBuffer(),
│ │ │ │ +
398 0,
│ │ │ │ +
399 0,
│ │ │ │ +
400 /* start = */ 0,
│ │ │ │ +
401 /* end = */ stencilTable->GetNumStencils());
│ │ │ │ +
402 }
│ │ │ │ +
│ │ │ │ +
403
│ │ │ │ +
433 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
435 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
436 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
437 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
438 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
439 STENCIL_TABLE const *stencilTable) const {
│ │ │ │ +
440 return EvalStencils(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ +
441 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ +
442 duBuffer->BindVBO(), duDesc,
│ │ │ │ +
443 dvBuffer->BindVBO(), dvDesc,
│ │ │ │ +
444 stencilTable->GetSizesBuffer(),
│ │ │ │ +
445 stencilTable->GetOffsetsBuffer(),
│ │ │ │ +
446 stencilTable->GetIndicesBuffer(),
│ │ │ │ +
447 stencilTable->GetWeightsBuffer(),
│ │ │ │ +
448 stencilTable->GetDuWeightsBuffer(),
│ │ │ │ +
449 stencilTable->GetDvWeightsBuffer(),
│ │ │ │ +
450 /* start = */ 0,
│ │ │ │ +
451 /* end = */ stencilTable->GetNumStencils());
│ │ │ │ +
452 }
│ │ │ │ +
│ │ │ │ +
453
│ │ │ │ +
501 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
503 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
504 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
505 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
506 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
507 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ +
508 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ +
509 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ +
510 STENCIL_TABLE const *stencilTable) const {
│ │ │ │ +
511 return EvalStencils(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ +
512 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ +
513 duBuffer->BindVBO(), duDesc,
│ │ │ │ +
514 dvBuffer->BindVBO(), dvDesc,
│ │ │ │ +
515 duuBuffer->BindVBO(), duuDesc,
│ │ │ │ +
516 duvBuffer->BindVBO(), duvDesc,
│ │ │ │ +
517 dvvBuffer->BindVBO(), dvvDesc,
│ │ │ │ +
518 stencilTable->GetSizesBuffer(),
│ │ │ │ +
519 stencilTable->GetOffsetsBuffer(),
│ │ │ │ +
520 stencilTable->GetIndicesBuffer(),
│ │ │ │ +
521 stencilTable->GetWeightsBuffer(),
│ │ │ │ +
522 stencilTable->GetDuWeightsBuffer(),
│ │ │ │ +
523 stencilTable->GetDvWeightsBuffer(),
│ │ │ │ +
524 stencilTable->GetDuuWeightsBuffer(),
│ │ │ │ +
525 stencilTable->GetDuvWeightsBuffer(),
│ │ │ │ +
526 stencilTable->GetDvvWeightsBuffer(),
│ │ │ │ +
527 /* start = */ 0,
│ │ │ │ +
528 /* end = */ stencilTable->GetNumStencils());
│ │ │ │ +
529 }
│ │ │ │ +
│ │ │ │ +
530
│ │ │ │ +
566 bool EvalStencils(GLuint srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
567 GLuint dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
568 GLuint duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
569 GLuint dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
570 GLuint sizesBuffer,
│ │ │ │ +
571 GLuint offsetsBuffer,
│ │ │ │ +
572 GLuint indicesBuffer,
│ │ │ │ +
573 GLuint weightsBuffer,
│ │ │ │ +
574 GLuint duWeightsBuffer,
│ │ │ │ +
575 GLuint dvWeightsBuffer,
│ │ │ │ +
576 int start,
│ │ │ │ +
577 int end) const;
│ │ │ │ +
578
│ │ │ │ +
632 bool EvalStencils(GLuint srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
633 GLuint dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
634 GLuint duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
635 GLuint dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
636 GLuint duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ +
637 GLuint duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ +
638 GLuint dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ +
639 GLuint sizesBuffer,
│ │ │ │ +
640 GLuint offsetsBuffer,
│ │ │ │ +
641 GLuint indicesBuffer,
│ │ │ │ +
642 GLuint weightsBuffer,
│ │ │ │ +
643 GLuint duWeightsBuffer,
│ │ │ │ +
644 GLuint dvWeightsBuffer,
│ │ │ │ +
645 GLuint duuWeightsBuffer,
│ │ │ │ +
646 GLuint duvWeightsBuffer,
│ │ │ │ +
647 GLuint dvvWeightsBuffer,
│ │ │ │ +
648 int start,
│ │ │ │ +
649 int end) const;
│ │ │ │ +
650
│ │ │ │ +
656
│ │ │ │ +
689 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
690 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ +
691 static bool EvalPatches(
│ │ │ │ +
692 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
693 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
694 int numPatchCoords,
│ │ │ │ +
695 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
696 PATCH_TABLE *patchTable,
│ │ │ │ +
697 GLComputeEvaluator const *instance,
│ │ │ │ +
698 void * deviceContext = NULL) {
│ │ │ │ +
699
│ │ │ │ +
700 if (instance) {
│ │ │ │ +
701 return instance->EvalPatches(srcBuffer, srcDesc,
│ │ │ │ +
702 dstBuffer, dstDesc,
│ │ │ │ +
703 numPatchCoords, patchCoords,
│ │ │ │ +
704 patchTable);
│ │ │ │ +
705 } else {
│ │ │ │ +
706 // Create an instance on demand (slow)
│ │ │ │ +
707 (void)deviceContext; // unused
│ │ │ │ +
708 instance = Create(srcDesc, dstDesc,
│ │ │ │ + │ │ │ │ + │ │ │ │ +
711 if (instance) {
│ │ │ │ +
712 bool r = instance->EvalPatches(srcBuffer, srcDesc,
│ │ │ │ +
713 dstBuffer, dstDesc,
│ │ │ │ +
714 numPatchCoords, patchCoords,
│ │ │ │ +
715 patchTable);
│ │ │ │ +
716 delete instance;
│ │ │ │ +
717 return r;
│ │ │ │ +
718 }
│ │ │ │ +
719 return false;
│ │ │ │ +
720 }
│ │ │ │ +
721 }
│ │ │ │ +
│ │ │ │ +
722
│ │ │ │ +
767 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
768 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ +
769 static bool EvalPatches(
│ │ │ │ +
770 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
771 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
772 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
773 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
774 int numPatchCoords,
│ │ │ │ +
775 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
776 PATCH_TABLE *patchTable,
│ │ │ │ +
777 GLComputeEvaluator const *instance,
│ │ │ │ +
778 void * deviceContext = NULL) {
│ │ │ │ +
779
│ │ │ │ +
780 if (instance) {
│ │ │ │ +
781 return instance->EvalPatches(srcBuffer, srcDesc,
│ │ │ │ +
782 dstBuffer, dstDesc,
│ │ │ │ +
783 duBuffer, duDesc,
│ │ │ │ +
784 dvBuffer, dvDesc,
│ │ │ │ +
785 numPatchCoords, patchCoords,
│ │ │ │ +
786 patchTable);
│ │ │ │ +
787 } else {
│ │ │ │ +
788 // Create an instance on demand (slow)
│ │ │ │ +
789 (void)deviceContext; // unused
│ │ │ │ +
790 instance = Create(srcDesc, dstDesc,
│ │ │ │ +
791 duDesc, dvDesc);
│ │ │ │ +
792 if (instance) {
│ │ │ │ +
793 bool r = instance->EvalPatches(srcBuffer, srcDesc,
│ │ │ │ +
794 dstBuffer, dstDesc,
│ │ │ │ +
795 duBuffer, duDesc,
│ │ │ │ +
796 dvBuffer, dvDesc,
│ │ │ │ +
797 numPatchCoords, patchCoords,
│ │ │ │ +
798 patchTable);
│ │ │ │ +
799 delete instance;
│ │ │ │ +
800 return r;
│ │ │ │ +
801 }
│ │ │ │ +
802 return false;
│ │ │ │ +
803 }
│ │ │ │ +
804 }
│ │ │ │ +
│ │ │ │ +
805
│ │ │ │ +
868 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
869 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ +
870 static bool EvalPatches(
│ │ │ │ +
871 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
872 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
873 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
874 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
875 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ +
876 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ +
877 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ +
878 int numPatchCoords,
│ │ │ │ +
879 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
880 PATCH_TABLE *patchTable,
│ │ │ │ +
881 GLComputeEvaluator const *instance,
│ │ │ │ +
882 void * deviceContext = NULL) {
│ │ │ │ +
883
│ │ │ │ +
884 if (instance) {
│ │ │ │ +
885 return instance->EvalPatches(srcBuffer, srcDesc,
│ │ │ │ +
886 dstBuffer, dstDesc,
│ │ │ │ +
887 duBuffer, duDesc,
│ │ │ │ +
888 dvBuffer, dvDesc,
│ │ │ │ +
889 duuBuffer, duuDesc,
│ │ │ │ +
890 duvBuffer, duvDesc,
│ │ │ │ +
891 dvvBuffer, dvvDesc,
│ │ │ │ +
892 numPatchCoords, patchCoords,
│ │ │ │ +
893 patchTable);
│ │ │ │ +
894 } else {
│ │ │ │ +
895 // Create an instance on demand (slow)
│ │ │ │ +
896 (void)deviceContext; // unused
│ │ │ │ +
897 instance = Create(srcDesc, dstDesc,
│ │ │ │ +
898 duDesc, dvDesc,
│ │ │ │ +
899 duuDesc, duvDesc, dvvDesc);
│ │ │ │ +
900 if (instance) {
│ │ │ │ +
901 bool r = instance->EvalPatches(srcBuffer, srcDesc,
│ │ │ │ +
902 dstBuffer, dstDesc,
│ │ │ │ +
903 duBuffer, duDesc,
│ │ │ │ +
904 dvBuffer, dvDesc,
│ │ │ │ +
905 duuBuffer, duuDesc,
│ │ │ │ +
906 duvBuffer, duvDesc,
│ │ │ │ +
907 dvvBuffer, dvvDesc,
│ │ │ │ +
908 numPatchCoords, patchCoords,
│ │ │ │ +
909 patchTable);
│ │ │ │ +
910 delete instance;
│ │ │ │ +
911 return r;
│ │ │ │ +
912 }
│ │ │ │ +
913 return false;
│ │ │ │ +
914 }
│ │ │ │ +
915 }
│ │ │ │
│ │ │ │ -
878
│ │ │ │ +
916
│ │ │ │
941 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │
942 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │
│ │ │ │ -
943 static bool EvalPatches(
│ │ │ │ + │ │ │ │
944 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │
945 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
946 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
947 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
948 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ -
949 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ -
950 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ -
951 int numPatchCoords,
│ │ │ │ -
952 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
953 PATCH_TABLE *patchTable,
│ │ │ │ -
954 GLXFBEvaluator const *instance,
│ │ │ │ -
955 void * deviceContext = NULL) {
│ │ │ │ -
956
│ │ │ │ -
957 if (instance) {
│ │ │ │ -
958 return instance->EvalPatches(srcBuffer, srcDesc,
│ │ │ │ -
959 dstBuffer, dstDesc,
│ │ │ │ -
960 duBuffer, duDesc,
│ │ │ │ -
961 dvBuffer, dvDesc,
│ │ │ │ -
962 duuBuffer, duuDesc,
│ │ │ │ -
963 duvBuffer, duvDesc,
│ │ │ │ -
964 dvvBuffer, dvvDesc,
│ │ │ │ -
965 numPatchCoords, patchCoords,
│ │ │ │ -
966 patchTable);
│ │ │ │ -
967 } else {
│ │ │ │ -
968 // Create an instance on demand (slow)
│ │ │ │ -
969 (void)deviceContext; // unused
│ │ │ │ -
970 instance = Create(srcDesc, dstDesc,
│ │ │ │ -
971 duDesc, dvDesc,
│ │ │ │ -
972 duuDesc, duvDesc, dvvDesc);
│ │ │ │ -
973 if (instance) {
│ │ │ │ -
974 bool r = instance->EvalPatches(srcBuffer, srcDesc,
│ │ │ │ -
975 dstBuffer, dstDesc,
│ │ │ │ -
976 duBuffer, duDesc,
│ │ │ │ -
977 dvBuffer, dvDesc,
│ │ │ │ -
978 duuBuffer, duuDesc,
│ │ │ │ -
979 duvBuffer, duvDesc,
│ │ │ │ -
980 dvvBuffer, dvvDesc,
│ │ │ │ -
981 numPatchCoords, patchCoords,
│ │ │ │ -
982 patchTable);
│ │ │ │ -
983 delete instance;
│ │ │ │ -
984 return r;
│ │ │ │ -
985 }
│ │ │ │ -
986 return false;
│ │ │ │ -
987 }
│ │ │ │ -
988 }
│ │ │ │ -
│ │ │ │ -
989
│ │ │ │ -
1014 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1015 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1017 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1018 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1019 int numPatchCoords,
│ │ │ │ -
1020 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1021 PATCH_TABLE *patchTable) const {
│ │ │ │ -
1022
│ │ │ │ -
1023 return EvalPatches(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ -
1024 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ -
1025 0, BufferDescriptor(),
│ │ │ │ -
1026 0, BufferDescriptor(),
│ │ │ │ -
1027 numPatchCoords,
│ │ │ │ -
1028 patchCoords->BindVBO(),
│ │ │ │ -
1029 patchTable->GetPatchArrays(),
│ │ │ │ -
1030 patchTable->GetPatchIndexTextureBuffer(),
│ │ │ │ -
1031 patchTable->GetPatchParamTextureBuffer());
│ │ │ │ -
1032 }
│ │ │ │ -
│ │ │ │ -
1033
│ │ │ │ -
1068 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1069 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1071 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1072 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1073 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
1074 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
1075 int numPatchCoords,
│ │ │ │ -
1076 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1077 PATCH_TABLE *patchTable) const {
│ │ │ │ -
1078
│ │ │ │ -
1079 return EvalPatches(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ -
1080 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ -
1081 duBuffer->BindVBO(), duDesc,
│ │ │ │ -
1082 dvBuffer->BindVBO(), dvDesc,
│ │ │ │ -
1083 numPatchCoords,
│ │ │ │ -
1084 patchCoords->BindVBO(),
│ │ │ │ -
1085 patchTable->GetPatchArrays(),
│ │ │ │ -
1086 patchTable->GetPatchIndexTextureBuffer(),
│ │ │ │ -
1087 patchTable->GetPatchParamTextureBuffer());
│ │ │ │ -
1088 }
│ │ │ │ -
│ │ │ │ -
1089
│ │ │ │ -
1142 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1143 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1145 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1146 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1147 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
1148 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
1149 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ -
1150 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ -
1151 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ -
1152 int numPatchCoords,
│ │ │ │ -
1153 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1154 PATCH_TABLE *patchTable) const {
│ │ │ │ -
1155
│ │ │ │ -
1156 return EvalPatches(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ -
1157 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ -
1158 duBuffer->BindVBO(), duDesc,
│ │ │ │ -
1159 dvBuffer->BindVBO(), dvDesc,
│ │ │ │ -
1160 duuBuffer->BindVBO(), duuDesc,
│ │ │ │ -
1161 duvBuffer->BindVBO(), duvDesc,
│ │ │ │ -
1162 dvvBuffer->BindVBO(), dvvDesc,
│ │ │ │ -
1163 numPatchCoords,
│ │ │ │ -
1164 patchCoords->BindVBO(),
│ │ │ │ -
1165 patchTable->GetPatchArrays(),
│ │ │ │ -
1166 patchTable->GetPatchIndexTextureBuffer(),
│ │ │ │ -
1167 patchTable->GetPatchParamTextureBuffer());
│ │ │ │ -
1168 }
│ │ │ │ -
│ │ │ │ -
1169
│ │ │ │ -
1170 bool EvalPatches(GLuint srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1171 GLuint dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1172 GLuint duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
1173 GLuint dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
1174 int numPatchCoords,
│ │ │ │ -
1175 GLuint patchCoordsBuffer,
│ │ │ │ -
1176 const PatchArrayVector &patchArrays,
│ │ │ │ -
1177 GLuint patchIndexBuffer,
│ │ │ │ -
1178 GLuint patchParamsBuffer) const;
│ │ │ │ -
1179
│ │ │ │ -
1180 bool EvalPatches(GLuint srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1181 GLuint dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1182 GLuint duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
1183 GLuint dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
1184 GLuint duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ -
1185 GLuint duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ -
1186 GLuint dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ -
1187 int numPatchCoords,
│ │ │ │ -
1188 GLuint patchCoordsBuffer,
│ │ │ │ -
1189 const PatchArrayVector &patchArrays,
│ │ │ │ -
1190 GLuint patchIndexBuffer,
│ │ │ │ -
1191 GLuint patchParamsBuffer) const;
│ │ │ │ -
1192
│ │ │ │ -
1225 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1226 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1228 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1229 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1230 int numPatchCoords,
│ │ │ │ -
1231 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1232 PATCH_TABLE *patchTable,
│ │ │ │ -
1233 GLXFBEvaluator const *instance,
│ │ │ │ -
1234 void * deviceContext = NULL) {
│ │ │ │ -
1235
│ │ │ │ -
1236 if (instance) {
│ │ │ │ -
1237 return instance->EvalPatchesVarying(
│ │ │ │ -
1238 srcBuffer, srcDesc,
│ │ │ │ -
1239 dstBuffer, dstDesc,
│ │ │ │ -
1240 numPatchCoords, patchCoords,
│ │ │ │ -
1241 patchTable);
│ │ │ │ -
1242 } else {
│ │ │ │ -
1243 // Create an instance on demand (slow)
│ │ │ │ -
1244 (void)deviceContext; // unused
│ │ │ │ -
1245 instance = Create(srcDesc, dstDesc,
│ │ │ │ - │ │ │ │ - │ │ │ │ -
1248 if (instance) {
│ │ │ │ -
1249 bool r = instance->EvalPatchesVarying(
│ │ │ │ -
1250 srcBuffer, srcDesc,
│ │ │ │ -
1251 dstBuffer, dstDesc,
│ │ │ │ -
1252 numPatchCoords, patchCoords,
│ │ │ │ -
1253 patchTable);
│ │ │ │ -
1254 delete instance;
│ │ │ │ -
1255 return r;
│ │ │ │ -
1256 }
│ │ │ │ -
1257 return false;
│ │ │ │ -
1258 }
│ │ │ │ -
1259 }
│ │ │ │ -
│ │ │ │ -
1260
│ │ │ │ -
1285 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1286 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1288 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1289 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1290 int numPatchCoords,
│ │ │ │ -
1291 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1292 PATCH_TABLE *patchTable) const {
│ │ │ │ -
1293
│ │ │ │ -
1294 return EvalPatches(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ -
1295 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ -
1296 0, BufferDescriptor(),
│ │ │ │ -
1297 0, BufferDescriptor(),
│ │ │ │ -
1298 numPatchCoords,
│ │ │ │ -
1299 patchCoords->BindVBO(),
│ │ │ │ -
1300 patchTable->GetVaryingPatchArrays(),
│ │ │ │ -
1301 patchTable->GetVaryingPatchIndexTextureBuffer(),
│ │ │ │ -
1302 patchTable->GetPatchParamTextureBuffer());
│ │ │ │ -
1303 }
│ │ │ │ -
│ │ │ │ -
1304
│ │ │ │ -
1349 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1350 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1352 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1353 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1354 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
1355 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
1356 int numPatchCoords,
│ │ │ │ -
1357 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1358 PATCH_TABLE *patchTable,
│ │ │ │ -
1359 GLXFBEvaluator const *instance,
│ │ │ │ -
1360 void * deviceContext = NULL) {
│ │ │ │ -
1361
│ │ │ │ -
1362 if (instance) {
│ │ │ │ -
1363 return instance->EvalPatchesVarying(
│ │ │ │ -
1364 srcBuffer, srcDesc,
│ │ │ │ -
1365 dstBuffer, dstDesc,
│ │ │ │ -
1366 duBuffer, duDesc,
│ │ │ │ -
1367 dvBuffer, dvDesc,
│ │ │ │ -
1368 numPatchCoords, patchCoords,
│ │ │ │ -
1369 patchTable);
│ │ │ │ -
1370 } else {
│ │ │ │ -
1371 // Create an instance on demand (slow)
│ │ │ │ -
1372 (void)deviceContext; // unused
│ │ │ │ -
1373 instance = Create(srcDesc, dstDesc,
│ │ │ │ -
1374 duDesc, dvDesc);
│ │ │ │ -
1375 if (instance) {
│ │ │ │ -
1376 bool r = instance->EvalPatchesVarying(
│ │ │ │ -
1377 srcBuffer, srcDesc,
│ │ │ │ -
1378 dstBuffer, dstDesc,
│ │ │ │ -
1379 duBuffer, duDesc,
│ │ │ │ -
1380 dvBuffer, dvDesc,
│ │ │ │ -
1381 numPatchCoords, patchCoords,
│ │ │ │ -
1382 patchTable);
│ │ │ │ -
1383 delete instance;
│ │ │ │ -
1384 return r;
│ │ │ │ -
1385 }
│ │ │ │ -
1386 return false;
│ │ │ │ -
1387 }
│ │ │ │ -
1388 }
│ │ │ │ -
│ │ │ │ -
1389
│ │ │ │ -
1426 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1427 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1429 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1430 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1431 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
1432 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
1433 int numPatchCoords,
│ │ │ │ -
1434 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1435 PATCH_TABLE *patchTable) const {
│ │ │ │ -
1436
│ │ │ │ -
1437 return EvalPatches(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ -
1438 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ -
1439 duBuffer->BindVBO(), duDesc,
│ │ │ │ -
1440 dvBuffer->BindVBO(), dvDesc,
│ │ │ │ -
1441 numPatchCoords,
│ │ │ │ -
1442 patchCoords->BindVBO(),
│ │ │ │ -
1443 patchTable->GetVaryingPatchArrays(),
│ │ │ │ -
1444 patchTable->GetVaryingPatchIndexTextureBuffer(),
│ │ │ │ -
1445 patchTable->GetPatchParamTextureBuffer());
│ │ │ │ -
1446 }
│ │ │ │ -
│ │ │ │ -
1447
│ │ │ │ -
1510 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1511 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1513 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1514 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1515 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
1516 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
1517 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ -
1518 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ -
1519 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ -
1520 int numPatchCoords,
│ │ │ │ -
1521 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1522 PATCH_TABLE *patchTable,
│ │ │ │ -
1523 GLXFBEvaluator const *instance,
│ │ │ │ -
1524 void * deviceContext = NULL) {
│ │ │ │ -
1525
│ │ │ │ -
1526 if (instance) {
│ │ │ │ -
1527 return instance->EvalPatchesVarying(
│ │ │ │ -
1528 srcBuffer, srcDesc,
│ │ │ │ -
1529 dstBuffer, dstDesc,
│ │ │ │ -
1530 duBuffer, duDesc,
│ │ │ │ -
1531 dvBuffer, dvDesc,
│ │ │ │ -
1532 duuBuffer, duuDesc,
│ │ │ │ -
1533 duvBuffer, duvDesc,
│ │ │ │ -
1534 dvvBuffer, dvvDesc,
│ │ │ │ -
1535 numPatchCoords, patchCoords,
│ │ │ │ -
1536 patchTable);
│ │ │ │ -
1537 } else {
│ │ │ │ -
1538 // Create an instance on demand (slow)
│ │ │ │ -
1539 (void)deviceContext; // unused
│ │ │ │ -
1540 instance = Create(srcDesc, dstDesc,
│ │ │ │ -
1541 duDesc, dvDesc,
│ │ │ │ -
1542 duuDesc, duvDesc, dvvDesc);
│ │ │ │ -
1543 if (instance) {
│ │ │ │ -
1544 bool r = instance->EvalPatchesVarying(
│ │ │ │ -
1545 srcBuffer, srcDesc,
│ │ │ │ -
1546 dstBuffer, dstDesc,
│ │ │ │ -
1547 duBuffer, duDesc,
│ │ │ │ -
1548 dvBuffer, dvDesc,
│ │ │ │ -
1549 duuBuffer, duuDesc,
│ │ │ │ -
1550 duvBuffer, duvDesc,
│ │ │ │ -
1551 dvvBuffer, dvvDesc,
│ │ │ │ -
1552 numPatchCoords, patchCoords,
│ │ │ │ -
1553 patchTable);
│ │ │ │ -
1554 delete instance;
│ │ │ │ -
1555 return r;
│ │ │ │ -
1556 }
│ │ │ │ -
1557 return false;
│ │ │ │ -
1558 }
│ │ │ │ -
1559 }
│ │ │ │ -
│ │ │ │ -
1560
│ │ │ │ -
1615 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1616 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1618 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1619 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1620 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
1621 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
1622 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ -
1623 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ -
1624 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ -
1625 int numPatchCoords,
│ │ │ │ -
1626 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1627 PATCH_TABLE *patchTable) const {
│ │ │ │ -
1628
│ │ │ │ -
1629 return EvalPatches(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ -
1630 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ -
1631 duBuffer->BindVBO(), duDesc,
│ │ │ │ -
1632 dvBuffer->BindVBO(), dvDesc,
│ │ │ │ -
1633 duuBuffer->BindVBO(), duuDesc,
│ │ │ │ -
1634 duvBuffer->BindVBO(), duvDesc,
│ │ │ │ -
1635 dvvBuffer->BindVBO(), dvvDesc,
│ │ │ │ -
1636 numPatchCoords,
│ │ │ │ -
1637 patchCoords->BindVBO(),
│ │ │ │ -
1638 patchTable->GetVaryingPatchArrays(),
│ │ │ │ -
1639 patchTable->GetVaryingPatchIndexTextureBuffer(),
│ │ │ │ -
1640 patchTable->GetPatchParamTextureBuffer());
│ │ │ │ -
1641 }
│ │ │ │ -
│ │ │ │ -
1642
│ │ │ │ -
1677 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1678 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1680 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1681 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1682 int numPatchCoords,
│ │ │ │ -
1683 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1684 PATCH_TABLE *patchTable,
│ │ │ │ -
1685 int fvarChannel,
│ │ │ │ -
1686 GLXFBEvaluator const *instance,
│ │ │ │ -
1687 void * deviceContext = NULL) {
│ │ │ │ -
1688
│ │ │ │ -
1689 if (instance) {
│ │ │ │ -
1690 return instance->EvalPatchesFaceVarying(
│ │ │ │ -
1691 srcBuffer, srcDesc,
│ │ │ │ -
1692 dstBuffer, dstDesc,
│ │ │ │ -
1693 numPatchCoords, patchCoords,
│ │ │ │ -
1694 patchTable, fvarChannel);
│ │ │ │ -
1695 } else {
│ │ │ │ -
1696 // Create an instance on demand (slow)
│ │ │ │ -
1697 (void)deviceContext; // unused
│ │ │ │ -
1698 instance = Create(srcDesc, dstDesc,
│ │ │ │ - │ │ │ │ - │ │ │ │ -
1701 if (instance) {
│ │ │ │ -
1702 bool r = instance->EvalPatchesFaceVarying(
│ │ │ │ -
1703 srcBuffer, srcDesc,
│ │ │ │ -
1704 dstBuffer, dstDesc,
│ │ │ │ -
1705 numPatchCoords, patchCoords,
│ │ │ │ -
1706 patchTable, fvarChannel);
│ │ │ │ -
1707 delete instance;
│ │ │ │ -
1708 return r;
│ │ │ │ -
1709 }
│ │ │ │ -
1710 return false;
│ │ │ │ -
1711 }
│ │ │ │ -
1712 }
│ │ │ │ -
│ │ │ │ -
1713
│ │ │ │ -
1740 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1741 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1743 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1744 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1745 int numPatchCoords,
│ │ │ │ -
1746 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1747 PATCH_TABLE *patchTable,
│ │ │ │ -
1748 int fvarChannel = 0) const {
│ │ │ │ -
1749
│ │ │ │ -
1750 return EvalPatches(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ -
1751 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ -
1752 0, BufferDescriptor(),
│ │ │ │ -
1753 0, BufferDescriptor(),
│ │ │ │ -
1754 numPatchCoords,
│ │ │ │ -
1755 patchCoords->BindVBO(),
│ │ │ │ -
1756 patchTable->GetFVarPatchArrays(fvarChannel),
│ │ │ │ -
1757 patchTable->GetFVarPatchIndexTextureBuffer(fvarChannel),
│ │ │ │ -
1758 patchTable->GetFVarPatchParamTextureBuffer(fvarChannel));
│ │ │ │ -
1759 }
│ │ │ │ -
│ │ │ │ -
1760
│ │ │ │ -
1807 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1808 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1810 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1811 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1812 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
1813 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
1814 int numPatchCoords,
│ │ │ │ -
1815 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1816 PATCH_TABLE *patchTable,
│ │ │ │ -
1817 int fvarChannel,
│ │ │ │ -
1818 GLXFBEvaluator const *instance,
│ │ │ │ -
1819 void * deviceContext = NULL) {
│ │ │ │ -
1820
│ │ │ │ -
1821 if (instance) {
│ │ │ │ -
1822 return instance->EvalPatchesFaceVarying(
│ │ │ │ -
1823 srcBuffer, srcDesc,
│ │ │ │ -
1824 dstBuffer, dstDesc,
│ │ │ │ -
1825 duBuffer, duDesc,
│ │ │ │ -
1826 dvBuffer, dvDesc,
│ │ │ │ -
1827 numPatchCoords, patchCoords,
│ │ │ │ -
1828 patchTable, fvarChannel);
│ │ │ │ -
1829 } else {
│ │ │ │ -
1830 // Create an instance on demand (slow)
│ │ │ │ -
1831 (void)deviceContext; // unused
│ │ │ │ -
1832 instance = Create(srcDesc, dstDesc,
│ │ │ │ -
1833 duDesc, dvDesc);
│ │ │ │ -
1834 if (instance) {
│ │ │ │ -
1835 bool r = instance->EvalPatchesFaceVarying(
│ │ │ │ -
1836 srcBuffer, srcDesc,
│ │ │ │ -
1837 dstBuffer, dstDesc,
│ │ │ │ -
1838 duBuffer, duDesc,
│ │ │ │ -
1839 dvBuffer, dvDesc,
│ │ │ │ -
1840 numPatchCoords, patchCoords,
│ │ │ │ -
1841 patchTable, fvarChannel);
│ │ │ │ -
1842 delete instance;
│ │ │ │ -
1843 return r;
│ │ │ │ -
1844 }
│ │ │ │ -
1845 return false;
│ │ │ │ -
1846 }
│ │ │ │ -
1847 }
│ │ │ │ -
│ │ │ │ -
1848
│ │ │ │ -
1887 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1888 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1890 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1891 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1892 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
1893 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
1894 int numPatchCoords,
│ │ │ │ -
1895 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1896 PATCH_TABLE *patchTable,
│ │ │ │ -
1897 int fvarChannel = 0) const {
│ │ │ │ -
1898
│ │ │ │ -
1899 return EvalPatches(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ -
1900 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ -
1901 duBuffer->BindVBO(), duDesc,
│ │ │ │ -
1902 dvBuffer->BindVBO(), dvDesc,
│ │ │ │ -
1903 numPatchCoords,
│ │ │ │ -
1904 patchCoords->BindVBO(),
│ │ │ │ -
1905 patchTable->GetFVarPatchArrays(fvarChannel),
│ │ │ │ -
1906 patchTable->GetFVarPatchIndexTextureBuffer(fvarChannel),
│ │ │ │ -
1907 patchTable->GetFVarPatchParamTextureBuffer(fvarChannel));
│ │ │ │ -
1908 }
│ │ │ │ -
│ │ │ │ -
1909
│ │ │ │ -
1974 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1975 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1977 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1978 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1979 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
1980 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
1981 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ -
1982 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ -
1983 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ -
1984 int numPatchCoords,
│ │ │ │ -
1985 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1986 PATCH_TABLE *patchTable,
│ │ │ │ -
1987 int fvarChannel,
│ │ │ │ -
1988 GLXFBEvaluator const *instance,
│ │ │ │ -
1989 void * deviceContext = NULL) {
│ │ │ │ -
1990
│ │ │ │ -
1991 if (instance) {
│ │ │ │ -
1992 return instance->EvalPatchesFaceVarying(
│ │ │ │ -
1993 srcBuffer, srcDesc,
│ │ │ │ -
1994 dstBuffer, dstDesc,
│ │ │ │ -
1995 duBuffer, duDesc,
│ │ │ │ -
1996 dvBuffer, dvDesc,
│ │ │ │ -
1997 duuBuffer, duuDesc,
│ │ │ │ -
1998 duvBuffer, duvDesc,
│ │ │ │ -
1999 dvvBuffer, dvvDesc,
│ │ │ │ -
2000 numPatchCoords, patchCoords,
│ │ │ │ -
2001 patchTable, fvarChannel);
│ │ │ │ -
2002 } else {
│ │ │ │ -
2003 // Create an instance on demand (slow)
│ │ │ │ -
2004 (void)deviceContext; // unused
│ │ │ │ -
2005 instance = Create(srcDesc, dstDesc,
│ │ │ │ -
2006 duDesc, dvDesc,
│ │ │ │ -
2007 duuDesc, duvDesc, dvvDesc);
│ │ │ │ -
2008 if (instance) {
│ │ │ │ -
2009 bool r = instance->EvalPatchesFaceVarying(
│ │ │ │ -
2010 srcBuffer, srcDesc,
│ │ │ │ -
2011 dstBuffer, dstDesc,
│ │ │ │ -
2012 duBuffer, duDesc,
│ │ │ │ -
2013 dvBuffer, dvDesc,
│ │ │ │ -
2014 duuBuffer, duuDesc,
│ │ │ │ -
2015 duvBuffer, duvDesc,
│ │ │ │ -
2016 dvvBuffer, dvvDesc,
│ │ │ │ -
2017 numPatchCoords, patchCoords,
│ │ │ │ -
2018 patchTable, fvarChannel);
│ │ │ │ -
2019 delete instance;
│ │ │ │ -
2020 return r;
│ │ │ │ -
2021 }
│ │ │ │ -
2022 return false;
│ │ │ │ -
2023 }
│ │ │ │ -
2024 }
│ │ │ │ -
│ │ │ │ -
2025
│ │ │ │ -
2082 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
2083 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
2085 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
2086 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
2087 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
2088 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
2089 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ -
2090 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ -
2091 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ -
2092 int numPatchCoords,
│ │ │ │ -
2093 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
2094 PATCH_TABLE *patchTable,
│ │ │ │ -
2095 int fvarChannel = 0) const {
│ │ │ │ -
2096
│ │ │ │ -
2097 return EvalPatches(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ -
2098 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ -
2099 duBuffer->BindVBO(), duDesc,
│ │ │ │ -
2100 dvBuffer->BindVBO(), dvDesc,
│ │ │ │ -
2101 duuBuffer->BindVBO(), duuDesc,
│ │ │ │ -
2102 duvBuffer->BindVBO(), duvDesc,
│ │ │ │ -
2103 dvvBuffer->BindVBO(), dvvDesc,
│ │ │ │ -
2104 numPatchCoords,
│ │ │ │ -
2105 patchCoords->BindVBO(),
│ │ │ │ -
2106 patchTable->GetFVarPatchArrays(fvarChannel),
│ │ │ │ -
2107 patchTable->GetFVarPatchIndexTextureBuffer(fvarChannel),
│ │ │ │ -
2108 patchTable->GetFVarPatchParamTextureBuffer(fvarChannel));
│ │ │ │ -
2109 }
│ │ │ │ -
│ │ │ │ -
2110
│ │ │ │ -
2116
│ │ │ │ -
2119 bool Compile(BufferDescriptor const &srcDesc,
│ │ │ │ -
2120 BufferDescriptor const &dstDesc,
│ │ │ │ -
2121 BufferDescriptor const &duDesc = BufferDescriptor(),
│ │ │ │ -
2122 BufferDescriptor const &dvDesc = BufferDescriptor(),
│ │ │ │ -
2123 BufferDescriptor const &duuDesc = BufferDescriptor(),
│ │ │ │ -
2124 BufferDescriptor const &duvDesc = BufferDescriptor(),
│ │ │ │ -
2125 BufferDescriptor const &dvvDesc = BufferDescriptor());
│ │ │ │ -
2126
│ │ │ │ -
2128 static void Synchronize(void *kernel);
│ │ │ │ -
2129
│ │ │ │ -
2130private:
│ │ │ │ -
2131 GLuint _srcBufferTexture;
│ │ │ │ -
2132 GLuint _patchArraysUBO;
│ │ │ │ -
2133 bool _interleavedDerivativeBuffers;
│ │ │ │ -
2134
│ │ │ │ -
2135 struct _StencilKernel {
│ │ │ │ -
2136 _StencilKernel();
│ │ │ │ -
2137 ~_StencilKernel();
│ │ │ │ -
2138 bool Compile(BufferDescriptor const &srcDesc,
│ │ │ │ -
2139 BufferDescriptor const &dstDesc,
│ │ │ │ -
2140 BufferDescriptor const &duDesc,
│ │ │ │ -
2141 BufferDescriptor const &dvDesc,
│ │ │ │ -
2142 BufferDescriptor const &duuDesc,
│ │ │ │ -
2143 BufferDescriptor const &duvDesc,
│ │ │ │ -
2144 BufferDescriptor const &dvvDesc,
│ │ │ │ -
2145 bool interleavedDerivativeBuffers);
│ │ │ │ -
2146 GLuint program;
│ │ │ │ -
2147 GLint uniformSrcBufferTexture;
│ │ │ │ -
2148 GLint uniformSrcOffset; // src buffer offset (in elements)
│ │ │ │ -
2149
│ │ │ │ -
2150 GLint uniformSizesTexture;
│ │ │ │ -
2151 GLint uniformOffsetsTexture;
│ │ │ │ -
2152 GLint uniformIndicesTexture;
│ │ │ │ -
2153 GLint uniformWeightsTexture;
│ │ │ │ -
2154 GLint uniformDuWeightsTexture;
│ │ │ │ -
2155 GLint uniformDvWeightsTexture;
│ │ │ │ -
2156 GLint uniformDuuWeightsTexture;
│ │ │ │ -
2157 GLint uniformDuvWeightsTexture;
│ │ │ │ -
2158 GLint uniformDvvWeightsTexture;
│ │ │ │ -
2159 GLint uniformStart; // range
│ │ │ │ -
2160 GLint uniformEnd;
│ │ │ │ -
2161 } _stencilKernel;
│ │ │ │ -
2162
│ │ │ │ -
2163 struct _PatchKernel {
│ │ │ │ -
2164 _PatchKernel();
│ │ │ │ -
2165 ~_PatchKernel();
│ │ │ │ -
2166 bool Compile(BufferDescriptor const &srcDesc,
│ │ │ │ -
2167 BufferDescriptor const &dstDesc,
│ │ │ │ -
2168 BufferDescriptor const &duDesc,
│ │ │ │ -
2169 BufferDescriptor const &dvDesc,
│ │ │ │ -
2170 BufferDescriptor const &duuDesc,
│ │ │ │ -
2171 BufferDescriptor const &duvDesc,
│ │ │ │ -
2172 BufferDescriptor const &dvvDesc,
│ │ │ │ -
2173 bool interleavedDerivativeBuffers);
│ │ │ │ -
2174 GLuint program;
│ │ │ │ -
2175 GLint uniformSrcBufferTexture;
│ │ │ │ -
2176 GLint uniformSrcOffset; // src buffer offset (in elements)
│ │ │ │ -
2177
│ │ │ │ -
2178 GLint uniformPatchArraysUBOBinding;
│ │ │ │ -
2179 GLint uniformPatchParamTexture;
│ │ │ │ -
2180 GLint uniformPatchIndexTexture;
│ │ │ │ -
2181 } _patchKernel;
│ │ │ │ -
2182
│ │ │ │ -
2183};
│ │ │ │ -
│ │ │ │ -
2184
│ │ │ │ -
2185} // end namespace Osd
│ │ │ │ -
2186
│ │ │ │ -
2187} // end namespace OPENSUBDIV_VERSION
│ │ │ │ -
2188using namespace OPENSUBDIV_VERSION;
│ │ │ │ -
2189
│ │ │ │ -
2190} // end namespace OpenSubdiv
│ │ │ │ -
2191
│ │ │ │ -
2192
│ │ │ │ -
2193#endif // OPENSUBDIV3_OSD_GL_XFB_EVALUATOR_H
│ │ │ │ +
946 int numPatchCoords,
│ │ │ │ +
947 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
948 PATCH_TABLE *patchTable) const {
│ │ │ │ +
949
│ │ │ │ +
950 return EvalPatches(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ +
951 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ +
952 0, BufferDescriptor(),
│ │ │ │ +
953 0, BufferDescriptor(),
│ │ │ │ +
954 numPatchCoords,
│ │ │ │ +
955 patchCoords->BindVBO(),
│ │ │ │ +
956 patchTable->GetPatchArrays(),
│ │ │ │ +
957 patchTable->GetPatchIndexBuffer(),
│ │ │ │ +
958 patchTable->GetPatchParamBuffer());
│ │ │ │ +
959 }
│ │ │ │ +
│ │ │ │ +
960
│ │ │ │ +
995 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
996 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
998 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
999 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1000 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
1001 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
1002 int numPatchCoords,
│ │ │ │ +
1003 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1004 PATCH_TABLE *patchTable) const {
│ │ │ │ +
1005
│ │ │ │ +
1006 return EvalPatches(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ +
1007 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ +
1008 duBuffer->BindVBO(), duDesc,
│ │ │ │ +
1009 dvBuffer->BindVBO(), dvDesc,
│ │ │ │ +
1010 numPatchCoords,
│ │ │ │ +
1011 patchCoords->BindVBO(),
│ │ │ │ +
1012 patchTable->GetPatchArrays(),
│ │ │ │ +
1013 patchTable->GetPatchIndexBuffer(),
│ │ │ │ +
1014 patchTable->GetPatchParamBuffer());
│ │ │ │ +
1015 }
│ │ │ │ +
│ │ │ │ +
1016
│ │ │ │ +
1069 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1070 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1072 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1073 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1074 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
1075 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
1076 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ +
1077 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ +
1078 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ +
1079 int numPatchCoords,
│ │ │ │ +
1080 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1081 PATCH_TABLE *patchTable) const {
│ │ │ │ +
1082
│ │ │ │ +
1083 return EvalPatches(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ +
1084 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ +
1085 duBuffer->BindVBO(), duDesc,
│ │ │ │ +
1086 dvBuffer->BindVBO(), dvDesc,
│ │ │ │ +
1087 duuBuffer->BindVBO(), duuDesc,
│ │ │ │ +
1088 duvBuffer->BindVBO(), duvDesc,
│ │ │ │ +
1089 dvvBuffer->BindVBO(), dvvDesc,
│ │ │ │ +
1090 numPatchCoords,
│ │ │ │ +
1091 patchCoords->BindVBO(),
│ │ │ │ +
1092 patchTable->GetPatchArrays(),
│ │ │ │ +
1093 patchTable->GetPatchIndexBuffer(),
│ │ │ │ +
1094 patchTable->GetPatchParamBuffer());
│ │ │ │ +
1095 }
│ │ │ │ +
│ │ │ │ +
1096
│ │ │ │ +
1097 bool EvalPatches(GLuint srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1098 GLuint dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1099 GLuint duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
1100 GLuint dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
1101 int numPatchCoords,
│ │ │ │ +
1102 GLuint patchCoordsBuffer,
│ │ │ │ +
1103 const PatchArrayVector &patchArrays,
│ │ │ │ +
1104 GLuint patchIndexBuffer,
│ │ │ │ +
1105 GLuint patchParamsBuffer) const;
│ │ │ │ +
1106
│ │ │ │ +
1107 bool EvalPatches(GLuint srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1108 GLuint dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1109 GLuint duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
1110 GLuint dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
1111 GLuint duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ +
1112 GLuint duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ +
1113 GLuint dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ +
1114 int numPatchCoords,
│ │ │ │ +
1115 GLuint patchCoordsBuffer,
│ │ │ │ +
1116 const PatchArrayVector &patchArrays,
│ │ │ │ +
1117 GLuint patchIndexBuffer,
│ │ │ │ +
1118 GLuint patchParamsBuffer) const;
│ │ │ │ +
1119
│ │ │ │ +
1152 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1153 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1155 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1156 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1157 int numPatchCoords,
│ │ │ │ +
1158 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1159 PATCH_TABLE *patchTable,
│ │ │ │ +
1160 GLComputeEvaluator const *instance,
│ │ │ │ +
1161 void * deviceContext = NULL) {
│ │ │ │ +
1162
│ │ │ │ +
1163 if (instance) {
│ │ │ │ +
1164 return instance->EvalPatchesVarying(
│ │ │ │ +
1165 srcBuffer, srcDesc,
│ │ │ │ +
1166 dstBuffer, dstDesc,
│ │ │ │ +
1167 numPatchCoords, patchCoords,
│ │ │ │ +
1168 patchTable);
│ │ │ │ +
1169 } else {
│ │ │ │ +
1170 // Create an instance on demand (slow)
│ │ │ │ +
1171 (void)deviceContext; // unused
│ │ │ │ +
1172 instance = Create(srcDesc, dstDesc,
│ │ │ │ + │ │ │ │ + │ │ │ │ +
1175 if (instance) {
│ │ │ │ +
1176 bool r = instance->EvalPatchesVarying(
│ │ │ │ +
1177 srcBuffer, srcDesc,
│ │ │ │ +
1178 dstBuffer, dstDesc,
│ │ │ │ +
1179 numPatchCoords, patchCoords,
│ │ │ │ +
1180 patchTable);
│ │ │ │ +
1181 delete instance;
│ │ │ │ +
1182 return r;
│ │ │ │ +
1183 }
│ │ │ │ +
1184 return false;
│ │ │ │ +
1185 }
│ │ │ │ +
1186 }
│ │ │ │ +
│ │ │ │ +
1187
│ │ │ │ +
1212 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1213 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1215 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1216 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1217 int numPatchCoords,
│ │ │ │ +
1218 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1219 PATCH_TABLE *patchTable) const {
│ │ │ │ +
1220
│ │ │ │ +
1221 return EvalPatches(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ +
1222 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ +
1223 0, BufferDescriptor(),
│ │ │ │ +
1224 0, BufferDescriptor(),
│ │ │ │ +
1225 numPatchCoords,
│ │ │ │ +
1226 patchCoords->BindVBO(),
│ │ │ │ +
1227 patchTable->GetVaryingPatchArrays(),
│ │ │ │ +
1228 patchTable->GetVaryingPatchIndexBuffer(),
│ │ │ │ +
1229 patchTable->GetPatchParamBuffer());
│ │ │ │ +
1230 }
│ │ │ │ +
│ │ │ │ +
1231
│ │ │ │ +
1276 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1277 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1279 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1280 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1281 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
1282 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
1283 int numPatchCoords,
│ │ │ │ +
1284 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1285 PATCH_TABLE *patchTable,
│ │ │ │ +
1286 GLComputeEvaluator const *instance,
│ │ │ │ +
1287 void * deviceContext = NULL) {
│ │ │ │ +
1288
│ │ │ │ +
1289 if (instance) {
│ │ │ │ +
1290 return instance->EvalPatchesVarying(
│ │ │ │ +
1291 srcBuffer, srcDesc,
│ │ │ │ +
1292 dstBuffer, dstDesc,
│ │ │ │ +
1293 duBuffer, duDesc,
│ │ │ │ +
1294 dvBuffer, dvDesc,
│ │ │ │ +
1295 numPatchCoords, patchCoords,
│ │ │ │ +
1296 patchTable);
│ │ │ │ +
1297 } else {
│ │ │ │ +
1298 // Create an instance on demand (slow)
│ │ │ │ +
1299 (void)deviceContext; // unused
│ │ │ │ +
1300 instance = Create(srcDesc, dstDesc,
│ │ │ │ +
1301 duDesc, dvDesc);
│ │ │ │ +
1302 if (instance) {
│ │ │ │ +
1303 bool r = instance->EvalPatchesVarying(
│ │ │ │ +
1304 srcBuffer, srcDesc,
│ │ │ │ +
1305 dstBuffer, dstDesc,
│ │ │ │ +
1306 duBuffer, duDesc,
│ │ │ │ +
1307 dvBuffer, dvDesc,
│ │ │ │ +
1308 numPatchCoords, patchCoords,
│ │ │ │ +
1309 patchTable);
│ │ │ │ +
1310 delete instance;
│ │ │ │ +
1311 return r;
│ │ │ │ +
1312 }
│ │ │ │ +
1313 return false;
│ │ │ │ +
1314 }
│ │ │ │ +
1315 }
│ │ │ │ +
│ │ │ │ +
1316
│ │ │ │ +
1353 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1354 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1356 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1357 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1358 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
1359 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
1360 int numPatchCoords,
│ │ │ │ +
1361 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1362 PATCH_TABLE *patchTable) const {
│ │ │ │ +
1363
│ │ │ │ +
1364 return EvalPatches(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ +
1365 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ +
1366 duBuffer->BindVBO(), duDesc,
│ │ │ │ +
1367 dvBuffer->BindVBO(), dvDesc,
│ │ │ │ +
1368 numPatchCoords,
│ │ │ │ +
1369 patchCoords->BindVBO(),
│ │ │ │ +
1370 patchTable->GetVaryingPatchArrays(),
│ │ │ │ +
1371 patchTable->GetVaryingPatchIndexBuffer(),
│ │ │ │ +
1372 patchTable->GetPatchParamBuffer());
│ │ │ │ +
1373 }
│ │ │ │ +
│ │ │ │ +
1374
│ │ │ │ +
1437 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1438 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1440 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1441 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1442 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
1443 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
1444 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ +
1445 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ +
1446 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ +
1447 int numPatchCoords,
│ │ │ │ +
1448 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1449 PATCH_TABLE *patchTable,
│ │ │ │ +
1450 GLComputeEvaluator const *instance,
│ │ │ │ +
1451 void * deviceContext = NULL) {
│ │ │ │ +
1452
│ │ │ │ +
1453 if (instance) {
│ │ │ │ +
1454 return instance->EvalPatchesVarying(
│ │ │ │ +
1455 srcBuffer, srcDesc,
│ │ │ │ +
1456 dstBuffer, dstDesc,
│ │ │ │ +
1457 duBuffer, duDesc,
│ │ │ │ +
1458 dvBuffer, dvDesc,
│ │ │ │ +
1459 duuBuffer, duuDesc,
│ │ │ │ +
1460 duvBuffer, duvDesc,
│ │ │ │ +
1461 dvvBuffer, dvvDesc,
│ │ │ │ +
1462 numPatchCoords, patchCoords,
│ │ │ │ +
1463 patchTable);
│ │ │ │ +
1464 } else {
│ │ │ │ +
1465 // Create an instance on demand (slow)
│ │ │ │ +
1466 (void)deviceContext; // unused
│ │ │ │ +
1467 instance = Create(srcDesc, dstDesc,
│ │ │ │ +
1468 duDesc, dvDesc,
│ │ │ │ +
1469 duuDesc, duvDesc, dvvDesc);
│ │ │ │ +
1470 if (instance) {
│ │ │ │ +
1471 bool r = instance->EvalPatchesVarying(
│ │ │ │ +
1472 srcBuffer, srcDesc,
│ │ │ │ +
1473 dstBuffer, dstDesc,
│ │ │ │ +
1474 duBuffer, duDesc,
│ │ │ │ +
1475 dvBuffer, dvDesc,
│ │ │ │ +
1476 duuBuffer, duuDesc,
│ │ │ │ +
1477 duvBuffer, duvDesc,
│ │ │ │ +
1478 dvvBuffer, dvvDesc,
│ │ │ │ +
1479 numPatchCoords, patchCoords,
│ │ │ │ +
1480 patchTable);
│ │ │ │ +
1481 delete instance;
│ │ │ │ +
1482 return r;
│ │ │ │ +
1483 }
│ │ │ │ +
1484 return false;
│ │ │ │ +
1485 }
│ │ │ │ +
1486 }
│ │ │ │ +
│ │ │ │ +
1487
│ │ │ │ +
1542 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1543 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1545 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1546 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1547 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
1548 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
1549 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ +
1550 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ +
1551 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ +
1552 int numPatchCoords,
│ │ │ │ +
1553 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1554 PATCH_TABLE *patchTable) const {
│ │ │ │ +
1555
│ │ │ │ +
1556 return EvalPatches(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ +
1557 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ +
1558 duBuffer->BindVBO(), duDesc,
│ │ │ │ +
1559 dvBuffer->BindVBO(), dvDesc,
│ │ │ │ +
1560 duuBuffer->BindVBO(), duuDesc,
│ │ │ │ +
1561 duvBuffer->BindVBO(), duvDesc,
│ │ │ │ +
1562 dvvBuffer->BindVBO(), dvvDesc,
│ │ │ │ +
1563 numPatchCoords,
│ │ │ │ +
1564 patchCoords->BindVBO(),
│ │ │ │ +
1565 patchTable->GetVaryingPatchArrays(),
│ │ │ │ +
1566 patchTable->GetVaryingPatchIndexBuffer(),
│ │ │ │ +
1567 patchTable->GetPatchParamBuffer());
│ │ │ │ +
1568 }
│ │ │ │ +
│ │ │ │ +
1569
│ │ │ │ +
1604 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1605 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1607 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1608 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1609 int numPatchCoords,
│ │ │ │ +
1610 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1611 PATCH_TABLE *patchTable,
│ │ │ │ +
1612 int fvarChannel,
│ │ │ │ +
1613 GLComputeEvaluator const *instance,
│ │ │ │ +
1614 void * deviceContext = NULL) {
│ │ │ │ +
1615
│ │ │ │ +
1616 if (instance) {
│ │ │ │ +
1617 return instance->EvalPatchesFaceVarying(
│ │ │ │ +
1618 srcBuffer, srcDesc,
│ │ │ │ +
1619 dstBuffer, dstDesc,
│ │ │ │ +
1620 numPatchCoords, patchCoords,
│ │ │ │ +
1621 patchTable, fvarChannel);
│ │ │ │ +
1622 } else {
│ │ │ │ +
1623 // Create an instance on demand (slow)
│ │ │ │ +
1624 (void)deviceContext; // unused
│ │ │ │ +
1625 instance = Create(srcDesc, dstDesc,
│ │ │ │ + │ │ │ │ + │ │ │ │ +
1628 if (instance) {
│ │ │ │ +
1629 bool r = instance->EvalPatchesFaceVarying(
│ │ │ │ +
1630 srcBuffer, srcDesc,
│ │ │ │ +
1631 dstBuffer, dstDesc,
│ │ │ │ +
1632 numPatchCoords, patchCoords,
│ │ │ │ +
1633 patchTable, fvarChannel);
│ │ │ │ +
1634 delete instance;
│ │ │ │ +
1635 return r;
│ │ │ │ +
1636 }
│ │ │ │ +
1637 return false;
│ │ │ │ +
1638 }
│ │ │ │ +
1639 }
│ │ │ │ +
│ │ │ │ +
1640
│ │ │ │ +
1667 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1668 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1670 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1671 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1672 int numPatchCoords,
│ │ │ │ +
1673 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1674 PATCH_TABLE *patchTable,
│ │ │ │ +
1675 int fvarChannel = 0) const {
│ │ │ │ +
1676
│ │ │ │ +
1677 return EvalPatches(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ +
1678 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ +
1679 0, BufferDescriptor(),
│ │ │ │ +
1680 0, BufferDescriptor(),
│ │ │ │ +
1681 numPatchCoords,
│ │ │ │ +
1682 patchCoords->BindVBO(),
│ │ │ │ +
1683 patchTable->GetFVarPatchArrays(fvarChannel),
│ │ │ │ +
1684 patchTable->GetFVarPatchIndexBuffer(fvarChannel),
│ │ │ │ +
1685 patchTable->GetFVarPatchParamBuffer(fvarChannel));
│ │ │ │ +
1686 }
│ │ │ │ +
│ │ │ │ +
1687
│ │ │ │ +
1734 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1735 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1737 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1738 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1739 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
1740 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
1741 int numPatchCoords,
│ │ │ │ +
1742 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1743 PATCH_TABLE *patchTable,
│ │ │ │ +
1744 int fvarChannel,
│ │ │ │ +
1745 GLComputeEvaluator const *instance,
│ │ │ │ +
1746 void * deviceContext = NULL) {
│ │ │ │ +
1747
│ │ │ │ +
1748 if (instance) {
│ │ │ │ +
1749 return instance->EvalPatchesFaceVarying(
│ │ │ │ +
1750 srcBuffer, srcDesc,
│ │ │ │ +
1751 dstBuffer, dstDesc,
│ │ │ │ +
1752 duBuffer, duDesc,
│ │ │ │ +
1753 dvBuffer, dvDesc,
│ │ │ │ +
1754 numPatchCoords, patchCoords,
│ │ │ │ +
1755 patchTable, fvarChannel);
│ │ │ │ +
1756 } else {
│ │ │ │ +
1757 // Create an instance on demand (slow)
│ │ │ │ +
1758 (void)deviceContext; // unused
│ │ │ │ +
1759 instance = Create(srcDesc, dstDesc,
│ │ │ │ +
1760 duDesc, dvDesc);
│ │ │ │ +
1761 if (instance) {
│ │ │ │ +
1762 bool r = instance->EvalPatchesFaceVarying(
│ │ │ │ +
1763 srcBuffer, srcDesc,
│ │ │ │ +
1764 dstBuffer, dstDesc,
│ │ │ │ +
1765 duBuffer, duDesc,
│ │ │ │ +
1766 dvBuffer, dvDesc,
│ │ │ │ +
1767 numPatchCoords, patchCoords,
│ │ │ │ +
1768 patchTable, fvarChannel);
│ │ │ │ +
1769 delete instance;
│ │ │ │ +
1770 return r;
│ │ │ │ +
1771 }
│ │ │ │ +
1772 return false;
│ │ │ │ +
1773 }
│ │ │ │ +
1774 }
│ │ │ │ +
│ │ │ │ +
1775
│ │ │ │ +
1814 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1815 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1817 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1818 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1819 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
1820 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
1821 int numPatchCoords,
│ │ │ │ +
1822 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1823 PATCH_TABLE *patchTable,
│ │ │ │ +
1824 int fvarChannel = 0) const {
│ │ │ │ +
1825
│ │ │ │ +
1826 return EvalPatches(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ +
1827 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ +
1828 duBuffer->BindVBO(), duDesc,
│ │ │ │ +
1829 dvBuffer->BindVBO(), dvDesc,
│ │ │ │ +
1830 numPatchCoords,
│ │ │ │ +
1831 patchCoords->BindVBO(),
│ │ │ │ +
1832 patchTable->GetFVarPatchArrays(fvarChannel),
│ │ │ │ +
1833 patchTable->GetFVarPatchIndexBuffer(fvarChannel),
│ │ │ │ +
1834 patchTable->GetFVarPatchParamBuffer(fvarChannel));
│ │ │ │ +
1835 }
│ │ │ │ +
│ │ │ │ +
1836
│ │ │ │ +
1901 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1902 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1904 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1905 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1906 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
1907 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
1908 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ +
1909 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ +
1910 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ +
1911 int numPatchCoords,
│ │ │ │ +
1912 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1913 PATCH_TABLE *patchTable,
│ │ │ │ +
1914 int fvarChannel,
│ │ │ │ +
1915 GLComputeEvaluator const *instance,
│ │ │ │ +
1916 void * deviceContext = NULL) {
│ │ │ │ +
1917
│ │ │ │ +
1918 if (instance) {
│ │ │ │ +
1919 return instance->EvalPatchesFaceVarying(
│ │ │ │ +
1920 srcBuffer, srcDesc,
│ │ │ │ +
1921 dstBuffer, dstDesc,
│ │ │ │ +
1922 duBuffer, duDesc,
│ │ │ │ +
1923 dvBuffer, dvDesc,
│ │ │ │ +
1924 duuBuffer, duuDesc,
│ │ │ │ +
1925 duvBuffer, duvDesc,
│ │ │ │ +
1926 dvvBuffer, dvvDesc,
│ │ │ │ +
1927 numPatchCoords, patchCoords,
│ │ │ │ +
1928 patchTable, fvarChannel);
│ │ │ │ +
1929 } else {
│ │ │ │ +
1930 // Create an instance on demand (slow)
│ │ │ │ +
1931 (void)deviceContext; // unused
│ │ │ │ +
1932 instance = Create(srcDesc, dstDesc,
│ │ │ │ +
1933 duDesc, dvDesc,
│ │ │ │ +
1934 duuDesc, duvDesc, dvvDesc);
│ │ │ │ +
1935 if (instance) {
│ │ │ │ +
1936 bool r = instance->EvalPatchesFaceVarying(
│ │ │ │ +
1937 srcBuffer, srcDesc,
│ │ │ │ +
1938 dstBuffer, dstDesc,
│ │ │ │ +
1939 duBuffer, duDesc,
│ │ │ │ +
1940 dvBuffer, dvDesc,
│ │ │ │ +
1941 duuBuffer, duuDesc,
│ │ │ │ +
1942 duvBuffer, duvDesc,
│ │ │ │ +
1943 dvvBuffer, dvvDesc,
│ │ │ │ +
1944 numPatchCoords, patchCoords,
│ │ │ │ +
1945 patchTable, fvarChannel);
│ │ │ │ +
1946 delete instance;
│ │ │ │ +
1947 return r;
│ │ │ │ +
1948 }
│ │ │ │ +
1949 return false;
│ │ │ │ +
1950 }
│ │ │ │ +
1951 }
│ │ │ │ +
│ │ │ │ +
1952
│ │ │ │ +
2009 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
2010 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
2012 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
2013 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
2014 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
2015 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
2016 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ +
2017 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ +
2018 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ +
2019 int numPatchCoords,
│ │ │ │ +
2020 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
2021 PATCH_TABLE *patchTable,
│ │ │ │ +
2022 int fvarChannel = 0) const {
│ │ │ │ +
2023
│ │ │ │ +
2024 return EvalPatches(srcBuffer->BindVBO(), srcDesc,
│ │ │ │ +
2025 dstBuffer->BindVBO(), dstDesc,
│ │ │ │ +
2026 duBuffer->BindVBO(), duDesc,
│ │ │ │ +
2027 dvBuffer->BindVBO(), dvDesc,
│ │ │ │ +
2028 duuBuffer->BindVBO(), duuDesc,
│ │ │ │ +
2029 duvBuffer->BindVBO(), duvDesc,
│ │ │ │ +
2030 dvvBuffer->BindVBO(), dvvDesc,
│ │ │ │ +
2031 numPatchCoords,
│ │ │ │ +
2032 patchCoords->BindVBO(),
│ │ │ │ +
2033 patchTable->GetFVarPatchArrays(fvarChannel),
│ │ │ │ +
2034 patchTable->GetFVarPatchIndexBuffer(fvarChannel),
│ │ │ │ +
2035 patchTable->GetFVarPatchParamBuffer(fvarChannel));
│ │ │ │ +
2036 }
│ │ │ │ +
│ │ │ │ +
2037
│ │ │ │ +
2043
│ │ │ │ +
2046 bool Compile(BufferDescriptor const &srcDesc,
│ │ │ │ +
2047 BufferDescriptor const &dstDesc,
│ │ │ │ +
2048 BufferDescriptor const &duDesc = BufferDescriptor(),
│ │ │ │ +
2049 BufferDescriptor const &dvDesc = BufferDescriptor(),
│ │ │ │ +
2050 BufferDescriptor const &duuDesc = BufferDescriptor(),
│ │ │ │ +
2051 BufferDescriptor const &duvDesc = BufferDescriptor(),
│ │ │ │ +
2052 BufferDescriptor const &dvvDesc = BufferDescriptor());
│ │ │ │ +
2053
│ │ │ │ +
2055 static void Synchronize(void *deviceContext);
│ │ │ │ +
2056
│ │ │ │ +
2057private:
│ │ │ │ +
2058 struct _StencilKernel {
│ │ │ │ +
2059 _StencilKernel();
│ │ │ │ +
2060 ~_StencilKernel();
│ │ │ │ +
2061 bool Compile(BufferDescriptor const &srcDesc,
│ │ │ │ +
2062 BufferDescriptor const &dstDesc,
│ │ │ │ +
2063 BufferDescriptor const &duDesc,
│ │ │ │ +
2064 BufferDescriptor const &dvDesc,
│ │ │ │ +
2065 BufferDescriptor const &duuDesc,
│ │ │ │ +
2066 BufferDescriptor const &duvDesc,
│ │ │ │ +
2067 BufferDescriptor const &dvvDesc,
│ │ │ │ +
2068 int workGroupSize);
│ │ │ │ +
2069 GLuint program;
│ │ │ │ +
2070 GLuint uniformStart;
│ │ │ │ +
2071 GLuint uniformEnd;
│ │ │ │ +
2072 GLuint uniformSrcOffset;
│ │ │ │ +
2073 GLuint uniformDstOffset;
│ │ │ │ +
2074 GLuint uniformDuDesc;
│ │ │ │ +
2075 GLuint uniformDvDesc;
│ │ │ │ +
2076 GLuint uniformDuuDesc;
│ │ │ │ +
2077 GLuint uniformDuvDesc;
│ │ │ │ +
2078 GLuint uniformDvvDesc;
│ │ │ │ +
2079 } _stencilKernel;
│ │ │ │ +
2080
│ │ │ │ +
2081 struct _PatchKernel {
│ │ │ │ +
2082 _PatchKernel();
│ │ │ │ +
2083 ~_PatchKernel();
│ │ │ │ +
2084 bool Compile(BufferDescriptor const &srcDesc,
│ │ │ │ +
2085 BufferDescriptor const &dstDesc,
│ │ │ │ +
2086 BufferDescriptor const &duDesc,
│ │ │ │ +
2087 BufferDescriptor const &dvDesc,
│ │ │ │ +
2088 BufferDescriptor const &duuDesc,
│ │ │ │ +
2089 BufferDescriptor const &duvDesc,
│ │ │ │ +
2090 BufferDescriptor const &dvvDesc,
│ │ │ │ +
2091 int workGroupSize);
│ │ │ │ +
2092 GLuint program;
│ │ │ │ +
2093 GLuint uniformSrcOffset;
│ │ │ │ +
2094 GLuint uniformDstOffset;
│ │ │ │ +
2095 GLuint uniformPatchArray;
│ │ │ │ +
2096 GLuint uniformDuDesc;
│ │ │ │ +
2097 GLuint uniformDvDesc;
│ │ │ │ +
2098 GLuint uniformDuuDesc;
│ │ │ │ +
2099 GLuint uniformDuvDesc;
│ │ │ │ +
2100 GLuint uniformDvvDesc;
│ │ │ │ +
2101 } _patchKernel;
│ │ │ │ +
2102
│ │ │ │ +
2103 int _workGroupSize;
│ │ │ │ +
2104 GLuint _patchArraysSSBO;
│ │ │ │ +
2105};
│ │ │ │ +
│ │ │ │ +
2106
│ │ │ │ +
2107} // end namespace Osd
│ │ │ │ +
2108
│ │ │ │ +
2109} // end namespace OPENSUBDIV_VERSION
│ │ │ │ +
2110using namespace OPENSUBDIV_VERSION;
│ │ │ │ +
2111
│ │ │ │ +
2112} // end namespace OpenSubdiv
│ │ │ │ +
2113
│ │ │ │ +
2114
│ │ │ │ +
2115#endif // OPENSUBDIV3_OSD_GL_COMPUTE_EVALUATOR_H
│ │ │ │ │ │ │ │
std::vector< PatchArray > PatchArrayVector
Definition types.h:132
│ │ │ │
Stencil table class wrapping the template for compatibility.
│ │ │ │
Limit stencil table class wrapping the template for compatibility.
│ │ │ │
BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....
│ │ │ │ - │ │ │ │ - │ │ │ │ -
static GLStencilTableTBO * Create(Far::StencilTable const *stencilTable, void *deviceContext=NULL)
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
GLStencilTableTBO(Far::StencilTable const *stencilTable)
│ │ │ │ -
GLStencilTableTBO(Far::LimitStencilTable const *limitStencilTable)
│ │ │ │ - │ │ │ │ -
static GLStencilTableTBO * Create(Far::LimitStencilTable const *limitStencilTable, void *deviceContext=NULL)
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
static GLXFBEvaluator * Create(BufferDescriptor const &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, bool interleavedDerivativeBuffers=false)
│ │ │ │ -
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
Generic stencil function.
│ │ │ │ -
GLXFBEvaluator(bool interleavedDerivativeBuffers=false)
Constructor.
│ │ │ │ -
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
Generic stencil function.
│ │ │ │ - │ │ │ │ -
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
│ │ │ │ -
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)
Generic static stencil function. This function has a same signature as other device kernels have so t...
│ │ │ │ -
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
Generic limit eval function with derivatives. This function has a same signature as other device kern...
│ │ │ │ -
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)
│ │ │ │ -
static GLXFBEvaluator * Create(BufferDescriptor const &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, void *deviceContext)
Specialization to allow creation without a device context.
│ │ │ │ -
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)
Generic static stencil function. This function has a same signature as other device kernels have so t...
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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
Dispatch the GLSL XFB kernel on on GPU asynchronously returns false if the kernel hasn't been compile...
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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)
Generic creator template.
│ │ │ │ -
static GLXFBEvaluator * Create(BufferDescriptor const &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, DEVICE_CONTEXT deviceContext)
Generic creator template.
│ │ │ │ -
static void Synchronize(void *kernel)
Wait the dispatched kernel finishes.
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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
Generic limit eval function with derivatives. This function has a same signature as other device kern...
│ │ │ │ -
bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE const *stencilTable) const
Generic stencil function.
│ │ │ │ -
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
│ │ │ │ -
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)
Specialization to allow creation without a device context.
│ │ │ │ -
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
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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
Dispatch the GLSL XFB kernel on on GPU asynchronously returns false if the kernel hasn't been compile...
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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)
Generic static stencil function. This function has a same signature as other device kernels have so t...
│ │ │ │ -
~GLXFBEvaluator()
Destructor. note that the GL context must be made current.
│ │ │ │ -
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())
│ │ │ │ -
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
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
GLStencilTableSSBO(Far::LimitStencilTable const *limitStencilTable)
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
GLStencilTableSSBO(Far::StencilTable const *stencilTable)
│ │ │ │ + │ │ │ │ + │ │ │ │ +
static GLStencilTableSSBO * Create(Far::LimitStencilTable const *limitStencilTable, void *deviceContext=NULL)
│ │ │ │ + │ │ │ │ + │ │ │ │ +
static GLStencilTableSSBO * Create(Far::StencilTable const *stencilTable, void *deviceContext=NULL)
│ │ │ │ + │ │ │ │ +
bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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
Generic stencil function.
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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
Generic stencil function.
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ + │ │ │ │ +
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
│ │ │ │ +
~GLComputeEvaluator()
Destructor. note that the GL context must be made current.
│ │ │ │ +
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
Generic limit eval function with derivatives. This function has a same signature as other device kern...
│ │ │ │ +
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)
Generic static stencil function. This function has a same signature as other device kernels have so t...
│ │ │ │ +
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
Dispatch the GLSL compute kernel on GPU asynchronously returns false if the kernel hasn't been compil...
│ │ │ │ +
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)
Generic static stencil function. This function has a same signature as other device kernels have so t...
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ + │ │ │ │ +
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
Generic limit eval function with derivatives. This function has a same signature as other device kern...
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE const *stencilTable) const
Generic stencil function.
│ │ │ │ +
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
│ │ │ │ +
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
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
static GLComputeEvaluator * Create(BufferDescriptor const &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, void *deviceContext=NULL)
│ │ │ │ +
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
Dispatch the GLSL compute kernel on GPU asynchronously returns false if the kernel hasn't been compil...
│ │ │ │ +
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)
Generic static stencil function. This function has a same signature as other device kernels have so t...
│ │ │ │ +
static void Synchronize(void *deviceContext)
Wait the dispatched kernel finishes.
│ │ │ │ +
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())
│ │ │ │ +
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
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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)
│ │ │ │ +
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
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,12 +1,12 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ -glXFBEvaluator.h │ │ │ │ │ +glComputeEvaluator.h │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// │ │ │ │ │ 2// Copyright 2015 Pixar │ │ │ │ │ 3// │ │ │ │ │ 4// Licensed under the Apache License, Version 2.0 (the "Apache License") │ │ │ │ │ 5// with the following modification; you may not use this file except in │ │ │ │ │ 6// compliance with the Apache License and the following modification to it: │ │ │ │ │ @@ -24,16 +24,16 @@ │ │ │ │ │ 18// Unless required by applicable law or agreed to in writing, software │ │ │ │ │ 19// distributed under the Apache License with the above modification is │ │ │ │ │ 20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY │ │ │ │ │ 21// KIND, either express or implied. See the Apache License for the specific │ │ │ │ │ 22// language governing permissions and limitations under the Apache License. │ │ │ │ │ 23// │ │ │ │ │ 24 │ │ │ │ │ -25#ifndef OPENSUBDIV3_OSD_GL_XFB_EVALUATOR_H │ │ │ │ │ -26#define OPENSUBDIV3_OSD_GL_XFB_EVALUATOR_H │ │ │ │ │ +25#ifndef OPENSUBDIV3_OSD_GL_COMPUTE_EVALUATOR_H │ │ │ │ │ +26#define OPENSUBDIV3_OSD_GL_COMPUTE_EVALUATOR_H │ │ │ │ │ 27 │ │ │ │ │ 28#include "../version.h" │ │ │ │ │ 29 │ │ │ │ │ 30#include "../osd/opengl.h" │ │ │ │ │ 31#include "../osd/types.h" │ │ │ │ │ 32#include "../osd/bufferDescriptor.h" │ │ │ │ │ 33 │ │ │ │ │ @@ -44,1055 +44,993 @@ │ │ │ │ │ 38 class PatchTable; │ │ │ │ │ 39 class StencilTable; │ │ │ │ │ 40 class LimitStencilTable; │ │ │ │ │ 41} │ │ │ │ │ 42 │ │ │ │ │ 43namespace Osd { │ │ │ │ │ 44 │ │ │ │ │ -_5_2class _G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O { │ │ │ │ │ -53public: │ │ │ │ │ -_5_4 static _G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O *_C_r_e_a_t_e( │ │ │ │ │ -55 _F_a_r_:_:_S_t_e_n_c_i_l_T_a_b_l_e const *stencilTable, void *deviceContext = NULL) { │ │ │ │ │ -56 (void)deviceContext; // unused │ │ │ │ │ -57 return new _G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O(stencilTable); │ │ │ │ │ -58 } │ │ │ │ │ -59 │ │ │ │ │ -_6_0 static _G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O *_C_r_e_a_t_e( │ │ │ │ │ -61 _F_a_r_:_:_L_i_m_i_t_S_t_e_n_c_i_l_T_a_b_l_e const *limitStencilTable, │ │ │ │ │ -62 void *deviceContext = NULL) { │ │ │ │ │ -63 (void)deviceContext; // unused │ │ │ │ │ -64 return new _G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O(limitStencilTable); │ │ │ │ │ -65 } │ │ │ │ │ -66 │ │ │ │ │ -_6_7 explicit _G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O(_F_a_r_:_:_S_t_e_n_c_i_l_T_a_b_l_e const *stencilTable); │ │ │ │ │ -_6_8 explicit _G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O(_F_a_r_:_:_L_i_m_i_t_S_t_e_n_c_i_l_T_a_b_l_e const *limitStencilTable); │ │ │ │ │ -_6_9 _~_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O(); │ │ │ │ │ -70 │ │ │ │ │ -71 // interfaces needed for GLSLTransformFeedbackKernel │ │ │ │ │ -_7_2 GLuint _G_e_t_S_i_z_e_s_T_e_x_t_u_r_e() const { return _sizes; } │ │ │ │ │ -_7_3 GLuint _G_e_t_O_f_f_s_e_t_s_T_e_x_t_u_r_e() const { return _offsets; } │ │ │ │ │ -_7_4 GLuint _G_e_t_I_n_d_i_c_e_s_T_e_x_t_u_r_e() const { return _indices; } │ │ │ │ │ -_7_5 GLuint _G_e_t_W_e_i_g_h_t_s_T_e_x_t_u_r_e() const { return _weights; } │ │ │ │ │ -_7_6 GLuint _G_e_t_D_u_W_e_i_g_h_t_s_T_e_x_t_u_r_e() const { return _duWeights; } │ │ │ │ │ -_7_7 GLuint _G_e_t_D_v_W_e_i_g_h_t_s_T_e_x_t_u_r_e() const { return _dvWeights; } │ │ │ │ │ -_7_8 GLuint _G_e_t_D_u_u_W_e_i_g_h_t_s_T_e_x_t_u_r_e() const { return _duuWeights; } │ │ │ │ │ -_7_9 GLuint _G_e_t_D_u_v_W_e_i_g_h_t_s_T_e_x_t_u_r_e() const { return _duvWeights; } │ │ │ │ │ -_8_0 GLuint _G_e_t_D_v_v_W_e_i_g_h_t_s_T_e_x_t_u_r_e() const { return _dvvWeights; } │ │ │ │ │ -_8_1 int _G_e_t_N_u_m_S_t_e_n_c_i_l_s() const { return _numStencils; } │ │ │ │ │ -82 │ │ │ │ │ -83private: │ │ │ │ │ -84 GLuint _sizes; │ │ │ │ │ -85 GLuint _offsets; │ │ │ │ │ -86 GLuint _indices; │ │ │ │ │ -87 GLuint _weights; │ │ │ │ │ -88 GLuint _duWeights; │ │ │ │ │ -89 GLuint _dvWeights; │ │ │ │ │ -90 GLuint _duuWeights; │ │ │ │ │ -91 GLuint _duvWeights; │ │ │ │ │ -92 GLuint _dvvWeights; │ │ │ │ │ -93 int _numStencils; │ │ │ │ │ -94}; │ │ │ │ │ -95 │ │ │ │ │ -96// -------------------------------------------------------------------------- │ │ │ │ │ +_5_1class _G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O { │ │ │ │ │ +52public: │ │ │ │ │ +_5_3 static _G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O *_C_r_e_a_t_e(_F_a_r_:_:_S_t_e_n_c_i_l_T_a_b_l_e const *stencilTable, │ │ │ │ │ +54 void *deviceContext = NULL) { │ │ │ │ │ +55 (void)deviceContext; // unused │ │ │ │ │ +56 return new _G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O(stencilTable); │ │ │ │ │ +57 } │ │ │ │ │ +_5_8 static _G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O *_C_r_e_a_t_e( │ │ │ │ │ +59 _F_a_r_:_:_L_i_m_i_t_S_t_e_n_c_i_l_T_a_b_l_e const *limitStencilTable, │ │ │ │ │ +60 void *deviceContext = NULL) { │ │ │ │ │ +61 (void)deviceContext; // unused │ │ │ │ │ +62 return new _G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O(limitStencilTable); │ │ │ │ │ +63 } │ │ │ │ │ +64 │ │ │ │ │ +_6_5 explicit _G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O(_F_a_r_:_:_S_t_e_n_c_i_l_T_a_b_l_e const *stencilTable); │ │ │ │ │ +_6_6 explicit _G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O(_F_a_r_:_:_L_i_m_i_t_S_t_e_n_c_i_l_T_a_b_l_e const │ │ │ │ │ +*limitStencilTable); │ │ │ │ │ +_6_7 _~_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O(); │ │ │ │ │ +68 │ │ │ │ │ +69 // interfaces needed for GLSLComputeKernel │ │ │ │ │ +_7_0 GLuint _G_e_t_S_i_z_e_s_B_u_f_f_e_r() const { return _sizes; } │ │ │ │ │ +_7_1 GLuint _G_e_t_O_f_f_s_e_t_s_B_u_f_f_e_r() const { return _offsets; } │ │ │ │ │ +_7_2 GLuint _G_e_t_I_n_d_i_c_e_s_B_u_f_f_e_r() const { return _indices; } │ │ │ │ │ +_7_3 GLuint _G_e_t_W_e_i_g_h_t_s_B_u_f_f_e_r() const { return _weights; } │ │ │ │ │ +_7_4 GLuint _G_e_t_D_u_W_e_i_g_h_t_s_B_u_f_f_e_r() const { return _duWeights; } │ │ │ │ │ +_7_5 GLuint _G_e_t_D_v_W_e_i_g_h_t_s_B_u_f_f_e_r() const { return _dvWeights; } │ │ │ │ │ +_7_6 GLuint _G_e_t_D_u_u_W_e_i_g_h_t_s_B_u_f_f_e_r() const { return _duuWeights; } │ │ │ │ │ +_7_7 GLuint _G_e_t_D_u_v_W_e_i_g_h_t_s_B_u_f_f_e_r() const { return _duvWeights; } │ │ │ │ │ +_7_8 GLuint _G_e_t_D_v_v_W_e_i_g_h_t_s_B_u_f_f_e_r() const { return _dvvWeights; } │ │ │ │ │ +_7_9 int _G_e_t_N_u_m_S_t_e_n_c_i_l_s() const { return _numStencils; } │ │ │ │ │ +80 │ │ │ │ │ +81private: │ │ │ │ │ +82 GLuint _sizes; │ │ │ │ │ +83 GLuint _offsets; │ │ │ │ │ +84 GLuint _indices; │ │ │ │ │ +85 GLuint _weights; │ │ │ │ │ +86 GLuint _duWeights; │ │ │ │ │ +87 GLuint _dvWeights; │ │ │ │ │ +88 GLuint _duuWeights; │ │ │ │ │ +89 GLuint _duvWeights; │ │ │ │ │ +90 GLuint _dvvWeights; │ │ │ │ │ +91 int _numStencils; │ │ │ │ │ +92}; │ │ │ │ │ +93 │ │ │ │ │ +94// -------------------------------------------------------------------------- │ │ │ │ │ - │ │ │ │ │ -97 │ │ │ │ │ -_9_8class _G_L_X_F_B_E_v_a_l_u_a_t_o_r { │ │ │ │ │ -99public: │ │ │ │ │ -_1_0_0 typedef bool _I_n_s_t_a_n_t_i_a_t_a_b_l_e; │ │ │ │ │ -101 │ │ │ │ │ -103 template │ │ │ │ │ -_1_0_4 static _G_L_X_F_B_E_v_a_l_u_a_t_o_r *_C_r_e_a_t_e(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -105 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -106 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -107 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -108 DEVICE_CONTEXT deviceContext) { │ │ │ │ │ -109 bool interleavedDerivativeBuffers = deviceContext │ │ │ │ │ -110 ? deviceContext->AreInterleavedDerivativeBuffers() │ │ │ │ │ -111 : false; │ │ │ │ │ -112 return _C_r_e_a_t_e(srcDesc, dstDesc, duDesc, dvDesc, │ │ │ │ │ -113 interleavedDerivativeBuffers); │ │ │ │ │ -114 } │ │ │ │ │ -115 │ │ │ │ │ -_1_1_7 static _G_L_X_F_B_E_v_a_l_u_a_t_o_r *_C_r_e_a_t_e(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -118 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -119 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -120 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -121 void * deviceContext) { │ │ │ │ │ -122 (void)deviceContext; // not used │ │ │ │ │ -123 return _C_r_e_a_t_e(srcDesc, dstDesc, duDesc, dvDesc); │ │ │ │ │ -124 } │ │ │ │ │ -125 │ │ │ │ │ -_1_2_6 static _G_L_X_F_B_E_v_a_l_u_a_t_o_r * _C_r_e_a_t_e(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -127 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -128 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -129 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -130 bool interleavedDerivativeBuffers = false) { │ │ │ │ │ -131 _G_L_X_F_B_E_v_a_l_u_a_t_o_r *instance = new _G_L_X_F_B_E_v_a_l_u_a_t_o_r │ │ │ │ │ -(interleavedDerivativeBuffers); │ │ │ │ │ -132 if (instance->_C_o_m_p_i_l_e(srcDesc, dstDesc, duDesc, dvDesc)) │ │ │ │ │ -133 return instance; │ │ │ │ │ -134 delete instance; │ │ │ │ │ -135 return NULL; │ │ │ │ │ -136 } │ │ │ │ │ -137 │ │ │ │ │ -139 template │ │ │ │ │ -_1_4_0 static _G_L_X_F_B_E_v_a_l_u_a_t_o_r *_C_r_e_a_t_e(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -141 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -142 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -143 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -144 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -145 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -146 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -147 DEVICE_CONTEXT deviceContext) { │ │ │ │ │ -148 bool interleavedDerivativeBuffers = deviceContext │ │ │ │ │ -149 ? deviceContext->AreInterleavedDerivativeBuffers() │ │ │ │ │ -150 : false; │ │ │ │ │ -151 return _C_r_e_a_t_e(srcDesc, dstDesc, duDesc, dvDesc, │ │ │ │ │ -152 duuDesc, duvDesc, dvvDesc, │ │ │ │ │ -153 interleavedDerivativeBuffers); │ │ │ │ │ -154 } │ │ │ │ │ -155 │ │ │ │ │ -_1_5_7 static _G_L_X_F_B_E_v_a_l_u_a_t_o_r *_C_r_e_a_t_e(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -158 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -159 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -160 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -161 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -162 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -163 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -164 void * deviceContext) { │ │ │ │ │ -165 (void)deviceContext; // not used │ │ │ │ │ -166 return _C_r_e_a_t_e(srcDesc, dstDesc, duDesc, dvDesc, │ │ │ │ │ -167 duuDesc, duvDesc, dvvDesc); │ │ │ │ │ -168 } │ │ │ │ │ -169 │ │ │ │ │ -_1_7_0 static _G_L_X_F_B_E_v_a_l_u_a_t_o_r * _C_r_e_a_t_e(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -171 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -172 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -173 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -174 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -175 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -176 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -177 bool interleavedDerivativeBuffers = false) { │ │ │ │ │ -178 _G_L_X_F_B_E_v_a_l_u_a_t_o_r *instance = new _G_L_X_F_B_E_v_a_l_u_a_t_o_r │ │ │ │ │ -(interleavedDerivativeBuffers); │ │ │ │ │ -179 if (instance->_C_o_m_p_i_l_e(srcDesc, dstDesc, duDesc, dvDesc, │ │ │ │ │ -180 duuDesc, duvDesc, dvvDesc)) │ │ │ │ │ -181 return instance; │ │ │ │ │ -182 delete instance; │ │ │ │ │ -183 return NULL; │ │ │ │ │ -184 } │ │ │ │ │ -185 │ │ │ │ │ -_1_9_9 _G_L_X_F_B_E_v_a_l_u_a_t_o_r(bool interleavedDerivativeBuffers = false); │ │ │ │ │ -200 │ │ │ │ │ -_2_0_2 _~_G_L_X_F_B_E_v_a_l_u_a_t_o_r(); │ │ │ │ │ -203 │ │ │ │ │ -209 │ │ │ │ │ -237 template │ │ │ │ │ -_2_3_8 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ -239 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -240 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +95 │ │ │ │ │ +_9_6class _G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r { │ │ │ │ │ +97public: │ │ │ │ │ +_9_8 typedef bool _I_n_s_t_a_n_t_i_a_t_a_b_l_e; │ │ │ │ │ +_9_9 static _G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r * _C_r_e_a_t_e(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +100 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +101 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +102 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +103 void * deviceContext = NULL) { │ │ │ │ │ +104 return _C_r_e_a_t_e(srcDesc, dstDesc, duDesc, dvDesc, │ │ │ │ │ +105 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +106 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +107 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +108 deviceContext); │ │ │ │ │ +109 } │ │ │ │ │ +110 │ │ │ │ │ +_1_1_1 static _G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r * _C_r_e_a_t_e(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +112 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +113 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +114 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +115 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +116 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +117 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +118 void * deviceContext = NULL) { │ │ │ │ │ +119 (void)deviceContext; // not used │ │ │ │ │ +120 _G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r *instance = new _G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r(); │ │ │ │ │ +121 if (instance->_C_o_m_p_i_l_e(srcDesc, dstDesc, duDesc, dvDesc, │ │ │ │ │ +122 duuDesc, duvDesc, dvvDesc)) │ │ │ │ │ +123 return instance; │ │ │ │ │ +124 delete instance; │ │ │ │ │ +125 return NULL; │ │ │ │ │ +126 } │ │ │ │ │ +127 │ │ │ │ │ +_1_2_9 _G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r(); │ │ │ │ │ +130 │ │ │ │ │ +_1_3_2 _~_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r(); │ │ │ │ │ +133 │ │ │ │ │ +139 │ │ │ │ │ +167 template │ │ │ │ │ +_1_6_8 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ +169 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +170 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +171 STENCIL_TABLE const *stencilTable, │ │ │ │ │ +172 _G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ +173 void * deviceContext = NULL) { │ │ │ │ │ +174 │ │ │ │ │ +175 if (instance) { │ │ │ │ │ +176 return instance->_E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer, srcDesc, │ │ │ │ │ +177 dstBuffer, dstDesc, │ │ │ │ │ +178 stencilTable); │ │ │ │ │ +179 } else { │ │ │ │ │ +180 // Create an instance on demand (slow) │ │ │ │ │ +181 (void)deviceContext; // unused │ │ │ │ │ +182 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ +183 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +184 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r()); │ │ │ │ │ +185 if (instance) { │ │ │ │ │ +186 bool r = instance->_E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer, srcDesc, │ │ │ │ │ +187 dstBuffer, dstDesc, │ │ │ │ │ +188 stencilTable); │ │ │ │ │ +189 delete instance; │ │ │ │ │ +190 return r; │ │ │ │ │ +191 } │ │ │ │ │ +192 return false; │ │ │ │ │ +193 } │ │ │ │ │ +194 } │ │ │ │ │ +195 │ │ │ │ │ +235 template │ │ │ │ │ +_2_3_6 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ +237 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +238 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +239 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +240 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ 241 STENCIL_TABLE const *stencilTable, │ │ │ │ │ -242 _G_L_X_F_B_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ +242 _G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ 243 void * deviceContext = NULL) { │ │ │ │ │ 244 │ │ │ │ │ 245 if (instance) { │ │ │ │ │ 246 return instance->_E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer, srcDesc, │ │ │ │ │ 247 dstBuffer, dstDesc, │ │ │ │ │ -248 stencilTable); │ │ │ │ │ -249 } else { │ │ │ │ │ -250 // Create an instance on demand (slow) │ │ │ │ │ -251 (void)deviceContext; // unused │ │ │ │ │ -252 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ -253 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -254 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r()); │ │ │ │ │ +248 duBuffer, duDesc, │ │ │ │ │ +249 dvBuffer, dvDesc, │ │ │ │ │ +250 stencilTable); │ │ │ │ │ +251 } else { │ │ │ │ │ +252 // Create an instance on demand (slow) │ │ │ │ │ +253 (void)deviceContext; // unused │ │ │ │ │ +254 instance = _C_r_e_a_t_e(srcDesc, dstDesc, duDesc, dvDesc); │ │ │ │ │ 255 if (instance) { │ │ │ │ │ 256 bool r = instance->_E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer, srcDesc, │ │ │ │ │ 257 dstBuffer, dstDesc, │ │ │ │ │ -258 stencilTable); │ │ │ │ │ -259 delete instance; │ │ │ │ │ -260 return r; │ │ │ │ │ -261 } │ │ │ │ │ -262 return false; │ │ │ │ │ +258 duBuffer, duDesc, │ │ │ │ │ +259 dvBuffer, dvDesc, │ │ │ │ │ +260 stencilTable); │ │ │ │ │ +261 delete instance; │ │ │ │ │ +262 return r; │ │ │ │ │ 263 } │ │ │ │ │ -264 } │ │ │ │ │ -265 │ │ │ │ │ -305 template │ │ │ │ │ -_3_0_6 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ -307 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -308 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -309 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -310 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -311 STENCIL_TABLE const *stencilTable, │ │ │ │ │ -312 _G_L_X_F_B_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ -313 void * deviceContext = NULL) { │ │ │ │ │ -314 │ │ │ │ │ -315 if (instance) { │ │ │ │ │ -316 return instance->_E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer, srcDesc, │ │ │ │ │ -317 dstBuffer, dstDesc, │ │ │ │ │ -318 duBuffer, duDesc, │ │ │ │ │ -319 dvBuffer, dvDesc, │ │ │ │ │ -320 stencilTable); │ │ │ │ │ -321 } else { │ │ │ │ │ -322 // Create an instance on demand (slow) │ │ │ │ │ -323 (void)deviceContext; // unused │ │ │ │ │ -324 instance = _C_r_e_a_t_e(srcDesc, dstDesc, duDesc, dvDesc); │ │ │ │ │ -325 if (instance) { │ │ │ │ │ -326 bool r = instance->_E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer, srcDesc, │ │ │ │ │ -327 dstBuffer, dstDesc, │ │ │ │ │ -328 duBuffer, duDesc, │ │ │ │ │ -329 dvBuffer, dvDesc, │ │ │ │ │ -330 stencilTable); │ │ │ │ │ -331 delete instance; │ │ │ │ │ -332 return r; │ │ │ │ │ -333 } │ │ │ │ │ -334 return false; │ │ │ │ │ -335 } │ │ │ │ │ -336 } │ │ │ │ │ +264 return false; │ │ │ │ │ +265 } │ │ │ │ │ +266 } │ │ │ │ │ +267 │ │ │ │ │ +325 template │ │ │ │ │ +_3_2_6 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ +327 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +328 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +329 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +330 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +331 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +332 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +333 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +334 STENCIL_TABLE const *stencilTable, │ │ │ │ │ +335 _G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ +336 void * deviceContext = NULL) { │ │ │ │ │ 337 │ │ │ │ │ -395 template │ │ │ │ │ -_3_9_6 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ -397 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -398 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -399 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -400 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -401 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -402 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -403 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -404 STENCIL_TABLE const *stencilTable, │ │ │ │ │ -405 _G_L_X_F_B_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ -406 void * deviceContext = NULL) { │ │ │ │ │ -407 │ │ │ │ │ -408 if (instance) { │ │ │ │ │ -409 return instance->_E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer, srcDesc, │ │ │ │ │ -410 dstBuffer, dstDesc, │ │ │ │ │ -411 duBuffer, duDesc, │ │ │ │ │ -412 dvBuffer, dvDesc, │ │ │ │ │ -413 duuBuffer, duuDesc, │ │ │ │ │ -414 duvBuffer, duvDesc, │ │ │ │ │ -415 dvvBuffer, dvvDesc, │ │ │ │ │ -416 stencilTable); │ │ │ │ │ -417 } else { │ │ │ │ │ -418 // Create an instance on demand (slow) │ │ │ │ │ -419 (void)deviceContext; // unused │ │ │ │ │ -420 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ -421 duDesc, dvDesc, │ │ │ │ │ -422 duuDesc, duvDesc, dvvDesc); │ │ │ │ │ -423 if (instance) { │ │ │ │ │ -424 bool r = instance->_E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer, srcDesc, │ │ │ │ │ -425 dstBuffer, dstDesc, │ │ │ │ │ -426 duBuffer, duDesc, │ │ │ │ │ -427 dvBuffer, dvDesc, │ │ │ │ │ -428 duuBuffer, duuDesc, │ │ │ │ │ -429 duvBuffer, duvDesc, │ │ │ │ │ -430 dvvBuffer, dvvDesc, │ │ │ │ │ -431 stencilTable); │ │ │ │ │ -432 delete instance; │ │ │ │ │ -433 return r; │ │ │ │ │ -434 } │ │ │ │ │ -435 return false; │ │ │ │ │ -436 } │ │ │ │ │ -437 } │ │ │ │ │ -438 │ │ │ │ │ -456 template │ │ │ │ │ -_4_5_7 bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ -458 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -459 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -460 STENCIL_TABLE const *stencilTable) const { │ │ │ │ │ -461 │ │ │ │ │ -462 return _E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ -463 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ -464 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -465 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -466 stencilTable->GetSizesTexture(), │ │ │ │ │ -467 stencilTable->GetOffsetsTexture(), │ │ │ │ │ -468 stencilTable->GetIndicesTexture(), │ │ │ │ │ -469 stencilTable->GetWeightsTexture(), │ │ │ │ │ -470 0, │ │ │ │ │ -471 0, │ │ │ │ │ -472 /* start = */ 0, │ │ │ │ │ -473 /* end = */ stencilTable->GetNumStencils()); │ │ │ │ │ -474 } │ │ │ │ │ -475 │ │ │ │ │ -505 template │ │ │ │ │ -_5_0_6 bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ -507 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -508 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -509 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -510 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -511 STENCIL_TABLE const *stencilTable) const { │ │ │ │ │ -512 │ │ │ │ │ -513 return _E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ -514 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ -515 duBuffer->BindVBO(), duDesc, │ │ │ │ │ -516 dvBuffer->BindVBO(), dvDesc, │ │ │ │ │ -517 stencilTable->GetSizesTexture(), │ │ │ │ │ -518 stencilTable->GetOffsetsTexture(), │ │ │ │ │ -519 stencilTable->GetIndicesTexture(), │ │ │ │ │ -520 stencilTable->GetWeightsTexture(), │ │ │ │ │ -521 stencilTable->GetDuWeightsTexture(), │ │ │ │ │ -522 stencilTable->GetDvWeightsTexture(), │ │ │ │ │ -523 /* start = */ 0, │ │ │ │ │ -524 /* end = */ stencilTable->GetNumStencils()); │ │ │ │ │ -525 } │ │ │ │ │ -526 │ │ │ │ │ -574 template │ │ │ │ │ -_5_7_5 bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ -576 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -577 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -578 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -579 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -580 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -581 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -582 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -583 STENCIL_TABLE const *stencilTable) const { │ │ │ │ │ -584 │ │ │ │ │ -585 return _E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ -586 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ -587 duBuffer->BindVBO(), duDesc, │ │ │ │ │ -588 dvBuffer->BindVBO(), dvDesc, │ │ │ │ │ -589 duuBuffer->BindVBO(), duuDesc, │ │ │ │ │ -590 duvBuffer->BindVBO(), duvDesc, │ │ │ │ │ -591 dvvBuffer->BindVBO(), dvvDesc, │ │ │ │ │ -592 stencilTable->GetSizesTexture(), │ │ │ │ │ -593 stencilTable->GetOffsetsTexture(), │ │ │ │ │ -594 stencilTable->GetIndicesTexture(), │ │ │ │ │ -595 stencilTable->GetWeightsTexture(), │ │ │ │ │ -596 stencilTable->GetDuWeightsTexture(), │ │ │ │ │ -597 stencilTable->GetDvWeightsTexture(), │ │ │ │ │ -598 stencilTable->GetDuuWeightsTexture(), │ │ │ │ │ -599 stencilTable->GetDuvWeightsTexture(), │ │ │ │ │ -600 stencilTable->GetDvvWeightsTexture(), │ │ │ │ │ -601 /* start = */ 0, │ │ │ │ │ -602 /* end = */ stencilTable->GetNumStencils()); │ │ │ │ │ -603 } │ │ │ │ │ -604 │ │ │ │ │ -_6_4_0 bool _E_v_a_l_S_t_e_n_c_i_l_s(GLuint srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -641 GLuint dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -642 GLuint duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -643 GLuint dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -644 GLuint sizesBuffer, │ │ │ │ │ -645 GLuint offsetsBuffer, │ │ │ │ │ -646 GLuint indicesBuffer, │ │ │ │ │ -647 GLuint weightsBuffer, │ │ │ │ │ -648 GLuint duWeightsBuffer, │ │ │ │ │ -649 GLuint dvWeightsBuffer, │ │ │ │ │ -650 int start, │ │ │ │ │ -651 int end) const; │ │ │ │ │ -652 │ │ │ │ │ -_7_0_6 bool _E_v_a_l_S_t_e_n_c_i_l_s(GLuint srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -707 GLuint dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -708 GLuint duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -709 GLuint dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -710 GLuint duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -711 GLuint duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -712 GLuint dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -713 GLuint sizesBuffer, │ │ │ │ │ -714 GLuint offsetsBuffer, │ │ │ │ │ -715 GLuint indicesBuffer, │ │ │ │ │ -716 GLuint weightsBuffer, │ │ │ │ │ -717 GLuint duWeightsBuffer, │ │ │ │ │ -718 GLuint dvWeightsBuffer, │ │ │ │ │ -719 GLuint duuWeightsBuffer, │ │ │ │ │ -720 GLuint duvWeightsBuffer, │ │ │ │ │ -721 GLuint dvvWeightsBuffer, │ │ │ │ │ -722 int start, │ │ │ │ │ -723 int end) const; │ │ │ │ │ -724 │ │ │ │ │ -730 │ │ │ │ │ -763 template │ │ │ │ │ -_7_6_5 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ -766 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -767 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -768 int numPatchCoords, │ │ │ │ │ -769 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -770 PATCH_TABLE *patchTable, │ │ │ │ │ -771 _G_L_X_F_B_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ -772 void * deviceContext = NULL) { │ │ │ │ │ -773 │ │ │ │ │ -774 if (instance) { │ │ │ │ │ -775 return instance->_E_v_a_l_P_a_t_c_h_e_s(srcBuffer, srcDesc, │ │ │ │ │ -776 dstBuffer, dstDesc, │ │ │ │ │ -777 numPatchCoords, patchCoords, │ │ │ │ │ -778 patchTable); │ │ │ │ │ -779 } else { │ │ │ │ │ -780 // Create an instance on demand (slow) │ │ │ │ │ -781 (void)deviceContext; // unused │ │ │ │ │ -782 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ -783 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -784 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r()); │ │ │ │ │ -785 if (instance) { │ │ │ │ │ -786 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s(srcBuffer, srcDesc, │ │ │ │ │ -787 dstBuffer, dstDesc, │ │ │ │ │ -788 numPatchCoords, patchCoords, │ │ │ │ │ -789 patchTable); │ │ │ │ │ -790 delete instance; │ │ │ │ │ -791 return r; │ │ │ │ │ -792 } │ │ │ │ │ -793 return false; │ │ │ │ │ -794 } │ │ │ │ │ -795 } │ │ │ │ │ -796 │ │ │ │ │ -841 template │ │ │ │ │ -_8_4_3 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ -844 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -845 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -846 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -847 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -848 int numPatchCoords, │ │ │ │ │ -849 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -850 PATCH_TABLE *patchTable, │ │ │ │ │ -851 _G_L_X_F_B_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ -852 void * deviceContext = NULL) { │ │ │ │ │ -853 │ │ │ │ │ -854 if (instance) { │ │ │ │ │ -855 return instance->_E_v_a_l_P_a_t_c_h_e_s(srcBuffer, srcDesc, │ │ │ │ │ -856 dstBuffer, dstDesc, │ │ │ │ │ -857 duBuffer, duDesc, │ │ │ │ │ -858 dvBuffer, dvDesc, │ │ │ │ │ -859 numPatchCoords, patchCoords, │ │ │ │ │ -860 patchTable); │ │ │ │ │ -861 } else { │ │ │ │ │ -862 // Create an instance on demand (slow) │ │ │ │ │ -863 (void)deviceContext; // unused │ │ │ │ │ -864 instance = _C_r_e_a_t_e(srcDesc, dstDesc, duDesc, dvDesc); │ │ │ │ │ -865 if (instance) { │ │ │ │ │ -866 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s(srcBuffer, srcDesc, │ │ │ │ │ -867 dstBuffer, dstDesc, │ │ │ │ │ -868 duBuffer, duDesc, │ │ │ │ │ -869 dvBuffer, dvDesc, │ │ │ │ │ -870 numPatchCoords, patchCoords, │ │ │ │ │ -871 patchTable); │ │ │ │ │ -872 delete instance; │ │ │ │ │ -873 return r; │ │ │ │ │ -874 } │ │ │ │ │ -875 return false; │ │ │ │ │ -876 } │ │ │ │ │ -877 } │ │ │ │ │ -878 │ │ │ │ │ +338 if (instance) { │ │ │ │ │ +339 return instance->_E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer, srcDesc, │ │ │ │ │ +340 dstBuffer, dstDesc, │ │ │ │ │ +341 duBuffer, duDesc, │ │ │ │ │ +342 dvBuffer, dvDesc, │ │ │ │ │ +343 duuBuffer, duuDesc, │ │ │ │ │ +344 duvBuffer, duvDesc, │ │ │ │ │ +345 dvvBuffer, dvvDesc, │ │ │ │ │ +346 stencilTable); │ │ │ │ │ +347 } else { │ │ │ │ │ +348 // Create an instance on demand (slow) │ │ │ │ │ +349 (void)deviceContext; // unused │ │ │ │ │ +350 instance = _C_r_e_a_t_e(srcDesc, dstDesc, duDesc, dvDesc, │ │ │ │ │ +351 duuDesc, duvDesc, dvvDesc); │ │ │ │ │ +352 if (instance) { │ │ │ │ │ +353 bool r = instance->_E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer, srcDesc, │ │ │ │ │ +354 dstBuffer, dstDesc, │ │ │ │ │ +355 duBuffer, duDesc, │ │ │ │ │ +356 dvBuffer, dvDesc, │ │ │ │ │ +357 duuBuffer, duuDesc, │ │ │ │ │ +358 duvBuffer, duvDesc, │ │ │ │ │ +359 dvvBuffer, dvvDesc, │ │ │ │ │ +360 stencilTable); │ │ │ │ │ +361 delete instance; │ │ │ │ │ +362 return r; │ │ │ │ │ +363 } │ │ │ │ │ +364 return false; │ │ │ │ │ +365 } │ │ │ │ │ +366 } │ │ │ │ │ +367 │ │ │ │ │ +385 template │ │ │ │ │ +_3_8_6 bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ +387 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +388 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +389 STENCIL_TABLE const *stencilTable) const { │ │ │ │ │ +390 return _E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ +391 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ +392 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +393 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +394 stencilTable->GetSizesBuffer(), │ │ │ │ │ +395 stencilTable->GetOffsetsBuffer(), │ │ │ │ │ +396 stencilTable->GetIndicesBuffer(), │ │ │ │ │ +397 stencilTable->GetWeightsBuffer(), │ │ │ │ │ +398 0, │ │ │ │ │ +399 0, │ │ │ │ │ +400 /* start = */ 0, │ │ │ │ │ +401 /* end = */ stencilTable->GetNumStencils()); │ │ │ │ │ +402 } │ │ │ │ │ +403 │ │ │ │ │ +433 template │ │ │ │ │ +_4_3_4 bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ +435 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +436 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +437 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +438 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +439 STENCIL_TABLE const *stencilTable) const { │ │ │ │ │ +440 return _E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ +441 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ +442 duBuffer->BindVBO(), duDesc, │ │ │ │ │ +443 dvBuffer->BindVBO(), dvDesc, │ │ │ │ │ +444 stencilTable->GetSizesBuffer(), │ │ │ │ │ +445 stencilTable->GetOffsetsBuffer(), │ │ │ │ │ +446 stencilTable->GetIndicesBuffer(), │ │ │ │ │ +447 stencilTable->GetWeightsBuffer(), │ │ │ │ │ +448 stencilTable->GetDuWeightsBuffer(), │ │ │ │ │ +449 stencilTable->GetDvWeightsBuffer(), │ │ │ │ │ +450 /* start = */ 0, │ │ │ │ │ +451 /* end = */ stencilTable->GetNumStencils()); │ │ │ │ │ +452 } │ │ │ │ │ +453 │ │ │ │ │ +501 template │ │ │ │ │ +_5_0_2 bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ +503 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +504 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +505 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +506 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +507 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +508 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +509 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +510 STENCIL_TABLE const *stencilTable) const { │ │ │ │ │ +511 return _E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ +512 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ +513 duBuffer->BindVBO(), duDesc, │ │ │ │ │ +514 dvBuffer->BindVBO(), dvDesc, │ │ │ │ │ +515 duuBuffer->BindVBO(), duuDesc, │ │ │ │ │ +516 duvBuffer->BindVBO(), duvDesc, │ │ │ │ │ +517 dvvBuffer->BindVBO(), dvvDesc, │ │ │ │ │ +518 stencilTable->GetSizesBuffer(), │ │ │ │ │ +519 stencilTable->GetOffsetsBuffer(), │ │ │ │ │ +520 stencilTable->GetIndicesBuffer(), │ │ │ │ │ +521 stencilTable->GetWeightsBuffer(), │ │ │ │ │ +522 stencilTable->GetDuWeightsBuffer(), │ │ │ │ │ +523 stencilTable->GetDvWeightsBuffer(), │ │ │ │ │ +524 stencilTable->GetDuuWeightsBuffer(), │ │ │ │ │ +525 stencilTable->GetDuvWeightsBuffer(), │ │ │ │ │ +526 stencilTable->GetDvvWeightsBuffer(), │ │ │ │ │ +527 /* start = */ 0, │ │ │ │ │ +528 /* end = */ stencilTable->GetNumStencils()); │ │ │ │ │ +529 } │ │ │ │ │ +530 │ │ │ │ │ +_5_6_6 bool _E_v_a_l_S_t_e_n_c_i_l_s(GLuint srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +567 GLuint dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +568 GLuint duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +569 GLuint dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +570 GLuint sizesBuffer, │ │ │ │ │ +571 GLuint offsetsBuffer, │ │ │ │ │ +572 GLuint indicesBuffer, │ │ │ │ │ +573 GLuint weightsBuffer, │ │ │ │ │ +574 GLuint duWeightsBuffer, │ │ │ │ │ +575 GLuint dvWeightsBuffer, │ │ │ │ │ +576 int start, │ │ │ │ │ +577 int end) const; │ │ │ │ │ +578 │ │ │ │ │ +_6_3_2 bool _E_v_a_l_S_t_e_n_c_i_l_s(GLuint srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +633 GLuint dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +634 GLuint duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +635 GLuint dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +636 GLuint duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +637 GLuint duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +638 GLuint dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +639 GLuint sizesBuffer, │ │ │ │ │ +640 GLuint offsetsBuffer, │ │ │ │ │ +641 GLuint indicesBuffer, │ │ │ │ │ +642 GLuint weightsBuffer, │ │ │ │ │ +643 GLuint duWeightsBuffer, │ │ │ │ │ +644 GLuint dvWeightsBuffer, │ │ │ │ │ +645 GLuint duuWeightsBuffer, │ │ │ │ │ +646 GLuint duvWeightsBuffer, │ │ │ │ │ +647 GLuint dvvWeightsBuffer, │ │ │ │ │ +648 int start, │ │ │ │ │ +649 int end) const; │ │ │ │ │ +650 │ │ │ │ │ +656 │ │ │ │ │ +689 template │ │ │ │ │ +_6_9_1 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ +692 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +693 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +694 int numPatchCoords, │ │ │ │ │ +695 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +696 PATCH_TABLE *patchTable, │ │ │ │ │ +697 _G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ +698 void * deviceContext = NULL) { │ │ │ │ │ +699 │ │ │ │ │ +700 if (instance) { │ │ │ │ │ +701 return instance->_E_v_a_l_P_a_t_c_h_e_s(srcBuffer, srcDesc, │ │ │ │ │ +702 dstBuffer, dstDesc, │ │ │ │ │ +703 numPatchCoords, patchCoords, │ │ │ │ │ +704 patchTable); │ │ │ │ │ +705 } else { │ │ │ │ │ +706 // Create an instance on demand (slow) │ │ │ │ │ +707 (void)deviceContext; // unused │ │ │ │ │ +708 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ +709 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +710 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r()); │ │ │ │ │ +711 if (instance) { │ │ │ │ │ +712 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s(srcBuffer, srcDesc, │ │ │ │ │ +713 dstBuffer, dstDesc, │ │ │ │ │ +714 numPatchCoords, patchCoords, │ │ │ │ │ +715 patchTable); │ │ │ │ │ +716 delete instance; │ │ │ │ │ +717 return r; │ │ │ │ │ +718 } │ │ │ │ │ +719 return false; │ │ │ │ │ +720 } │ │ │ │ │ +721 } │ │ │ │ │ +722 │ │ │ │ │ +767 template │ │ │ │ │ +_7_6_9 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ +770 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +771 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +772 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +773 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +774 int numPatchCoords, │ │ │ │ │ +775 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +776 PATCH_TABLE *patchTable, │ │ │ │ │ +777 _G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ +778 void * deviceContext = NULL) { │ │ │ │ │ +779 │ │ │ │ │ +780 if (instance) { │ │ │ │ │ +781 return instance->_E_v_a_l_P_a_t_c_h_e_s(srcBuffer, srcDesc, │ │ │ │ │ +782 dstBuffer, dstDesc, │ │ │ │ │ +783 duBuffer, duDesc, │ │ │ │ │ +784 dvBuffer, dvDesc, │ │ │ │ │ +785 numPatchCoords, patchCoords, │ │ │ │ │ +786 patchTable); │ │ │ │ │ +787 } else { │ │ │ │ │ +788 // Create an instance on demand (slow) │ │ │ │ │ +789 (void)deviceContext; // unused │ │ │ │ │ +790 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ +791 duDesc, dvDesc); │ │ │ │ │ +792 if (instance) { │ │ │ │ │ +793 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s(srcBuffer, srcDesc, │ │ │ │ │ +794 dstBuffer, dstDesc, │ │ │ │ │ +795 duBuffer, duDesc, │ │ │ │ │ +796 dvBuffer, dvDesc, │ │ │ │ │ +797 numPatchCoords, patchCoords, │ │ │ │ │ +798 patchTable); │ │ │ │ │ +799 delete instance; │ │ │ │ │ +800 return r; │ │ │ │ │ +801 } │ │ │ │ │ +802 return false; │ │ │ │ │ +803 } │ │ │ │ │ +804 } │ │ │ │ │ +805 │ │ │ │ │ +868 template │ │ │ │ │ +_8_7_0 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ +871 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +872 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +873 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +874 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +875 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +876 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +877 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +878 int numPatchCoords, │ │ │ │ │ +879 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +880 PATCH_TABLE *patchTable, │ │ │ │ │ +881 _G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ +882 void * deviceContext = NULL) { │ │ │ │ │ +883 │ │ │ │ │ +884 if (instance) { │ │ │ │ │ +885 return instance->_E_v_a_l_P_a_t_c_h_e_s(srcBuffer, srcDesc, │ │ │ │ │ +886 dstBuffer, dstDesc, │ │ │ │ │ +887 duBuffer, duDesc, │ │ │ │ │ +888 dvBuffer, dvDesc, │ │ │ │ │ +889 duuBuffer, duuDesc, │ │ │ │ │ +890 duvBuffer, duvDesc, │ │ │ │ │ +891 dvvBuffer, dvvDesc, │ │ │ │ │ +892 numPatchCoords, patchCoords, │ │ │ │ │ +893 patchTable); │ │ │ │ │ +894 } else { │ │ │ │ │ +895 // Create an instance on demand (slow) │ │ │ │ │ +896 (void)deviceContext; // unused │ │ │ │ │ +897 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ +898 duDesc, dvDesc, │ │ │ │ │ +899 duuDesc, duvDesc, dvvDesc); │ │ │ │ │ +900 if (instance) { │ │ │ │ │ +901 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s(srcBuffer, srcDesc, │ │ │ │ │ +902 dstBuffer, dstDesc, │ │ │ │ │ +903 duBuffer, duDesc, │ │ │ │ │ +904 dvBuffer, dvDesc, │ │ │ │ │ +905 duuBuffer, duuDesc, │ │ │ │ │ +906 duvBuffer, duvDesc, │ │ │ │ │ +907 dvvBuffer, dvvDesc, │ │ │ │ │ +908 numPatchCoords, patchCoords, │ │ │ │ │ +909 patchTable); │ │ │ │ │ +910 delete instance; │ │ │ │ │ +911 return r; │ │ │ │ │ +912 } │ │ │ │ │ +913 return false; │ │ │ │ │ +914 } │ │ │ │ │ +915 } │ │ │ │ │ +916 │ │ │ │ │ 941 template │ │ │ │ │ -_9_4_3 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ +_9_4_3 bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ 944 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ 945 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -946 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -947 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -948 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -949 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -950 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -951 int numPatchCoords, │ │ │ │ │ -952 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -953 PATCH_TABLE *patchTable, │ │ │ │ │ -954 _G_L_X_F_B_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ -955 void * deviceContext = NULL) { │ │ │ │ │ -956 │ │ │ │ │ -957 if (instance) { │ │ │ │ │ -958 return instance->_E_v_a_l_P_a_t_c_h_e_s(srcBuffer, srcDesc, │ │ │ │ │ -959 dstBuffer, dstDesc, │ │ │ │ │ -960 duBuffer, duDesc, │ │ │ │ │ -961 dvBuffer, dvDesc, │ │ │ │ │ -962 duuBuffer, duuDesc, │ │ │ │ │ -963 duvBuffer, duvDesc, │ │ │ │ │ -964 dvvBuffer, dvvDesc, │ │ │ │ │ -965 numPatchCoords, patchCoords, │ │ │ │ │ -966 patchTable); │ │ │ │ │ -967 } else { │ │ │ │ │ -968 // Create an instance on demand (slow) │ │ │ │ │ -969 (void)deviceContext; // unused │ │ │ │ │ -970 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ -971 duDesc, dvDesc, │ │ │ │ │ -972 duuDesc, duvDesc, dvvDesc); │ │ │ │ │ -973 if (instance) { │ │ │ │ │ -974 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s(srcBuffer, srcDesc, │ │ │ │ │ -975 dstBuffer, dstDesc, │ │ │ │ │ -976 duBuffer, duDesc, │ │ │ │ │ -977 dvBuffer, dvDesc, │ │ │ │ │ -978 duuBuffer, duuDesc, │ │ │ │ │ -979 duvBuffer, duvDesc, │ │ │ │ │ -980 dvvBuffer, dvvDesc, │ │ │ │ │ -981 numPatchCoords, patchCoords, │ │ │ │ │ -982 patchTable); │ │ │ │ │ -983 delete instance; │ │ │ │ │ -984 return r; │ │ │ │ │ -985 } │ │ │ │ │ -986 return false; │ │ │ │ │ -987 } │ │ │ │ │ -988 } │ │ │ │ │ -989 │ │ │ │ │ -1014 template │ │ │ │ │ -_1_0_1_6 bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ -1017 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1018 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1019 int numPatchCoords, │ │ │ │ │ -1020 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1021 PATCH_TABLE *patchTable) const { │ │ │ │ │ -1022 │ │ │ │ │ -1023 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ -1024 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ -1025 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -1026 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -1027 numPatchCoords, │ │ │ │ │ -1028 patchCoords->BindVBO(), │ │ │ │ │ -1029 patchTable->GetPatchArrays(), │ │ │ │ │ -1030 patchTable->GetPatchIndexTextureBuffer(), │ │ │ │ │ -1031 patchTable->GetPatchParamTextureBuffer()); │ │ │ │ │ -1032 } │ │ │ │ │ -1033 │ │ │ │ │ -1068 template │ │ │ │ │ -_1_0_7_0 bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ -1071 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1072 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1073 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -1074 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -1075 int numPatchCoords, │ │ │ │ │ -1076 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1077 PATCH_TABLE *patchTable) const { │ │ │ │ │ -1078 │ │ │ │ │ -1079 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ -1080 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ -1081 duBuffer->BindVBO(), duDesc, │ │ │ │ │ -1082 dvBuffer->BindVBO(), dvDesc, │ │ │ │ │ -1083 numPatchCoords, │ │ │ │ │ -1084 patchCoords->BindVBO(), │ │ │ │ │ -1085 patchTable->GetPatchArrays(), │ │ │ │ │ -1086 patchTable->GetPatchIndexTextureBuffer(), │ │ │ │ │ -1087 patchTable->GetPatchParamTextureBuffer()); │ │ │ │ │ -1088 } │ │ │ │ │ -1089 │ │ │ │ │ -1142 template │ │ │ │ │ -_1_1_4_4 bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ -1145 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1146 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1147 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -1148 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -1149 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -1150 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -1151 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -1152 int numPatchCoords, │ │ │ │ │ -1153 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1154 PATCH_TABLE *patchTable) const { │ │ │ │ │ -1155 │ │ │ │ │ -1156 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ -1157 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ -1158 duBuffer->BindVBO(), duDesc, │ │ │ │ │ -1159 dvBuffer->BindVBO(), dvDesc, │ │ │ │ │ -1160 duuBuffer->BindVBO(), duuDesc, │ │ │ │ │ -1161 duvBuffer->BindVBO(), duvDesc, │ │ │ │ │ -1162 dvvBuffer->BindVBO(), dvvDesc, │ │ │ │ │ -1163 numPatchCoords, │ │ │ │ │ -1164 patchCoords->BindVBO(), │ │ │ │ │ -1165 patchTable->GetPatchArrays(), │ │ │ │ │ -1166 patchTable->GetPatchIndexTextureBuffer(), │ │ │ │ │ -1167 patchTable->GetPatchParamTextureBuffer()); │ │ │ │ │ -1168 } │ │ │ │ │ -1169 │ │ │ │ │ -_1_1_7_0 bool _E_v_a_l_P_a_t_c_h_e_s(GLuint srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1171 GLuint dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1172 GLuint duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -1173 GLuint dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -1174 int numPatchCoords, │ │ │ │ │ -1175 GLuint patchCoordsBuffer, │ │ │ │ │ -1176 const _P_a_t_c_h_A_r_r_a_y_V_e_c_t_o_r &patchArrays, │ │ │ │ │ -1177 GLuint patchIndexBuffer, │ │ │ │ │ -1178 GLuint patchParamsBuffer) const; │ │ │ │ │ -1179 │ │ │ │ │ -_1_1_8_0 bool _E_v_a_l_P_a_t_c_h_e_s(GLuint srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1181 GLuint dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1182 GLuint duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -1183 GLuint dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -1184 GLuint duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -1185 GLuint duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -1186 GLuint dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -1187 int numPatchCoords, │ │ │ │ │ -1188 GLuint patchCoordsBuffer, │ │ │ │ │ -1189 const _P_a_t_c_h_A_r_r_a_y_V_e_c_t_o_r &patchArrays, │ │ │ │ │ -1190 GLuint patchIndexBuffer, │ │ │ │ │ -1191 GLuint patchParamsBuffer) const; │ │ │ │ │ -1192 │ │ │ │ │ -1225 template │ │ │ │ │ -_1_2_2_7 static bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -1228 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1229 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1230 int numPatchCoords, │ │ │ │ │ -1231 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1232 PATCH_TABLE *patchTable, │ │ │ │ │ -1233 _G_L_X_F_B_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ -1234 void * deviceContext = NULL) { │ │ │ │ │ -1235 │ │ │ │ │ -1236 if (instance) { │ │ │ │ │ -1237 return instance->_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -1238 srcBuffer, srcDesc, │ │ │ │ │ -1239 dstBuffer, dstDesc, │ │ │ │ │ -1240 numPatchCoords, patchCoords, │ │ │ │ │ -1241 patchTable); │ │ │ │ │ -1242 } else { │ │ │ │ │ -1243 // Create an instance on demand (slow) │ │ │ │ │ -1244 (void)deviceContext; // unused │ │ │ │ │ -1245 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ -1246 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -1247 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r()); │ │ │ │ │ -1248 if (instance) { │ │ │ │ │ -1249 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -1250 srcBuffer, srcDesc, │ │ │ │ │ -1251 dstBuffer, dstDesc, │ │ │ │ │ -1252 numPatchCoords, patchCoords, │ │ │ │ │ -1253 patchTable); │ │ │ │ │ -1254 delete instance; │ │ │ │ │ -1255 return r; │ │ │ │ │ -1256 } │ │ │ │ │ -1257 return false; │ │ │ │ │ -1258 } │ │ │ │ │ -1259 } │ │ │ │ │ -1260 │ │ │ │ │ -1285 template │ │ │ │ │ -_1_2_8_7 bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -1288 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1289 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1290 int numPatchCoords, │ │ │ │ │ -1291 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1292 PATCH_TABLE *patchTable) const { │ │ │ │ │ -1293 │ │ │ │ │ -1294 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ -1295 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ -1296 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -1297 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -1298 numPatchCoords, │ │ │ │ │ -1299 patchCoords->BindVBO(), │ │ │ │ │ -1300 patchTable->GetVaryingPatchArrays(), │ │ │ │ │ -1301 patchTable->GetVaryingPatchIndexTextureBuffer(), │ │ │ │ │ -1302 patchTable->GetPatchParamTextureBuffer()); │ │ │ │ │ -1303 } │ │ │ │ │ -1304 │ │ │ │ │ -1349 template │ │ │ │ │ -_1_3_5_1 static bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -1352 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1353 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1354 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -1355 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -1356 int numPatchCoords, │ │ │ │ │ -1357 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1358 PATCH_TABLE *patchTable, │ │ │ │ │ -1359 _G_L_X_F_B_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ -1360 void * deviceContext = NULL) { │ │ │ │ │ -1361 │ │ │ │ │ -1362 if (instance) { │ │ │ │ │ -1363 return instance->_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -1364 srcBuffer, srcDesc, │ │ │ │ │ -1365 dstBuffer, dstDesc, │ │ │ │ │ -1366 duBuffer, duDesc, │ │ │ │ │ -1367 dvBuffer, dvDesc, │ │ │ │ │ -1368 numPatchCoords, patchCoords, │ │ │ │ │ -1369 patchTable); │ │ │ │ │ -1370 } else { │ │ │ │ │ -1371 // Create an instance on demand (slow) │ │ │ │ │ -1372 (void)deviceContext; // unused │ │ │ │ │ -1373 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ -1374 duDesc, dvDesc); │ │ │ │ │ -1375 if (instance) { │ │ │ │ │ -1376 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -1377 srcBuffer, srcDesc, │ │ │ │ │ -1378 dstBuffer, dstDesc, │ │ │ │ │ -1379 duBuffer, duDesc, │ │ │ │ │ -1380 dvBuffer, dvDesc, │ │ │ │ │ -1381 numPatchCoords, patchCoords, │ │ │ │ │ -1382 patchTable); │ │ │ │ │ -1383 delete instance; │ │ │ │ │ -1384 return r; │ │ │ │ │ -1385 } │ │ │ │ │ -1386 return false; │ │ │ │ │ -1387 } │ │ │ │ │ -1388 } │ │ │ │ │ -1389 │ │ │ │ │ -1426 template │ │ │ │ │ -_1_4_2_8 bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -1429 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1430 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1431 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -1432 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -1433 int numPatchCoords, │ │ │ │ │ -1434 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1435 PATCH_TABLE *patchTable) const { │ │ │ │ │ -1436 │ │ │ │ │ -1437 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ -1438 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ -1439 duBuffer->BindVBO(), duDesc, │ │ │ │ │ -1440 dvBuffer->BindVBO(), dvDesc, │ │ │ │ │ -1441 numPatchCoords, │ │ │ │ │ -1442 patchCoords->BindVBO(), │ │ │ │ │ -1443 patchTable->GetVaryingPatchArrays(), │ │ │ │ │ -1444 patchTable->GetVaryingPatchIndexTextureBuffer(), │ │ │ │ │ -1445 patchTable->GetPatchParamTextureBuffer()); │ │ │ │ │ -1446 } │ │ │ │ │ -1447 │ │ │ │ │ -1510 template │ │ │ │ │ -_1_5_1_2 static bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -1513 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1514 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1515 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -1516 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -1517 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -1518 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -1519 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -1520 int numPatchCoords, │ │ │ │ │ -1521 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1522 PATCH_TABLE *patchTable, │ │ │ │ │ -1523 _G_L_X_F_B_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ -1524 void * deviceContext = NULL) { │ │ │ │ │ -1525 │ │ │ │ │ -1526 if (instance) { │ │ │ │ │ -1527 return instance->_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -1528 srcBuffer, srcDesc, │ │ │ │ │ -1529 dstBuffer, dstDesc, │ │ │ │ │ -1530 duBuffer, duDesc, │ │ │ │ │ -1531 dvBuffer, dvDesc, │ │ │ │ │ -1532 duuBuffer, duuDesc, │ │ │ │ │ -1533 duvBuffer, duvDesc, │ │ │ │ │ -1534 dvvBuffer, dvvDesc, │ │ │ │ │ -1535 numPatchCoords, patchCoords, │ │ │ │ │ -1536 patchTable); │ │ │ │ │ -1537 } else { │ │ │ │ │ -1538 // Create an instance on demand (slow) │ │ │ │ │ -1539 (void)deviceContext; // unused │ │ │ │ │ -1540 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ -1541 duDesc, dvDesc, │ │ │ │ │ -1542 duuDesc, duvDesc, dvvDesc); │ │ │ │ │ -1543 if (instance) { │ │ │ │ │ -1544 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -1545 srcBuffer, srcDesc, │ │ │ │ │ -1546 dstBuffer, dstDesc, │ │ │ │ │ -1547 duBuffer, duDesc, │ │ │ │ │ -1548 dvBuffer, dvDesc, │ │ │ │ │ -1549 duuBuffer, duuDesc, │ │ │ │ │ -1550 duvBuffer, duvDesc, │ │ │ │ │ -1551 dvvBuffer, dvvDesc, │ │ │ │ │ -1552 numPatchCoords, patchCoords, │ │ │ │ │ -1553 patchTable); │ │ │ │ │ -1554 delete instance; │ │ │ │ │ -1555 return r; │ │ │ │ │ -1556 } │ │ │ │ │ -1557 return false; │ │ │ │ │ -1558 } │ │ │ │ │ -1559 } │ │ │ │ │ -1560 │ │ │ │ │ -1615 template │ │ │ │ │ -_1_6_1_7 bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -1618 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1619 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1620 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -1621 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -1622 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -1623 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -1624 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -1625 int numPatchCoords, │ │ │ │ │ -1626 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1627 PATCH_TABLE *patchTable) const { │ │ │ │ │ -1628 │ │ │ │ │ -1629 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ -1630 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ -1631 duBuffer->BindVBO(), duDesc, │ │ │ │ │ -1632 dvBuffer->BindVBO(), dvDesc, │ │ │ │ │ -1633 duuBuffer->BindVBO(), duuDesc, │ │ │ │ │ -1634 duvBuffer->BindVBO(), duvDesc, │ │ │ │ │ -1635 dvvBuffer->BindVBO(), dvvDesc, │ │ │ │ │ -1636 numPatchCoords, │ │ │ │ │ -1637 patchCoords->BindVBO(), │ │ │ │ │ -1638 patchTable->GetVaryingPatchArrays(), │ │ │ │ │ -1639 patchTable->GetVaryingPatchIndexTextureBuffer(), │ │ │ │ │ -1640 patchTable->GetPatchParamTextureBuffer()); │ │ │ │ │ -1641 } │ │ │ │ │ -1642 │ │ │ │ │ -1677 template │ │ │ │ │ -_1_6_7_9 static bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -1680 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1681 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1682 int numPatchCoords, │ │ │ │ │ -1683 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1684 PATCH_TABLE *patchTable, │ │ │ │ │ -1685 int fvarChannel, │ │ │ │ │ -1686 _G_L_X_F_B_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ -1687 void * deviceContext = NULL) { │ │ │ │ │ -1688 │ │ │ │ │ -1689 if (instance) { │ │ │ │ │ -1690 return instance->_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -1691 srcBuffer, srcDesc, │ │ │ │ │ -1692 dstBuffer, dstDesc, │ │ │ │ │ -1693 numPatchCoords, patchCoords, │ │ │ │ │ -1694 patchTable, fvarChannel); │ │ │ │ │ -1695 } else { │ │ │ │ │ -1696 // Create an instance on demand (slow) │ │ │ │ │ -1697 (void)deviceContext; // unused │ │ │ │ │ -1698 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ -1699 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -1700 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r()); │ │ │ │ │ -1701 if (instance) { │ │ │ │ │ -1702 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -1703 srcBuffer, srcDesc, │ │ │ │ │ -1704 dstBuffer, dstDesc, │ │ │ │ │ -1705 numPatchCoords, patchCoords, │ │ │ │ │ -1706 patchTable, fvarChannel); │ │ │ │ │ -1707 delete instance; │ │ │ │ │ -1708 return r; │ │ │ │ │ -1709 } │ │ │ │ │ -1710 return false; │ │ │ │ │ -1711 } │ │ │ │ │ -1712 } │ │ │ │ │ -1713 │ │ │ │ │ -1740 template │ │ │ │ │ -_1_7_4_2 bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -1743 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1744 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1745 int numPatchCoords, │ │ │ │ │ -1746 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1747 PATCH_TABLE *patchTable, │ │ │ │ │ -1748 int fvarChannel = 0) const { │ │ │ │ │ -1749 │ │ │ │ │ -1750 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ -1751 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ -1752 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -1753 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -1754 numPatchCoords, │ │ │ │ │ -1755 patchCoords->BindVBO(), │ │ │ │ │ -1756 patchTable->GetFVarPatchArrays(fvarChannel), │ │ │ │ │ -1757 patchTable->GetFVarPatchIndexTextureBuffer(fvarChannel), │ │ │ │ │ -1758 patchTable->GetFVarPatchParamTextureBuffer(fvarChannel)); │ │ │ │ │ -1759 } │ │ │ │ │ -1760 │ │ │ │ │ -1807 template │ │ │ │ │ -_1_8_0_9 static bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -1810 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1811 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1812 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -1813 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -1814 int numPatchCoords, │ │ │ │ │ -1815 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1816 PATCH_TABLE *patchTable, │ │ │ │ │ -1817 int fvarChannel, │ │ │ │ │ -1818 _G_L_X_F_B_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ -1819 void * deviceContext = NULL) { │ │ │ │ │ -1820 │ │ │ │ │ -1821 if (instance) { │ │ │ │ │ -1822 return instance->_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -1823 srcBuffer, srcDesc, │ │ │ │ │ -1824 dstBuffer, dstDesc, │ │ │ │ │ -1825 duBuffer, duDesc, │ │ │ │ │ -1826 dvBuffer, dvDesc, │ │ │ │ │ -1827 numPatchCoords, patchCoords, │ │ │ │ │ -1828 patchTable, fvarChannel); │ │ │ │ │ -1829 } else { │ │ │ │ │ -1830 // Create an instance on demand (slow) │ │ │ │ │ -1831 (void)deviceContext; // unused │ │ │ │ │ -1832 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ -1833 duDesc, dvDesc); │ │ │ │ │ -1834 if (instance) { │ │ │ │ │ -1835 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -1836 srcBuffer, srcDesc, │ │ │ │ │ -1837 dstBuffer, dstDesc, │ │ │ │ │ -1838 duBuffer, duDesc, │ │ │ │ │ -1839 dvBuffer, dvDesc, │ │ │ │ │ -1840 numPatchCoords, patchCoords, │ │ │ │ │ -1841 patchTable, fvarChannel); │ │ │ │ │ -1842 delete instance; │ │ │ │ │ -1843 return r; │ │ │ │ │ -1844 } │ │ │ │ │ -1845 return false; │ │ │ │ │ -1846 } │ │ │ │ │ -1847 } │ │ │ │ │ -1848 │ │ │ │ │ -1887 template │ │ │ │ │ -_1_8_8_9 bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -1890 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1891 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1892 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -1893 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -1894 int numPatchCoords, │ │ │ │ │ -1895 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1896 PATCH_TABLE *patchTable, │ │ │ │ │ -1897 int fvarChannel = 0) const { │ │ │ │ │ -1898 │ │ │ │ │ -1899 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ -1900 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ -1901 duBuffer->BindVBO(), duDesc, │ │ │ │ │ -1902 dvBuffer->BindVBO(), dvDesc, │ │ │ │ │ -1903 numPatchCoords, │ │ │ │ │ -1904 patchCoords->BindVBO(), │ │ │ │ │ -1905 patchTable->GetFVarPatchArrays(fvarChannel), │ │ │ │ │ -1906 patchTable->GetFVarPatchIndexTextureBuffer(fvarChannel), │ │ │ │ │ -1907 patchTable->GetFVarPatchParamTextureBuffer(fvarChannel)); │ │ │ │ │ -1908 } │ │ │ │ │ -1909 │ │ │ │ │ -1974 template │ │ │ │ │ -_1_9_7_6 static bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -1977 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1978 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1979 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -1980 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -1981 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -1982 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -1983 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -1984 int numPatchCoords, │ │ │ │ │ -1985 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1986 PATCH_TABLE *patchTable, │ │ │ │ │ -1987 int fvarChannel, │ │ │ │ │ -1988 _G_L_X_F_B_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ -1989 void * deviceContext = NULL) { │ │ │ │ │ -1990 │ │ │ │ │ -1991 if (instance) { │ │ │ │ │ -1992 return instance->_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -1993 srcBuffer, srcDesc, │ │ │ │ │ -1994 dstBuffer, dstDesc, │ │ │ │ │ -1995 duBuffer, duDesc, │ │ │ │ │ -1996 dvBuffer, dvDesc, │ │ │ │ │ -1997 duuBuffer, duuDesc, │ │ │ │ │ -1998 duvBuffer, duvDesc, │ │ │ │ │ -1999 dvvBuffer, dvvDesc, │ │ │ │ │ -2000 numPatchCoords, patchCoords, │ │ │ │ │ -2001 patchTable, fvarChannel); │ │ │ │ │ -2002 } else { │ │ │ │ │ -2003 // Create an instance on demand (slow) │ │ │ │ │ -2004 (void)deviceContext; // unused │ │ │ │ │ -2005 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ -2006 duDesc, dvDesc, │ │ │ │ │ -2007 duuDesc, duvDesc, dvvDesc); │ │ │ │ │ -2008 if (instance) { │ │ │ │ │ -2009 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -2010 srcBuffer, srcDesc, │ │ │ │ │ -2011 dstBuffer, dstDesc, │ │ │ │ │ -2012 duBuffer, duDesc, │ │ │ │ │ -2013 dvBuffer, dvDesc, │ │ │ │ │ -2014 duuBuffer, duuDesc, │ │ │ │ │ -2015 duvBuffer, duvDesc, │ │ │ │ │ -2016 dvvBuffer, dvvDesc, │ │ │ │ │ -2017 numPatchCoords, patchCoords, │ │ │ │ │ -2018 patchTable, fvarChannel); │ │ │ │ │ -2019 delete instance; │ │ │ │ │ -2020 return r; │ │ │ │ │ -2021 } │ │ │ │ │ -2022 return false; │ │ │ │ │ -2023 } │ │ │ │ │ -2024 } │ │ │ │ │ -2025 │ │ │ │ │ -2082 template │ │ │ │ │ -_2_0_8_4 bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -2085 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -2086 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -2087 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -2088 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -2089 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -2090 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -2091 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -2092 int numPatchCoords, │ │ │ │ │ -2093 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -2094 PATCH_TABLE *patchTable, │ │ │ │ │ -2095 int fvarChannel = 0) const { │ │ │ │ │ -2096 │ │ │ │ │ -2097 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ -2098 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ -2099 duBuffer->BindVBO(), duDesc, │ │ │ │ │ -2100 dvBuffer->BindVBO(), dvDesc, │ │ │ │ │ -2101 duuBuffer->BindVBO(), duuDesc, │ │ │ │ │ -2102 duvBuffer->BindVBO(), duvDesc, │ │ │ │ │ -2103 dvvBuffer->BindVBO(), dvvDesc, │ │ │ │ │ -2104 numPatchCoords, │ │ │ │ │ -2105 patchCoords->BindVBO(), │ │ │ │ │ -2106 patchTable->GetFVarPatchArrays(fvarChannel), │ │ │ │ │ -2107 patchTable->GetFVarPatchIndexTextureBuffer(fvarChannel), │ │ │ │ │ -2108 patchTable->GetFVarPatchParamTextureBuffer(fvarChannel)); │ │ │ │ │ -2109 } │ │ │ │ │ -2110 │ │ │ │ │ -2116 │ │ │ │ │ -_2_1_1_9 bool _C_o_m_p_i_l_e(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -2120 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -2121 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc = _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -2122 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc = _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -2123 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc = _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -2124 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc = _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ -2125 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc = _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r()); │ │ │ │ │ -2126 │ │ │ │ │ -_2_1_2_8 static void _S_y_n_c_h_r_o_n_i_z_e(void *kernel); │ │ │ │ │ -2129 │ │ │ │ │ -2130private: │ │ │ │ │ -2131 GLuint _srcBufferTexture; │ │ │ │ │ -2132 GLuint _patchArraysUBO; │ │ │ │ │ -2133 bool _interleavedDerivativeBuffers; │ │ │ │ │ -2134 │ │ │ │ │ -2135 struct _StencilKernel { │ │ │ │ │ -2136 _StencilKernel(); │ │ │ │ │ -2137 ~_StencilKernel(); │ │ │ │ │ -2138 bool Compile(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -2139 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -2140 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -2141 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -2142 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -2143 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -2144 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -2145 bool interleavedDerivativeBuffers); │ │ │ │ │ -2146 GLuint program; │ │ │ │ │ -2147 GLint uniformSrcBufferTexture; │ │ │ │ │ -2148 GLint uniformSrcOffset; // src buffer offset (in elements) │ │ │ │ │ -2149 │ │ │ │ │ -2150 GLint uniformSizesTexture; │ │ │ │ │ -2151 GLint uniformOffsetsTexture; │ │ │ │ │ -2152 GLint uniformIndicesTexture; │ │ │ │ │ -2153 GLint uniformWeightsTexture; │ │ │ │ │ -2154 GLint uniformDuWeightsTexture; │ │ │ │ │ -2155 GLint uniformDvWeightsTexture; │ │ │ │ │ -2156 GLint uniformDuuWeightsTexture; │ │ │ │ │ -2157 GLint uniformDuvWeightsTexture; │ │ │ │ │ -2158 GLint uniformDvvWeightsTexture; │ │ │ │ │ -2159 GLint uniformStart; // range │ │ │ │ │ -2160 GLint uniformEnd; │ │ │ │ │ -2161 } _stencilKernel; │ │ │ │ │ -2162 │ │ │ │ │ -2163 struct _PatchKernel { │ │ │ │ │ -2164 _PatchKernel(); │ │ │ │ │ -2165 ~_PatchKernel(); │ │ │ │ │ -2166 bool Compile(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -2167 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -2168 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -2169 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -2170 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -2171 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -2172 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -2173 bool interleavedDerivativeBuffers); │ │ │ │ │ -2174 GLuint program; │ │ │ │ │ -2175 GLint uniformSrcBufferTexture; │ │ │ │ │ -2176 GLint uniformSrcOffset; // src buffer offset (in elements) │ │ │ │ │ -2177 │ │ │ │ │ -2178 GLint uniformPatchArraysUBOBinding; │ │ │ │ │ -2179 GLint uniformPatchParamTexture; │ │ │ │ │ -2180 GLint uniformPatchIndexTexture; │ │ │ │ │ -2181 } _patchKernel; │ │ │ │ │ -2182 │ │ │ │ │ -2183}; │ │ │ │ │ -2184 │ │ │ │ │ -2185} // end namespace Osd │ │ │ │ │ -2186 │ │ │ │ │ -2187} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ -2188using namespace OPENSUBDIV_VERSION; │ │ │ │ │ -2189 │ │ │ │ │ -2190} // end namespace OpenSubdiv │ │ │ │ │ -2191 │ │ │ │ │ -2192 │ │ │ │ │ -2193#endif // OPENSUBDIV3_OSD_GL_XFB_EVALUATOR_H │ │ │ │ │ +946 int numPatchCoords, │ │ │ │ │ +947 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +948 PATCH_TABLE *patchTable) const { │ │ │ │ │ +949 │ │ │ │ │ +950 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ +951 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ +952 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +953 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +954 numPatchCoords, │ │ │ │ │ +955 patchCoords->BindVBO(), │ │ │ │ │ +956 patchTable->GetPatchArrays(), │ │ │ │ │ +957 patchTable->GetPatchIndexBuffer(), │ │ │ │ │ +958 patchTable->GetPatchParamBuffer()); │ │ │ │ │ +959 } │ │ │ │ │ +960 │ │ │ │ │ +995 template │ │ │ │ │ +_9_9_7 bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ +998 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +999 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1000 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +1001 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +1002 int numPatchCoords, │ │ │ │ │ +1003 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1004 PATCH_TABLE *patchTable) const { │ │ │ │ │ +1005 │ │ │ │ │ +1006 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ +1007 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ +1008 duBuffer->BindVBO(), duDesc, │ │ │ │ │ +1009 dvBuffer->BindVBO(), dvDesc, │ │ │ │ │ +1010 numPatchCoords, │ │ │ │ │ +1011 patchCoords->BindVBO(), │ │ │ │ │ +1012 patchTable->GetPatchArrays(), │ │ │ │ │ +1013 patchTable->GetPatchIndexBuffer(), │ │ │ │ │ +1014 patchTable->GetPatchParamBuffer()); │ │ │ │ │ +1015 } │ │ │ │ │ +1016 │ │ │ │ │ +1069 template │ │ │ │ │ +_1_0_7_1 bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ +1072 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1073 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1074 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +1075 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +1076 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +1077 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +1078 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +1079 int numPatchCoords, │ │ │ │ │ +1080 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1081 PATCH_TABLE *patchTable) const { │ │ │ │ │ +1082 │ │ │ │ │ +1083 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ +1084 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ +1085 duBuffer->BindVBO(), duDesc, │ │ │ │ │ +1086 dvBuffer->BindVBO(), dvDesc, │ │ │ │ │ +1087 duuBuffer->BindVBO(), duuDesc, │ │ │ │ │ +1088 duvBuffer->BindVBO(), duvDesc, │ │ │ │ │ +1089 dvvBuffer->BindVBO(), dvvDesc, │ │ │ │ │ +1090 numPatchCoords, │ │ │ │ │ +1091 patchCoords->BindVBO(), │ │ │ │ │ +1092 patchTable->GetPatchArrays(), │ │ │ │ │ +1093 patchTable->GetPatchIndexBuffer(), │ │ │ │ │ +1094 patchTable->GetPatchParamBuffer()); │ │ │ │ │ +1095 } │ │ │ │ │ +1096 │ │ │ │ │ +_1_0_9_7 bool _E_v_a_l_P_a_t_c_h_e_s(GLuint srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1098 GLuint dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1099 GLuint duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +1100 GLuint dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +1101 int numPatchCoords, │ │ │ │ │ +1102 GLuint patchCoordsBuffer, │ │ │ │ │ +1103 const _P_a_t_c_h_A_r_r_a_y_V_e_c_t_o_r &patchArrays, │ │ │ │ │ +1104 GLuint patchIndexBuffer, │ │ │ │ │ +1105 GLuint patchParamsBuffer) const; │ │ │ │ │ +1106 │ │ │ │ │ +_1_1_0_7 bool _E_v_a_l_P_a_t_c_h_e_s(GLuint srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1108 GLuint dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1109 GLuint duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +1110 GLuint dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +1111 GLuint duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +1112 GLuint duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +1113 GLuint dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +1114 int numPatchCoords, │ │ │ │ │ +1115 GLuint patchCoordsBuffer, │ │ │ │ │ +1116 const _P_a_t_c_h_A_r_r_a_y_V_e_c_t_o_r &patchArrays, │ │ │ │ │ +1117 GLuint patchIndexBuffer, │ │ │ │ │ +1118 GLuint patchParamsBuffer) const; │ │ │ │ │ +1119 │ │ │ │ │ +1152 template │ │ │ │ │ +_1_1_5_4 static bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +1155 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1156 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1157 int numPatchCoords, │ │ │ │ │ +1158 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1159 PATCH_TABLE *patchTable, │ │ │ │ │ +1160 _G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ +1161 void * deviceContext = NULL) { │ │ │ │ │ +1162 │ │ │ │ │ +1163 if (instance) { │ │ │ │ │ +1164 return instance->_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +1165 srcBuffer, srcDesc, │ │ │ │ │ +1166 dstBuffer, dstDesc, │ │ │ │ │ +1167 numPatchCoords, patchCoords, │ │ │ │ │ +1168 patchTable); │ │ │ │ │ +1169 } else { │ │ │ │ │ +1170 // Create an instance on demand (slow) │ │ │ │ │ +1171 (void)deviceContext; // unused │ │ │ │ │ +1172 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ +1173 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +1174 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r()); │ │ │ │ │ +1175 if (instance) { │ │ │ │ │ +1176 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +1177 srcBuffer, srcDesc, │ │ │ │ │ +1178 dstBuffer, dstDesc, │ │ │ │ │ +1179 numPatchCoords, patchCoords, │ │ │ │ │ +1180 patchTable); │ │ │ │ │ +1181 delete instance; │ │ │ │ │ +1182 return r; │ │ │ │ │ +1183 } │ │ │ │ │ +1184 return false; │ │ │ │ │ +1185 } │ │ │ │ │ +1186 } │ │ │ │ │ +1187 │ │ │ │ │ +1212 template │ │ │ │ │ +_1_2_1_4 bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +1215 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1216 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1217 int numPatchCoords, │ │ │ │ │ +1218 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1219 PATCH_TABLE *patchTable) const { │ │ │ │ │ +1220 │ │ │ │ │ +1221 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ +1222 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ +1223 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +1224 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +1225 numPatchCoords, │ │ │ │ │ +1226 patchCoords->BindVBO(), │ │ │ │ │ +1227 patchTable->GetVaryingPatchArrays(), │ │ │ │ │ +1228 patchTable->GetVaryingPatchIndexBuffer(), │ │ │ │ │ +1229 patchTable->GetPatchParamBuffer()); │ │ │ │ │ +1230 } │ │ │ │ │ +1231 │ │ │ │ │ +1276 template │ │ │ │ │ +_1_2_7_8 static bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +1279 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1280 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1281 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +1282 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +1283 int numPatchCoords, │ │ │ │ │ +1284 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1285 PATCH_TABLE *patchTable, │ │ │ │ │ +1286 _G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ +1287 void * deviceContext = NULL) { │ │ │ │ │ +1288 │ │ │ │ │ +1289 if (instance) { │ │ │ │ │ +1290 return instance->_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +1291 srcBuffer, srcDesc, │ │ │ │ │ +1292 dstBuffer, dstDesc, │ │ │ │ │ +1293 duBuffer, duDesc, │ │ │ │ │ +1294 dvBuffer, dvDesc, │ │ │ │ │ +1295 numPatchCoords, patchCoords, │ │ │ │ │ +1296 patchTable); │ │ │ │ │ +1297 } else { │ │ │ │ │ +1298 // Create an instance on demand (slow) │ │ │ │ │ +1299 (void)deviceContext; // unused │ │ │ │ │ +1300 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ +1301 duDesc, dvDesc); │ │ │ │ │ +1302 if (instance) { │ │ │ │ │ +1303 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +1304 srcBuffer, srcDesc, │ │ │ │ │ +1305 dstBuffer, dstDesc, │ │ │ │ │ +1306 duBuffer, duDesc, │ │ │ │ │ +1307 dvBuffer, dvDesc, │ │ │ │ │ +1308 numPatchCoords, patchCoords, │ │ │ │ │ +1309 patchTable); │ │ │ │ │ +1310 delete instance; │ │ │ │ │ +1311 return r; │ │ │ │ │ +1312 } │ │ │ │ │ +1313 return false; │ │ │ │ │ +1314 } │ │ │ │ │ +1315 } │ │ │ │ │ +1316 │ │ │ │ │ +1353 template │ │ │ │ │ +_1_3_5_5 bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +1356 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1357 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1358 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +1359 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +1360 int numPatchCoords, │ │ │ │ │ +1361 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1362 PATCH_TABLE *patchTable) const { │ │ │ │ │ +1363 │ │ │ │ │ +1364 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ +1365 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ +1366 duBuffer->BindVBO(), duDesc, │ │ │ │ │ +1367 dvBuffer->BindVBO(), dvDesc, │ │ │ │ │ +1368 numPatchCoords, │ │ │ │ │ +1369 patchCoords->BindVBO(), │ │ │ │ │ +1370 patchTable->GetVaryingPatchArrays(), │ │ │ │ │ +1371 patchTable->GetVaryingPatchIndexBuffer(), │ │ │ │ │ +1372 patchTable->GetPatchParamBuffer()); │ │ │ │ │ +1373 } │ │ │ │ │ +1374 │ │ │ │ │ +1437 template │ │ │ │ │ +_1_4_3_9 static bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +1440 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1441 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1442 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +1443 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +1444 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +1445 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +1446 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +1447 int numPatchCoords, │ │ │ │ │ +1448 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1449 PATCH_TABLE *patchTable, │ │ │ │ │ +1450 _G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ +1451 void * deviceContext = NULL) { │ │ │ │ │ +1452 │ │ │ │ │ +1453 if (instance) { │ │ │ │ │ +1454 return instance->_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +1455 srcBuffer, srcDesc, │ │ │ │ │ +1456 dstBuffer, dstDesc, │ │ │ │ │ +1457 duBuffer, duDesc, │ │ │ │ │ +1458 dvBuffer, dvDesc, │ │ │ │ │ +1459 duuBuffer, duuDesc, │ │ │ │ │ +1460 duvBuffer, duvDesc, │ │ │ │ │ +1461 dvvBuffer, dvvDesc, │ │ │ │ │ +1462 numPatchCoords, patchCoords, │ │ │ │ │ +1463 patchTable); │ │ │ │ │ +1464 } else { │ │ │ │ │ +1465 // Create an instance on demand (slow) │ │ │ │ │ +1466 (void)deviceContext; // unused │ │ │ │ │ +1467 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ +1468 duDesc, dvDesc, │ │ │ │ │ +1469 duuDesc, duvDesc, dvvDesc); │ │ │ │ │ +1470 if (instance) { │ │ │ │ │ +1471 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +1472 srcBuffer, srcDesc, │ │ │ │ │ +1473 dstBuffer, dstDesc, │ │ │ │ │ +1474 duBuffer, duDesc, │ │ │ │ │ +1475 dvBuffer, dvDesc, │ │ │ │ │ +1476 duuBuffer, duuDesc, │ │ │ │ │ +1477 duvBuffer, duvDesc, │ │ │ │ │ +1478 dvvBuffer, dvvDesc, │ │ │ │ │ +1479 numPatchCoords, patchCoords, │ │ │ │ │ +1480 patchTable); │ │ │ │ │ +1481 delete instance; │ │ │ │ │ +1482 return r; │ │ │ │ │ +1483 } │ │ │ │ │ +1484 return false; │ │ │ │ │ +1485 } │ │ │ │ │ +1486 } │ │ │ │ │ +1487 │ │ │ │ │ +1542 template │ │ │ │ │ +_1_5_4_4 bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +1545 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1546 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1547 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +1548 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +1549 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +1550 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +1551 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +1552 int numPatchCoords, │ │ │ │ │ +1553 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1554 PATCH_TABLE *patchTable) const { │ │ │ │ │ +1555 │ │ │ │ │ +1556 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ +1557 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ +1558 duBuffer->BindVBO(), duDesc, │ │ │ │ │ +1559 dvBuffer->BindVBO(), dvDesc, │ │ │ │ │ +1560 duuBuffer->BindVBO(), duuDesc, │ │ │ │ │ +1561 duvBuffer->BindVBO(), duvDesc, │ │ │ │ │ +1562 dvvBuffer->BindVBO(), dvvDesc, │ │ │ │ │ +1563 numPatchCoords, │ │ │ │ │ +1564 patchCoords->BindVBO(), │ │ │ │ │ +1565 patchTable->GetVaryingPatchArrays(), │ │ │ │ │ +1566 patchTable->GetVaryingPatchIndexBuffer(), │ │ │ │ │ +1567 patchTable->GetPatchParamBuffer()); │ │ │ │ │ +1568 } │ │ │ │ │ +1569 │ │ │ │ │ +1604 template │ │ │ │ │ +_1_6_0_6 static bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +1607 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1608 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1609 int numPatchCoords, │ │ │ │ │ +1610 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1611 PATCH_TABLE *patchTable, │ │ │ │ │ +1612 int fvarChannel, │ │ │ │ │ +1613 _G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ +1614 void * deviceContext = NULL) { │ │ │ │ │ +1615 │ │ │ │ │ +1616 if (instance) { │ │ │ │ │ +1617 return instance->_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +1618 srcBuffer, srcDesc, │ │ │ │ │ +1619 dstBuffer, dstDesc, │ │ │ │ │ +1620 numPatchCoords, patchCoords, │ │ │ │ │ +1621 patchTable, fvarChannel); │ │ │ │ │ +1622 } else { │ │ │ │ │ +1623 // Create an instance on demand (slow) │ │ │ │ │ +1624 (void)deviceContext; // unused │ │ │ │ │ +1625 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ +1626 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +1627 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r()); │ │ │ │ │ +1628 if (instance) { │ │ │ │ │ +1629 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +1630 srcBuffer, srcDesc, │ │ │ │ │ +1631 dstBuffer, dstDesc, │ │ │ │ │ +1632 numPatchCoords, patchCoords, │ │ │ │ │ +1633 patchTable, fvarChannel); │ │ │ │ │ +1634 delete instance; │ │ │ │ │ +1635 return r; │ │ │ │ │ +1636 } │ │ │ │ │ +1637 return false; │ │ │ │ │ +1638 } │ │ │ │ │ +1639 } │ │ │ │ │ +1640 │ │ │ │ │ +1667 template │ │ │ │ │ +_1_6_6_9 bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +1670 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1671 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1672 int numPatchCoords, │ │ │ │ │ +1673 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1674 PATCH_TABLE *patchTable, │ │ │ │ │ +1675 int fvarChannel = 0) const { │ │ │ │ │ +1676 │ │ │ │ │ +1677 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ +1678 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ +1679 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +1680 0, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +1681 numPatchCoords, │ │ │ │ │ +1682 patchCoords->BindVBO(), │ │ │ │ │ +1683 patchTable->GetFVarPatchArrays(fvarChannel), │ │ │ │ │ +1684 patchTable->GetFVarPatchIndexBuffer(fvarChannel), │ │ │ │ │ +1685 patchTable->GetFVarPatchParamBuffer(fvarChannel)); │ │ │ │ │ +1686 } │ │ │ │ │ +1687 │ │ │ │ │ +1734 template │ │ │ │ │ +_1_7_3_6 static bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +1737 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1738 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1739 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +1740 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +1741 int numPatchCoords, │ │ │ │ │ +1742 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1743 PATCH_TABLE *patchTable, │ │ │ │ │ +1744 int fvarChannel, │ │ │ │ │ +1745 _G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ +1746 void * deviceContext = NULL) { │ │ │ │ │ +1747 │ │ │ │ │ +1748 if (instance) { │ │ │ │ │ +1749 return instance->_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +1750 srcBuffer, srcDesc, │ │ │ │ │ +1751 dstBuffer, dstDesc, │ │ │ │ │ +1752 duBuffer, duDesc, │ │ │ │ │ +1753 dvBuffer, dvDesc, │ │ │ │ │ +1754 numPatchCoords, patchCoords, │ │ │ │ │ +1755 patchTable, fvarChannel); │ │ │ │ │ +1756 } else { │ │ │ │ │ +1757 // Create an instance on demand (slow) │ │ │ │ │ +1758 (void)deviceContext; // unused │ │ │ │ │ +1759 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ +1760 duDesc, dvDesc); │ │ │ │ │ +1761 if (instance) { │ │ │ │ │ +1762 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +1763 srcBuffer, srcDesc, │ │ │ │ │ +1764 dstBuffer, dstDesc, │ │ │ │ │ +1765 duBuffer, duDesc, │ │ │ │ │ +1766 dvBuffer, dvDesc, │ │ │ │ │ +1767 numPatchCoords, patchCoords, │ │ │ │ │ +1768 patchTable, fvarChannel); │ │ │ │ │ +1769 delete instance; │ │ │ │ │ +1770 return r; │ │ │ │ │ +1771 } │ │ │ │ │ +1772 return false; │ │ │ │ │ +1773 } │ │ │ │ │ +1774 } │ │ │ │ │ +1775 │ │ │ │ │ +1814 template │ │ │ │ │ +_1_8_1_6 bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +1817 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1818 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1819 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +1820 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +1821 int numPatchCoords, │ │ │ │ │ +1822 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1823 PATCH_TABLE *patchTable, │ │ │ │ │ +1824 int fvarChannel = 0) const { │ │ │ │ │ +1825 │ │ │ │ │ +1826 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ +1827 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ +1828 duBuffer->BindVBO(), duDesc, │ │ │ │ │ +1829 dvBuffer->BindVBO(), dvDesc, │ │ │ │ │ +1830 numPatchCoords, │ │ │ │ │ +1831 patchCoords->BindVBO(), │ │ │ │ │ +1832 patchTable->GetFVarPatchArrays(fvarChannel), │ │ │ │ │ +1833 patchTable->GetFVarPatchIndexBuffer(fvarChannel), │ │ │ │ │ +1834 patchTable->GetFVarPatchParamBuffer(fvarChannel)); │ │ │ │ │ +1835 } │ │ │ │ │ +1836 │ │ │ │ │ +1901 template │ │ │ │ │ +_1_9_0_3 static bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +1904 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1905 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1906 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +1907 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +1908 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +1909 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +1910 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +1911 int numPatchCoords, │ │ │ │ │ +1912 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1913 PATCH_TABLE *patchTable, │ │ │ │ │ +1914 int fvarChannel, │ │ │ │ │ +1915 _G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r const *instance, │ │ │ │ │ +1916 void * deviceContext = NULL) { │ │ │ │ │ +1917 │ │ │ │ │ +1918 if (instance) { │ │ │ │ │ +1919 return instance->_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +1920 srcBuffer, srcDesc, │ │ │ │ │ +1921 dstBuffer, dstDesc, │ │ │ │ │ +1922 duBuffer, duDesc, │ │ │ │ │ +1923 dvBuffer, dvDesc, │ │ │ │ │ +1924 duuBuffer, duuDesc, │ │ │ │ │ +1925 duvBuffer, duvDesc, │ │ │ │ │ +1926 dvvBuffer, dvvDesc, │ │ │ │ │ +1927 numPatchCoords, patchCoords, │ │ │ │ │ +1928 patchTable, fvarChannel); │ │ │ │ │ +1929 } else { │ │ │ │ │ +1930 // Create an instance on demand (slow) │ │ │ │ │ +1931 (void)deviceContext; // unused │ │ │ │ │ +1932 instance = _C_r_e_a_t_e(srcDesc, dstDesc, │ │ │ │ │ +1933 duDesc, dvDesc, │ │ │ │ │ +1934 duuDesc, duvDesc, dvvDesc); │ │ │ │ │ +1935 if (instance) { │ │ │ │ │ +1936 bool r = instance->_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +1937 srcBuffer, srcDesc, │ │ │ │ │ +1938 dstBuffer, dstDesc, │ │ │ │ │ +1939 duBuffer, duDesc, │ │ │ │ │ +1940 dvBuffer, dvDesc, │ │ │ │ │ +1941 duuBuffer, duuDesc, │ │ │ │ │ +1942 duvBuffer, duvDesc, │ │ │ │ │ +1943 dvvBuffer, dvvDesc, │ │ │ │ │ +1944 numPatchCoords, patchCoords, │ │ │ │ │ +1945 patchTable, fvarChannel); │ │ │ │ │ +1946 delete instance; │ │ │ │ │ +1947 return r; │ │ │ │ │ +1948 } │ │ │ │ │ +1949 return false; │ │ │ │ │ +1950 } │ │ │ │ │ +1951 } │ │ │ │ │ +1952 │ │ │ │ │ +2009 template │ │ │ │ │ +_2_0_1_1 bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +2012 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +2013 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +2014 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +2015 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +2016 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +2017 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +2018 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +2019 int numPatchCoords, │ │ │ │ │ +2020 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +2021 PATCH_TABLE *patchTable, │ │ │ │ │ +2022 int fvarChannel = 0) const { │ │ │ │ │ +2023 │ │ │ │ │ +2024 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindVBO(), srcDesc, │ │ │ │ │ +2025 dstBuffer->BindVBO(), dstDesc, │ │ │ │ │ +2026 duBuffer->BindVBO(), duDesc, │ │ │ │ │ +2027 dvBuffer->BindVBO(), dvDesc, │ │ │ │ │ +2028 duuBuffer->BindVBO(), duuDesc, │ │ │ │ │ +2029 duvBuffer->BindVBO(), duvDesc, │ │ │ │ │ +2030 dvvBuffer->BindVBO(), dvvDesc, │ │ │ │ │ +2031 numPatchCoords, │ │ │ │ │ +2032 patchCoords->BindVBO(), │ │ │ │ │ +2033 patchTable->GetFVarPatchArrays(fvarChannel), │ │ │ │ │ +2034 patchTable->GetFVarPatchIndexBuffer(fvarChannel), │ │ │ │ │ +2035 patchTable->GetFVarPatchParamBuffer(fvarChannel)); │ │ │ │ │ +2036 } │ │ │ │ │ +2037 │ │ │ │ │ +2043 │ │ │ │ │ +_2_0_4_6 bool _C_o_m_p_i_l_e(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +2047 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +2048 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc = _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +2049 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc = _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +2050 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc = _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +2051 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc = _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r(), │ │ │ │ │ +2052 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc = _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r()); │ │ │ │ │ +2053 │ │ │ │ │ +_2_0_5_5 static void _S_y_n_c_h_r_o_n_i_z_e(void *deviceContext); │ │ │ │ │ +2056 │ │ │ │ │ +2057private: │ │ │ │ │ +2058 struct _StencilKernel { │ │ │ │ │ +2059 _StencilKernel(); │ │ │ │ │ +2060 ~_StencilKernel(); │ │ │ │ │ +2061 bool Compile(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +2062 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +2063 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +2064 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +2065 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +2066 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +2067 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +2068 int workGroupSize); │ │ │ │ │ +2069 GLuint program; │ │ │ │ │ +2070 GLuint uniformStart; │ │ │ │ │ +2071 GLuint uniformEnd; │ │ │ │ │ +2072 GLuint uniformSrcOffset; │ │ │ │ │ +2073 GLuint uniformDstOffset; │ │ │ │ │ +2074 GLuint uniformDuDesc; │ │ │ │ │ +2075 GLuint uniformDvDesc; │ │ │ │ │ +2076 GLuint uniformDuuDesc; │ │ │ │ │ +2077 GLuint uniformDuvDesc; │ │ │ │ │ +2078 GLuint uniformDvvDesc; │ │ │ │ │ +2079 } _stencilKernel; │ │ │ │ │ +2080 │ │ │ │ │ +2081 struct _PatchKernel { │ │ │ │ │ +2082 _PatchKernel(); │ │ │ │ │ +2083 ~_PatchKernel(); │ │ │ │ │ +2084 bool Compile(_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +2085 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +2086 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +2087 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +2088 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +2089 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +2090 _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +2091 int workGroupSize); │ │ │ │ │ +2092 GLuint program; │ │ │ │ │ +2093 GLuint uniformSrcOffset; │ │ │ │ │ +2094 GLuint uniformDstOffset; │ │ │ │ │ +2095 GLuint uniformPatchArray; │ │ │ │ │ +2096 GLuint uniformDuDesc; │ │ │ │ │ +2097 GLuint uniformDvDesc; │ │ │ │ │ +2098 GLuint uniformDuuDesc; │ │ │ │ │ +2099 GLuint uniformDuvDesc; │ │ │ │ │ +2100 GLuint uniformDvvDesc; │ │ │ │ │ +2101 } _patchKernel; │ │ │ │ │ +2102 │ │ │ │ │ +2103 int _workGroupSize; │ │ │ │ │ +2104 GLuint _patchArraysSSBO; │ │ │ │ │ +2105}; │ │ │ │ │ +2106 │ │ │ │ │ +2107} // end namespace Osd │ │ │ │ │ +2108 │ │ │ │ │ +2109} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ +2110using namespace OPENSUBDIV_VERSION; │ │ │ │ │ +2111 │ │ │ │ │ +2112} // end namespace OpenSubdiv │ │ │ │ │ +2113 │ │ │ │ │ +2114 │ │ │ │ │ +2115#endif // OPENSUBDIV3_OSD_GL_COMPUTE_EVALUATOR_H │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v │ │ │ │ │ DDeeffiinniittiioonn _l_i_m_i_t_s_._h_:_3_2 │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_P_a_t_c_h_A_r_r_a_y_V_e_c_t_o_r │ │ │ │ │ std::vector< PatchArray > PatchArrayVector │ │ │ │ │ DDeeffiinniittiioonn _t_y_p_e_s_._h_:_1_3_2 │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ Stencil table class wrapping the template for compatibility. │ │ │ │ │ @@ -1100,372 +1038,345 @@ │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_L_i_m_i_t_S_t_e_n_c_i_l_T_a_b_l_e │ │ │ │ │ Limit stencil table class wrapping the template for compatibility. │ │ │ │ │ DDeeffiinniittiioonn _s_t_e_n_c_i_l_T_a_b_l_e_._h_:_5_8_3 │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ BufferDescriptor is a struct which describes buffer elements in interleaved │ │ │ │ │ data buffers.... │ │ │ │ │ DDeeffiinniittiioonn _b_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r_._h_:_6_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O │ │ │ │ │ -GL TextureBuffer stencil table. │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_5_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O_:_:_G_e_t_S_i_z_e_s_T_e_x_t_u_r_e │ │ │ │ │ -GLuint GetSizesTexture() const │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_7_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O_:_:_C_r_e_a_t_e │ │ │ │ │ -static GLStencilTableTBO * Create(Far::StencilTable const *stencilTable, void │ │ │ │ │ -*deviceContext=NULL) │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_5_4 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O_:_:_G_e_t_D_v_v_W_e_i_g_h_t_s_T_e_x_t_u_r_e │ │ │ │ │ -GLuint GetDvvWeightsTexture() const │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_8_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O_:_:_G_e_t_N_u_m_S_t_e_n_c_i_l_s │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O │ │ │ │ │ +GL stencil table (Shader Storage buffer) │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_5_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O_:_:_G_e_t_D_u_v_W_e_i_g_h_t_s_B_u_f_f_e_r │ │ │ │ │ +GLuint GetDuvWeightsBuffer() const │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_7_7 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O_:_:_G_e_t_W_e_i_g_h_t_s_B_u_f_f_e_r │ │ │ │ │ +GLuint GetWeightsBuffer() const │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_7_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O │ │ │ │ │ +GLStencilTableSSBO(Far::LimitStencilTable const *limitStencilTable) │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O_:_:_G_e_t_D_u_W_e_i_g_h_t_s_B_u_f_f_e_r │ │ │ │ │ +GLuint GetDuWeightsBuffer() const │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_7_4 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O_:_:_~_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O │ │ │ │ │ +~GLStencilTableSSBO() │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O_:_:_G_e_t_N_u_m_S_t_e_n_c_i_l_s │ │ │ │ │ int GetNumStencils() const │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_8_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O_:_:_G_e_t_D_u_v_W_e_i_g_h_t_s_T_e_x_t_u_r_e │ │ │ │ │ -GLuint GetDuvWeightsTexture() const │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_7_9 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O_:_:_G_e_t_D_u_u_W_e_i_g_h_t_s_T_e_x_t_u_r_e │ │ │ │ │ -GLuint GetDuuWeightsTexture() const │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_7_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O_:_:_G_e_t_I_n_d_i_c_e_s_T_e_x_t_u_r_e │ │ │ │ │ -GLuint GetIndicesTexture() const │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_7_4 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O_:_:_~_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O │ │ │ │ │ -~GLStencilTableTBO() │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O │ │ │ │ │ -GLStencilTableTBO(Far::StencilTable const *stencilTable) │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O │ │ │ │ │ -GLStencilTableTBO(Far::LimitStencilTable const *limitStencilTable) │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O_:_:_G_e_t_W_e_i_g_h_t_s_T_e_x_t_u_r_e │ │ │ │ │ -GLuint GetWeightsTexture() const │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_7_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O_:_:_C_r_e_a_t_e │ │ │ │ │ -static GLStencilTableTBO * Create(Far::LimitStencilTable const │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_7_9 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O_:_:_G_e_t_I_n_d_i_c_e_s_B_u_f_f_e_r │ │ │ │ │ +GLuint GetIndicesBuffer() const │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_7_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O_:_:_G_e_t_O_f_f_s_e_t_s_B_u_f_f_e_r │ │ │ │ │ +GLuint GetOffsetsBuffer() const │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_7_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O │ │ │ │ │ +GLStencilTableSSBO(Far::StencilTable const *stencilTable) │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O_:_:_G_e_t_D_v_v_W_e_i_g_h_t_s_B_u_f_f_e_r │ │ │ │ │ +GLuint GetDvvWeightsBuffer() const │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_7_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O_:_:_G_e_t_S_i_z_e_s_B_u_f_f_e_r │ │ │ │ │ +GLuint GetSizesBuffer() const │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_7_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O_:_:_C_r_e_a_t_e │ │ │ │ │ +static GLStencilTableSSBO * Create(Far::LimitStencilTable const │ │ │ │ │ *limitStencilTable, void *deviceContext=NULL) │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_6_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O_:_:_G_e_t_D_v_W_e_i_g_h_t_s_T_e_x_t_u_r_e │ │ │ │ │ -GLuint GetDvWeightsTexture() const │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_7_7 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O_:_:_G_e_t_D_u_W_e_i_g_h_t_s_T_e_x_t_u_r_e │ │ │ │ │ -GLuint GetDuWeightsTexture() const │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_7_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_T_B_O_:_:_G_e_t_O_f_f_s_e_t_s_T_e_x_t_u_r_e │ │ │ │ │ -GLuint GetOffsetsTexture() const │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_7_3 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_9_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_5_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O_:_:_G_e_t_D_u_u_W_e_i_g_h_t_s_B_u_f_f_e_r │ │ │ │ │ +GLuint GetDuuWeightsBuffer() const │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_7_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O_:_:_G_e_t_D_v_W_e_i_g_h_t_s_B_u_f_f_e_r │ │ │ │ │ +GLuint GetDvWeightsBuffer() const │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_7_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_S_t_e_n_c_i_l_T_a_b_l_e_S_S_B_O_:_:_C_r_e_a_t_e │ │ │ │ │ +static GLStencilTableSSBO * Create(Far::StencilTable const *stencilTable, void │ │ │ │ │ +*deviceContext=NULL) │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_5_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_9_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, │ │ │ │ │ DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords, │ │ │ │ │ PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const │ │ │ │ │ Generic limit eval function. This function has a same signature as other device │ │ │ │ │ kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_2_8_7 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_C_r_e_a_t_e │ │ │ │ │ -static GLXFBEvaluator * Create(BufferDescriptor const &srcDesc, │ │ │ │ │ -BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, │ │ │ │ │ -BufferDescriptor const &dvDesc, bool interleavedDerivativeBuffers=false) │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_2_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_1_2_1_4 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_1_7_3_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ 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 │ │ │ │ │ Generic stencil function. │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_5_0_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r │ │ │ │ │ -GLXFBEvaluator(bool interleavedDerivativeBuffers=false) │ │ │ │ │ -Constructor. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_4_3_4 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_1_1_5_4 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_1_6_0_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ 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 │ │ │ │ │ Generic stencil function. │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_5_7_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_I_n_s_t_a_n_t_i_a_t_a_b_l_e │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_5_0_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_1_2_7_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_I_n_s_t_a_n_t_i_a_t_a_b_l_e │ │ │ │ │ bool Instantiatable │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_0_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_9_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ 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 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ -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) │ │ │ │ │ -Generic static stencil function. This function has a same signature as other │ │ │ │ │ -device kernels have so t... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_3_9_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_~_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r │ │ │ │ │ +~GLComputeEvaluator() │ │ │ │ │ +Destructor. note that the GL context must be made current. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ 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 │ │ │ │ │ Generic limit eval function with derivatives. This function has a same │ │ │ │ │ signature as other device kern... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_1_4_4 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_C_r_e_a_t_e │ │ │ │ │ -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) │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_7_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_C_r_e_a_t_e │ │ │ │ │ -static GLXFBEvaluator * Create(BufferDescriptor const &srcDesc, │ │ │ │ │ -BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, │ │ │ │ │ -BufferDescriptor const &dvDesc, void *deviceContext) │ │ │ │ │ -Specialization to allow creation without a device context. │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_1_7 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_1_0_7_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ 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) │ │ │ │ │ +GLComputeEvaluator const *instance, void *deviceContext=NULL) │ │ │ │ │ Generic static stencil function. This function has a same signature as other │ │ │ │ │ device kernels have so t... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_3_0_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_3_5_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_2_3_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ 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 │ │ │ │ │ -Dispatch the GLSL XFB kernel on on GPU asynchronously returns false if the │ │ │ │ │ -kernel hasn't been compile... │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ +Dispatch the GLSL compute kernel on GPU asynchronously returns false if the │ │ │ │ │ +kernel hasn't been compil... │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +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) │ │ │ │ │ +Generic static stencil function. This function has a same signature as other │ │ │ │ │ +device kernels have so t... │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_1_6_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_1_4_3_9 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ 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) │ │ │ │ │ +*patchTable, GLComputeEvaluator const *instance, void *deviceContext=NULL) │ │ │ │ │ Generic limit eval function. This function has a same signature as other device │ │ │ │ │ kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_8_4_3 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_C_r_e_a_t_e │ │ │ │ │ -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) │ │ │ │ │ -Generic creator template. │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_4_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_C_r_e_a_t_e │ │ │ │ │ -static GLXFBEvaluator * Create(BufferDescriptor const &srcDesc, │ │ │ │ │ -BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, │ │ │ │ │ -BufferDescriptor const &dvDesc, DEVICE_CONTEXT deviceContext) │ │ │ │ │ -Generic creator template. │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_0_4 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_S_y_n_c_h_r_o_n_i_z_e │ │ │ │ │ -static void Synchronize(void *kernel) │ │ │ │ │ -Wait the dispatched kernel finishes. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ -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) │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_7_6_9 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ +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) │ │ │ │ │ Generic limit eval function. This function has a same signature as other device │ │ │ │ │ kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_2_2_7 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_1_9_0_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ 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 │ │ │ │ │ Generic limit eval function. This function has a same signature as other device │ │ │ │ │ kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_6_1_7 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_1_5_4_4 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ 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 │ │ │ │ │ Generic limit eval function. This function has a same signature as other device │ │ │ │ │ kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_8_8_9 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_7_6_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_8_0_9 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_1_8_1_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, │ │ │ │ │ DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords, │ │ │ │ │ PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const │ │ │ │ │ Generic limit eval function. This function has a same signature as other device │ │ │ │ │ kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_0_1_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_9_4_3 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_9_4_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r │ │ │ │ │ +GLComputeEvaluator() │ │ │ │ │ +Constructor. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ 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 │ │ │ │ │ Generic limit eval function with derivatives. This function has a same │ │ │ │ │ signature as other device kern... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_0_7_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_9_9_7 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_6_9_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, │ │ │ │ │ DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE const │ │ │ │ │ *stencilTable) const │ │ │ │ │ Generic stencil function. │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_4_5_7 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_3_8_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ 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 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_C_r_e_a_t_e │ │ │ │ │ -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) │ │ │ │ │ -Specialization to allow creation without a device context. │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_5_7 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ 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 │ │ │ │ │ Generic limit eval function. This function has a same signature as other device │ │ │ │ │ kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_2_0_8_4 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_5_1_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_2_0_1_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_C_r_e_a_t_e │ │ │ │ │ +static GLComputeEvaluator * Create(BufferDescriptor const &srcDesc, │ │ │ │ │ +BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, │ │ │ │ │ +BufferDescriptor const &dvDesc, void *deviceContext=NULL) │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_9_9 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ 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 │ │ │ │ │ -Dispatch the GLSL XFB kernel on on GPU asynchronously returns false if the │ │ │ │ │ -kernel hasn't been compile... │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_6_7_9 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +Dispatch the GLSL compute kernel on GPU asynchronously returns false if the │ │ │ │ │ +kernel hasn't been compil... │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ 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) │ │ │ │ │ +&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) │ │ │ │ │ Generic static stencil function. This function has a same signature as other │ │ │ │ │ device kernels have so t... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_2_3_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_~_G_L_X_F_B_E_v_a_l_u_a_t_o_r │ │ │ │ │ -~GLXFBEvaluator() │ │ │ │ │ -Destructor. note that the GL context must be made current. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_C_o_m_p_i_l_e │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_3_2_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_S_y_n_c_h_r_o_n_i_z_e │ │ │ │ │ +static void Synchronize(void *deviceContext) │ │ │ │ │ +Wait the dispatched kernel finishes. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_C_o_m_p_i_l_e │ │ │ │ │ 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()) │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ 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 │ │ │ │ │ Generic limit eval function. This function has a same signature as other device │ │ │ │ │ kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_4_2_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_1_3_5_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_C_r_e_a_t_e │ │ │ │ │ +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) │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_1_1_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ 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 │ │ │ │ │ Generic limit eval function. This function has a same signature as other device │ │ │ │ │ kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_7_4_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_X_F_B_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ -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) │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_1_6_6_9 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ +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) │ │ │ │ │ Generic limit eval function. This function has a same signature as other device │ │ │ │ │ kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h_:_1_9_7_6 │ │ │ │ │ +DDeeffiinniittiioonn _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h_:_8_7_0 │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _o_s_d │ │ │ │ │ - * _g_l_X_F_B_E_v_a_l_u_a_t_o_r_._h │ │ │ │ │ + * _g_l_C_o_m_p_u_t_e_E_v_a_l_u_a_t_o_r_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00857.html │ │ │ │ @@ -95,15 +95,15 @@ │ │ │ │ Namespaces | │ │ │ │ Typedefs │ │ │ │
glMesh.h File Reference
│ │ │ │ │ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ #include "../osd/mesh.h"
│ │ │ │ -#include "../osd/glPatchTable.h"
│ │ │ │ +#include "../osd/glPatchTable.h"
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00863.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/osd/glPatchTable.h File Reference │ │ │ │ +OpenSubdiv: opensubdiv/osd/glLegacyGregoryPatchTable.h File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -90,45 +90,42 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
glPatchTable.h File Reference
│ │ │ │ +
glLegacyGregoryPatchTable.h File Reference
│ │ │ │
│ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ +#include "../far/patchTable.h"
│ │ │ │ #include "../osd/nonCopyable.h"
│ │ │ │ #include "../osd/opengl.h"
│ │ │ │ -#include "../osd/types.h"
│ │ │ │ -#include <vector>
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │

│ │ │ │ Namespaces

namespace  OpenSubdiv
 
│ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  GLPatchTable
class  GLLegacyGregoryPatchTable
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  OpenSubdiv
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION::Far
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION::Osd
 
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,28 +1,25 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -glPatchTable.h File Reference │ │ │ │ │ +glLegacyGregoryPatchTable.h File Reference │ │ │ │ │ #include "../version.h" │ │ │ │ │ +#include "_._._/_f_a_r_/_p_a_t_c_h_T_a_b_l_e_._h" │ │ │ │ │ #include "../osd/nonCopyable.h" │ │ │ │ │ #include "_._._/_o_s_d_/_o_p_e_n_g_l_._h" │ │ │ │ │ -#include "_._._/_o_s_d_/_t_y_p_e_s_._h" │ │ │ │ │ -#include │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -class   _G_L_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ +class   _G_L_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N │ │ │ │ │   │ │ │ │ │ -namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r │ │ │ │ │ -  │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d │ │ │ │ │   │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _o_s_d │ │ │ │ │ - * _g_l_P_a_t_c_h_T_a_b_l_e_._h │ │ │ │ │ + * _g_l_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00863.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -1,3 +1,3 @@ │ │ │ │ │ var a00863 = [ │ │ │ │ │ - ["GLPatchTable", "a01237.html", "a01237"] │ │ │ │ │ + ["GLLegacyGregoryPatchTable", "a01233.html", "a01233"] │ │ │ │ │ ]; │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00863_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/osd/glPatchTable.h Source File │ │ │ │ +OpenSubdiv: opensubdiv/osd/glLegacyGregoryPatchTable.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -92,15 +92,15 @@ │ │ │ │
No Matches
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
glPatchTable.h
│ │ │ │ +
glLegacyGregoryPatchTable.h
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1//
│ │ │ │
2// Copyright 2015 Pixar
│ │ │ │
3//
│ │ │ │
4// Licensed under the Apache License, Version 2.0 (the "Apache License")
│ │ │ │
5// with the following modification; you may not use this file except in
│ │ │ │ @@ -119,200 +119,103 @@ │ │ │ │
18// Unless required by applicable law or agreed to in writing, software
│ │ │ │
19// distributed under the Apache License with the above modification is
│ │ │ │
20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
│ │ │ │
21// KIND, either express or implied. See the Apache License for the specific
│ │ │ │
22// language governing permissions and limitations under the Apache License.
│ │ │ │
23//
│ │ │ │
24
│ │ │ │ -
25#ifndef OPENSUBDIV3_OSD_GL_PATCH_TABLE_H
│ │ │ │ -
26#define OPENSUBDIV3_OSD_GL_PATCH_TABLE_H
│ │ │ │ +
25#ifndef OPENSUBDIV3_OSD_GL_LEGACY_GREGORY_PATCH_TABLE_H
│ │ │ │ +
26#define OPENSUBDIV3_OSD_GL_LEGACY_GREGORY_PATCH_TABLE_H
│ │ │ │
27
│ │ │ │
28#include "../version.h"
│ │ │ │
29
│ │ │ │ -
30#include "../osd/nonCopyable.h"
│ │ │ │ -
31#include "../osd/opengl.h"
│ │ │ │ -
32#include "../osd/types.h"
│ │ │ │ +
30#include "../far/patchTable.h"
│ │ │ │ +
31#include "../osd/nonCopyable.h"
│ │ │ │ +
32#include "../osd/opengl.h"
│ │ │ │
33
│ │ │ │ -
34#include <vector>
│ │ │ │ -
35
│ │ │ │ -
36namespace OpenSubdiv {
│ │ │ │ -
37namespace OPENSUBDIV_VERSION {
│ │ │ │ +
34namespace OpenSubdiv {
│ │ │ │ +
35namespace OPENSUBDIV_VERSION {
│ │ │ │ +
36
│ │ │ │ +
37namespace Osd {
│ │ │ │
38
│ │ │ │ -
39namespace Far{
│ │ │ │ -
40 class PatchTable;
│ │ │ │ -
41};
│ │ │ │ -
42
│ │ │ │ -
43namespace Osd {
│ │ │ │ -
44
│ │ │ │ -
│ │ │ │ -
45class GLPatchTable : private NonCopyable<GLPatchTable> {
│ │ │ │ -
46public:
│ │ │ │ -
47 typedef GLuint VertexBufferBinding;
│ │ │ │ -
48
│ │ │ │ - │ │ │ │ -
50
│ │ │ │ -
51 static GLPatchTable *Create(Far::PatchTable const *farPatchTable,
│ │ │ │ -
52 void *deviceContext = NULL);
│ │ │ │ -
53
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
56 return _patchArrays;
│ │ │ │ -
57 }
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
40 : private NonCopyable<GLLegacyGregoryPatchTable> {
│ │ │ │ +
41public:
│ │ │ │ + │ │ │ │ +
43
│ │ │ │ + │ │ │ │ +
45
│ │ │ │ +
46 void UpdateVertexBuffer(GLuint vbo);
│ │ │ │ +
47
│ │ │ │ +
│ │ │ │ +
48 GLuint GetVertexTextureBuffer() const {
│ │ │ │ +
49 return _vertexTextureBuffer;
│ │ │ │ +
50 }
│ │ │ │ +
│ │ │ │ +
51
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
53 return _vertexValenceTextureBuffer;
│ │ │ │ +
54 }
│ │ │ │ +
│ │ │ │ +
55
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
57 return _quadOffsetsTextureBuffer;
│ │ │ │ +
58 }
│ │ │ │
│ │ │ │ -
58
│ │ │ │ +
59
│ │ │ │
│ │ │ │ -
60 GLuint GetPatchIndexBuffer() const {
│ │ │ │ -
61 return _patchIndexBuffer;
│ │ │ │ -
62 }
│ │ │ │ -
│ │ │ │ -
63
│ │ │ │ -
│ │ │ │ -
65 GLuint GetPatchParamBuffer() const {
│ │ │ │ -
66 return _patchParamBuffer;
│ │ │ │ -
67 }
│ │ │ │ -
│ │ │ │ -
68
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
71 return _patchIndexTexture;
│ │ │ │ -
72 }
│ │ │ │ -
│ │ │ │ -
73
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
76 return _patchParamTexture;
│ │ │ │ -
77 }
│ │ │ │ + │ │ │ │ + │ │ │ │ +
62 return _quadOffsetsBase[1];
│ │ │ │ +
63 }
│ │ │ │ +
64 return _quadOffsetsBase[0];
│ │ │ │ +
65 }
│ │ │ │ +
│ │ │ │ +
66
│ │ │ │ +
67protected:
│ │ │ │ + │ │ │ │ +
69
│ │ │ │ +
70private:
│ │ │ │ +
71 GLuint _vertexTextureBuffer;
│ │ │ │ +
72 GLuint _vertexValenceTextureBuffer;
│ │ │ │ +
73 GLuint _quadOffsetsTextureBuffer;
│ │ │ │ +
74 GLuint _quadOffsetsBase[2]; // gregory, boundaryGregory
│ │ │ │ +
75};
│ │ │ │
│ │ │ │ +
76
│ │ │ │ +
77
│ │ │ │
78
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ -
82 }
│ │ │ │ -
│ │ │ │ +
79} // end namespace Osd
│ │ │ │ +
80
│ │ │ │ +
81} // end namespace OPENSUBDIV_VERSION
│ │ │ │ +
82using namespace OPENSUBDIV_VERSION;
│ │ │ │
83
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ -
87 }
│ │ │ │ -
│ │ │ │ -
88
│ │ │ │ -
│ │ │ │ - │ │ │ │ - │ │ │ │ -
92 }
│ │ │ │ -
│ │ │ │ -
93
│ │ │ │ -
95 int GetNumFVarChannels() const { return (int)_fvarPatchArrays.size(); }
│ │ │ │ -
96
│ │ │ │ -
│ │ │ │ -
98 PatchArrayVector const &GetFVarPatchArrays(int fvarChannel = 0) const {
│ │ │ │ -
99 return _fvarPatchArrays[fvarChannel];
│ │ │ │ -
100 }
│ │ │ │ -
│ │ │ │ -
101
│ │ │ │ -
│ │ │ │ -
103 GLuint GetFVarPatchIndexBuffer(int fvarChannel = 0) const {
│ │ │ │ -
104 return _fvarIndexBuffers[fvarChannel];
│ │ │ │ -
105 }
│ │ │ │ -
│ │ │ │ -
106
│ │ │ │ -
│ │ │ │ -
108 GLuint GetFVarPatchIndexTextureBuffer(int fvarChannel = 0) const {
│ │ │ │ -
109 return _fvarIndexTextures[fvarChannel];
│ │ │ │ -
110 }
│ │ │ │ -
│ │ │ │ -
111
│ │ │ │ -
│ │ │ │ -
113 GLuint GetFVarPatchParamBuffer(int fvarChannel = 0) const {
│ │ │ │ -
114 return _fvarParamBuffers[fvarChannel];
│ │ │ │ -
115 }
│ │ │ │ -
│ │ │ │ -
116
│ │ │ │ -
│ │ │ │ -
118 GLuint GetFVarPatchParamTextureBuffer(int fvarChannel = 0) const {
│ │ │ │ -
119 return _fvarParamTextures[fvarChannel];
│ │ │ │ -
120 }
│ │ │ │ -
│ │ │ │ -
121
│ │ │ │ -
122protected:
│ │ │ │ - │ │ │ │ -
124
│ │ │ │ -
125 // allocate buffers from patchTable
│ │ │ │ -
126 bool allocate(Far::PatchTable const *farPatchTable);
│ │ │ │ -
127
│ │ │ │ - │ │ │ │ -
129
│ │ │ │ - │ │ │ │ - │ │ │ │ -
132
│ │ │ │ - │ │ │ │ - │ │ │ │ -
135
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
139
│ │ │ │ -
140 std::vector<PatchArrayVector> _fvarPatchArrays;
│ │ │ │ -
141 std::vector<GLuint> _fvarIndexBuffers;
│ │ │ │ -
142 std::vector<GLuint> _fvarIndexTextures;
│ │ │ │ -
143
│ │ │ │ -
144 std::vector<GLuint> _fvarParamBuffers;
│ │ │ │ -
145 std::vector<GLuint> _fvarParamTextures;
│ │ │ │ -
146};
│ │ │ │ -
│ │ │ │ -
147
│ │ │ │ -
148
│ │ │ │ -
149} // end namespace Osd
│ │ │ │ -
150
│ │ │ │ -
151} // end namespace OPENSUBDIV_VERSION
│ │ │ │ -
152using namespace OPENSUBDIV_VERSION;
│ │ │ │ -
153
│ │ │ │ -
154} // end namespace OpenSubdiv
│ │ │ │ -
155
│ │ │ │ -
156#endif // OPENSUBDIV3_OSD_GL_PATCH_TABLE_H
│ │ │ │ +
84} // end namespace OpenSubdiv
│ │ │ │ +
85
│ │ │ │ +
86#endif // OPENSUBDIV3_OSD_GL_LEGACY_GREGORY_PATCH_TABLE_H
│ │ │ │ │ │ │ │ -
std::vector< PatchArray > PatchArrayVector
Definition types.h:132
│ │ │ │ -
Container for arrays of parametric patches.
Definition patchTable.h:55
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
PatchArrayVector const & GetPatchArrays() const
Returns the patch arrays for vertex index buffer data.
│ │ │ │ -
GLuint GetFVarPatchIndexBuffer(int fvarChannel=0) const
Returns the GL index buffer containing face-varying control vertices.
│ │ │ │ - │ │ │ │ - │ │ │ │ -
GLuint GetPatchParamTextureBuffer() const
Returns the GL texture buffer containing the patch parameter.
│ │ │ │ - │ │ │ │ -
bool allocate(Far::PatchTable const *farPatchTable)
│ │ │ │ -
static GLPatchTable * Create(Far::PatchTable const *farPatchTable, void *deviceContext=NULL)
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
GLuint GetPatchParamBuffer() const
Returns the GL index buffer containing the patch parameter.
│ │ │ │ -
GLuint GetFVarPatchParamBuffer(int fvarChannel=0) const
Returns the GL index buffer containing face-varying patch params.
│ │ │ │ - │ │ │ │ - │ │ │ │ -
GLuint GetFVarPatchIndexTextureBuffer(int fvarChannel=0) const
Returns the GL texture buffer containing face-varying control vertices.
│ │ │ │ -
GLuint GetFVarPatchParamTextureBuffer(int fvarChannel=0) const
Returns the GL texture buffer containing face-varying patch params.
│ │ │ │ -
GLuint GetPatchIndexBuffer() const
Returns the GL index buffer containing the patch control vertices.
│ │ │ │ -
int GetNumFVarChannels() const
Returns the number of face-varying channel buffers.
│ │ │ │ -
PatchArrayVector const & GetFVarPatchArrays(int fvarChannel=0) const
Returns the patch arrays for face-varying index buffer data.
│ │ │ │ - │ │ │ │ - │ │ │ │ -
std::vector< PatchArrayVector > _fvarPatchArrays
│ │ │ │ -
GLuint GetPatchIndexTextureBuffer() const
Returns the GL texture buffer containing the patch control vertices.
│ │ │ │ -
GLuint GetVaryingPatchIndexTextureBuffer() const
Returns the GL texture buffer containing the varying control vertices.
│ │ │ │ - │ │ │ │ -
GLuint GetVaryingPatchIndexBuffer() const
Returns the GL index buffer containing the varying control vertices.
│ │ │ │ -
PatchArrayVector const & GetVaryingPatchArrays() const
Returns the patch arrays for varying index buffer data.
│ │ │ │ - │ │ │ │ + │ │ │ │ + │ │ │ │ +
Container for arrays of parametric patches.
Definition patchTable.h:55
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
static GLLegacyGregoryPatchTable * Create(Far::PatchTable const *patchTable)
│ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,12 +1,12 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ -glPatchTable.h │ │ │ │ │ +glLegacyGregoryPatchTable.h │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// │ │ │ │ │ 2// Copyright 2015 Pixar │ │ │ │ │ 3// │ │ │ │ │ 4// Licensed under the Apache License, Version 2.0 (the "Apache License") │ │ │ │ │ 5// with the following modification; you may not use this file except in │ │ │ │ │ 6// compliance with the Apache License and the following modification to it: │ │ │ │ │ @@ -24,249 +24,113 @@ │ │ │ │ │ 18// Unless required by applicable law or agreed to in writing, software │ │ │ │ │ 19// distributed under the Apache License with the above modification is │ │ │ │ │ 20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY │ │ │ │ │ 21// KIND, either express or implied. See the Apache License for the specific │ │ │ │ │ 22// language governing permissions and limitations under the Apache License. │ │ │ │ │ 23// │ │ │ │ │ 24 │ │ │ │ │ -25#ifndef OPENSUBDIV3_OSD_GL_PATCH_TABLE_H │ │ │ │ │ -26#define OPENSUBDIV3_OSD_GL_PATCH_TABLE_H │ │ │ │ │ +25#ifndef OPENSUBDIV3_OSD_GL_LEGACY_GREGORY_PATCH_TABLE_H │ │ │ │ │ +26#define OPENSUBDIV3_OSD_GL_LEGACY_GREGORY_PATCH_TABLE_H │ │ │ │ │ 27 │ │ │ │ │ 28#include "../version.h" │ │ │ │ │ 29 │ │ │ │ │ -30#include "../osd/nonCopyable.h" │ │ │ │ │ -31#include "../osd/opengl.h" │ │ │ │ │ -32#include "../osd/types.h" │ │ │ │ │ +30#include "../far/patchTable.h" │ │ │ │ │ +31#include "../osd/nonCopyable.h" │ │ │ │ │ +32#include "../osd/opengl.h" │ │ │ │ │ 33 │ │ │ │ │ -34#include │ │ │ │ │ -35 │ │ │ │ │ -36namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ -37namespace OPENSUBDIV_VERSION { │ │ │ │ │ +34namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ +35namespace OPENSUBDIV_VERSION { │ │ │ │ │ +36 │ │ │ │ │ +37namespace Osd { │ │ │ │ │ 38 │ │ │ │ │ -39namespace Far{ │ │ │ │ │ -40 class PatchTable; │ │ │ │ │ -41}; │ │ │ │ │ -42 │ │ │ │ │ -43namespace Osd { │ │ │ │ │ -44 │ │ │ │ │ -_4_5class _G_L_P_a_t_c_h_T_a_b_l_e : private NonCopyable { │ │ │ │ │ -46public: │ │ │ │ │ -_4_7 typedef GLuint _V_e_r_t_e_x_B_u_f_f_e_r_B_i_n_d_i_n_g; │ │ │ │ │ -48 │ │ │ │ │ -_4_9 _~_G_L_P_a_t_c_h_T_a_b_l_e(); │ │ │ │ │ -50 │ │ │ │ │ -_5_1 static _G_L_P_a_t_c_h_T_a_b_l_e *_C_r_e_a_t_e(_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e const *farPatchTable, │ │ │ │ │ -52 void *deviceContext = NULL); │ │ │ │ │ -53 │ │ │ │ │ -_5_5 _P_a_t_c_h_A_r_r_a_y_V_e_c_t_o_r const &_G_e_t_P_a_t_c_h_A_r_r_a_y_s() const { │ │ │ │ │ -56 return ___p_a_t_c_h_A_r_r_a_y_s; │ │ │ │ │ -57 } │ │ │ │ │ -58 │ │ │ │ │ -_6_0 GLuint _G_e_t_P_a_t_c_h_I_n_d_e_x_B_u_f_f_e_r() const { │ │ │ │ │ -61 return ___p_a_t_c_h_I_n_d_e_x_B_u_f_f_e_r; │ │ │ │ │ -62 } │ │ │ │ │ -63 │ │ │ │ │ -_6_5 GLuint _G_e_t_P_a_t_c_h_P_a_r_a_m_B_u_f_f_e_r() const { │ │ │ │ │ -66 return ___p_a_t_c_h_P_a_r_a_m_B_u_f_f_e_r; │ │ │ │ │ -67 } │ │ │ │ │ -68 │ │ │ │ │ -_7_0 GLuint _G_e_t_P_a_t_c_h_I_n_d_e_x_T_e_x_t_u_r_e_B_u_f_f_e_r() const { │ │ │ │ │ -71 return ___p_a_t_c_h_I_n_d_e_x_T_e_x_t_u_r_e; │ │ │ │ │ -72 } │ │ │ │ │ -73 │ │ │ │ │ -_7_5 GLuint _G_e_t_P_a_t_c_h_P_a_r_a_m_T_e_x_t_u_r_e_B_u_f_f_e_r() const { │ │ │ │ │ -76 return ___p_a_t_c_h_P_a_r_a_m_T_e_x_t_u_r_e; │ │ │ │ │ -77 } │ │ │ │ │ +_3_9class _G_L_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ +40 : private NonCopyable { │ │ │ │ │ +41public: │ │ │ │ │ +_4_2 _~_G_L_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e(); │ │ │ │ │ +43 │ │ │ │ │ +_4_4 static _G_L_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e *_C_r_e_a_t_e(_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e const *patchTable); │ │ │ │ │ +45 │ │ │ │ │ +_4_6 void _U_p_d_a_t_e_V_e_r_t_e_x_B_u_f_f_e_r(GLuint vbo); │ │ │ │ │ +47 │ │ │ │ │ +_4_8 GLuint _G_e_t_V_e_r_t_e_x_T_e_x_t_u_r_e_B_u_f_f_e_r() const { │ │ │ │ │ +49 return _vertexTextureBuffer; │ │ │ │ │ +50 } │ │ │ │ │ +51 │ │ │ │ │ +_5_2 GLuint _G_e_t_V_e_r_t_e_x_V_a_l_e_n_c_e_T_e_x_t_u_r_e_B_u_f_f_e_r() const { │ │ │ │ │ +53 return _vertexValenceTextureBuffer; │ │ │ │ │ +54 } │ │ │ │ │ +55 │ │ │ │ │ +_5_6 GLuint _G_e_t_Q_u_a_d_O_f_f_s_e_t_s_T_e_x_t_u_r_e_B_u_f_f_e_r() const { │ │ │ │ │ +57 return _quadOffsetsTextureBuffer; │ │ │ │ │ +58 } │ │ │ │ │ +59 │ │ │ │ │ +_6_0 GLuint _G_e_t_Q_u_a_d_O_f_f_s_e_t_s_B_a_s_e(_F_a_r_:_:_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r_:_:_T_y_p_e type) { │ │ │ │ │ +61 if (type == _F_a_r_:_:_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r_:_:_G_R_E_G_O_R_Y___B_O_U_N_D_A_R_Y) { │ │ │ │ │ +62 return _quadOffsetsBase[1]; │ │ │ │ │ +63 } │ │ │ │ │ +64 return _quadOffsetsBase[0]; │ │ │ │ │ +65 } │ │ │ │ │ +66 │ │ │ │ │ +67protected: │ │ │ │ │ +_6_8 _G_L_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e(); │ │ │ │ │ +69 │ │ │ │ │ +70private: │ │ │ │ │ +71 GLuint _vertexTextureBuffer; │ │ │ │ │ +72 GLuint _vertexValenceTextureBuffer; │ │ │ │ │ +73 GLuint _quadOffsetsTextureBuffer; │ │ │ │ │ +74 GLuint _quadOffsetsBase[2]; // gregory, boundaryGregory │ │ │ │ │ +75}; │ │ │ │ │ +76 │ │ │ │ │ +77 │ │ │ │ │ 78 │ │ │ │ │ -_8_0 _P_a_t_c_h_A_r_r_a_y_V_e_c_t_o_r const &_G_e_t_V_a_r_y_i_n_g_P_a_t_c_h_A_r_r_a_y_s() const { │ │ │ │ │ -81 return ___v_a_r_y_i_n_g_P_a_t_c_h_A_r_r_a_y_s; │ │ │ │ │ -82 } │ │ │ │ │ +79} // end namespace Osd │ │ │ │ │ +80 │ │ │ │ │ +81} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ +82using namespace OPENSUBDIV_VERSION; │ │ │ │ │ 83 │ │ │ │ │ -_8_5 GLuint _G_e_t_V_a_r_y_i_n_g_P_a_t_c_h_I_n_d_e_x_B_u_f_f_e_r() const { │ │ │ │ │ -86 return ___v_a_r_y_i_n_g_I_n_d_e_x_B_u_f_f_e_r; │ │ │ │ │ -87 } │ │ │ │ │ -88 │ │ │ │ │ -_9_0 GLuint _G_e_t_V_a_r_y_i_n_g_P_a_t_c_h_I_n_d_e_x_T_e_x_t_u_r_e_B_u_f_f_e_r() const { │ │ │ │ │ -91 return ___v_a_r_y_i_n_g_I_n_d_e_x_T_e_x_t_u_r_e; │ │ │ │ │ -92 } │ │ │ │ │ -93 │ │ │ │ │ -_9_5 int _G_e_t_N_u_m_F_V_a_r_C_h_a_n_n_e_l_s() const { return (int)___f_v_a_r_P_a_t_c_h_A_r_r_a_y_s.size(); } │ │ │ │ │ -96 │ │ │ │ │ -_9_8 _P_a_t_c_h_A_r_r_a_y_V_e_c_t_o_r const &_G_e_t_F_V_a_r_P_a_t_c_h_A_r_r_a_y_s(int fvarChannel = 0) const { │ │ │ │ │ -99 return ___f_v_a_r_P_a_t_c_h_A_r_r_a_y_s[fvarChannel]; │ │ │ │ │ -100 } │ │ │ │ │ -101 │ │ │ │ │ -_1_0_3 GLuint _G_e_t_F_V_a_r_P_a_t_c_h_I_n_d_e_x_B_u_f_f_e_r(int fvarChannel = 0) const { │ │ │ │ │ -104 return ___f_v_a_r_I_n_d_e_x_B_u_f_f_e_r_s[fvarChannel]; │ │ │ │ │ -105 } │ │ │ │ │ -106 │ │ │ │ │ -_1_0_8 GLuint _G_e_t_F_V_a_r_P_a_t_c_h_I_n_d_e_x_T_e_x_t_u_r_e_B_u_f_f_e_r(int fvarChannel = 0) const { │ │ │ │ │ -109 return ___f_v_a_r_I_n_d_e_x_T_e_x_t_u_r_e_s[fvarChannel]; │ │ │ │ │ -110 } │ │ │ │ │ -111 │ │ │ │ │ -_1_1_3 GLuint _G_e_t_F_V_a_r_P_a_t_c_h_P_a_r_a_m_B_u_f_f_e_r(int fvarChannel = 0) const { │ │ │ │ │ -114 return ___f_v_a_r_P_a_r_a_m_B_u_f_f_e_r_s[fvarChannel]; │ │ │ │ │ -115 } │ │ │ │ │ -116 │ │ │ │ │ -_1_1_8 GLuint _G_e_t_F_V_a_r_P_a_t_c_h_P_a_r_a_m_T_e_x_t_u_r_e_B_u_f_f_e_r(int fvarChannel = 0) const { │ │ │ │ │ -119 return ___f_v_a_r_P_a_r_a_m_T_e_x_t_u_r_e_s[fvarChannel]; │ │ │ │ │ -120 } │ │ │ │ │ -121 │ │ │ │ │ -122protected: │ │ │ │ │ -_1_2_3 _G_L_P_a_t_c_h_T_a_b_l_e(); │ │ │ │ │ -124 │ │ │ │ │ -125 // allocate buffers from patchTable │ │ │ │ │ -_1_2_6 bool _a_l_l_o_c_a_t_e(_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e const *farPatchTable); │ │ │ │ │ -127 │ │ │ │ │ -_1_2_8 _P_a_t_c_h_A_r_r_a_y_V_e_c_t_o_r ___p_a_t_c_h_A_r_r_a_y_s; │ │ │ │ │ -129 │ │ │ │ │ -_1_3_0 GLuint ___p_a_t_c_h_I_n_d_e_x_B_u_f_f_e_r; │ │ │ │ │ -_1_3_1 GLuint ___p_a_t_c_h_P_a_r_a_m_B_u_f_f_e_r; │ │ │ │ │ -132 │ │ │ │ │ -_1_3_3 GLuint ___p_a_t_c_h_I_n_d_e_x_T_e_x_t_u_r_e; │ │ │ │ │ -_1_3_4 GLuint ___p_a_t_c_h_P_a_r_a_m_T_e_x_t_u_r_e; │ │ │ │ │ -135 │ │ │ │ │ -_1_3_6 _P_a_t_c_h_A_r_r_a_y_V_e_c_t_o_r ___v_a_r_y_i_n_g_P_a_t_c_h_A_r_r_a_y_s; │ │ │ │ │ -_1_3_7 GLuint ___v_a_r_y_i_n_g_I_n_d_e_x_B_u_f_f_e_r; │ │ │ │ │ -_1_3_8 GLuint ___v_a_r_y_i_n_g_I_n_d_e_x_T_e_x_t_u_r_e; │ │ │ │ │ -139 │ │ │ │ │ -_1_4_0 std::vector ___f_v_a_r_P_a_t_c_h_A_r_r_a_y_s; │ │ │ │ │ -_1_4_1 std::vector ___f_v_a_r_I_n_d_e_x_B_u_f_f_e_r_s; │ │ │ │ │ -_1_4_2 std::vector ___f_v_a_r_I_n_d_e_x_T_e_x_t_u_r_e_s; │ │ │ │ │ -143 │ │ │ │ │ -_1_4_4 std::vector ___f_v_a_r_P_a_r_a_m_B_u_f_f_e_r_s; │ │ │ │ │ -_1_4_5 std::vector ___f_v_a_r_P_a_r_a_m_T_e_x_t_u_r_e_s; │ │ │ │ │ -146}; │ │ │ │ │ -147 │ │ │ │ │ -148 │ │ │ │ │ -149} // end namespace Osd │ │ │ │ │ -150 │ │ │ │ │ -151} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ -152using namespace OPENSUBDIV_VERSION; │ │ │ │ │ -153 │ │ │ │ │ -154} // end namespace OpenSubdiv │ │ │ │ │ -155 │ │ │ │ │ -156#endif // OPENSUBDIV3_OSD_GL_PATCH_TABLE_H │ │ │ │ │ +84} // end namespace OpenSubdiv │ │ │ │ │ +85 │ │ │ │ │ +86#endif // OPENSUBDIV3_OSD_GL_LEGACY_GREGORY_PATCH_TABLE_H │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v │ │ │ │ │ DDeeffiinniittiioonn _l_i_m_i_t_s_._h_:_3_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_P_a_t_c_h_A_r_r_a_y_V_e_c_t_o_r │ │ │ │ │ -std::vector< PatchArray > PatchArrayVector │ │ │ │ │ -DDeeffiinniittiioonn _t_y_p_e_s_._h_:_1_3_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r_:_:_T_y_p_e │ │ │ │ │ +Type │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_D_e_s_c_r_i_p_t_o_r_._h_:_4_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r_:_:_G_R_E_G_O_R_Y___B_O_U_N_D_A_R_Y │ │ │ │ │ +@ GREGORY_BOUNDARY │ │ │ │ │ +DDeeffiinniittiioonn _p_a_t_c_h_D_e_s_c_r_i_p_t_o_r_._h_:_6_1 │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ Container for arrays of parametric patches. │ │ │ │ │ DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_5_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ -DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_4_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:_V_e_r_t_e_x_B_u_f_f_e_r_B_i_n_d_i_n_g │ │ │ │ │ -GLuint VertexBufferBinding │ │ │ │ │ -DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_4_7 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:___f_v_a_r_I_n_d_e_x_B_u_f_f_e_r_s │ │ │ │ │ -std::vector< GLuint > _fvarIndexBuffers │ │ │ │ │ -DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_4_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_A_r_r_a_y_s │ │ │ │ │ -PatchArrayVector const & GetPatchArrays() const │ │ │ │ │ -Returns the patch arrays for vertex index buffer data. │ │ │ │ │ -DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_5_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_F_V_a_r_P_a_t_c_h_I_n_d_e_x_B_u_f_f_e_r │ │ │ │ │ -GLuint GetFVarPatchIndexBuffer(int fvarChannel=0) const │ │ │ │ │ -Returns the GL index buffer containing face-varying control vertices. │ │ │ │ │ -DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_0_3 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:_~_G_L_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ -~GLPatchTable() │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:___f_v_a_r_P_a_r_a_m_B_u_f_f_e_r_s │ │ │ │ │ -std::vector< GLuint > _fvarParamBuffers │ │ │ │ │ -DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_4_4 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_P_a_r_a_m_T_e_x_t_u_r_e_B_u_f_f_e_r │ │ │ │ │ -GLuint GetPatchParamTextureBuffer() const │ │ │ │ │ -Returns the GL texture buffer containing the patch parameter. │ │ │ │ │ -DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_7_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:___v_a_r_y_i_n_g_I_n_d_e_x_B_u_f_f_e_r │ │ │ │ │ -GLuint _varyingIndexBuffer │ │ │ │ │ -DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_3_7 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:_a_l_l_o_c_a_t_e │ │ │ │ │ -bool allocate(Far::PatchTable const *farPatchTable) │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:_C_r_e_a_t_e │ │ │ │ │ -static GLPatchTable * Create(Far::PatchTable const *farPatchTable, void │ │ │ │ │ -*deviceContext=NULL) │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:___v_a_r_y_i_n_g_I_n_d_e_x_T_e_x_t_u_r_e │ │ │ │ │ -GLuint _varyingIndexTexture │ │ │ │ │ -DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_3_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:___f_v_a_r_P_a_r_a_m_T_e_x_t_u_r_e_s │ │ │ │ │ -std::vector< GLuint > _fvarParamTextures │ │ │ │ │ -DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_4_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:___p_a_t_c_h_A_r_r_a_y_s │ │ │ │ │ -PatchArrayVector _patchArrays │ │ │ │ │ -DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_2_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:___p_a_t_c_h_I_n_d_e_x_B_u_f_f_e_r │ │ │ │ │ -GLuint _patchIndexBuffer │ │ │ │ │ -DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_3_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_P_a_r_a_m_B_u_f_f_e_r │ │ │ │ │ -GLuint GetPatchParamBuffer() const │ │ │ │ │ -Returns the GL index buffer containing the patch parameter. │ │ │ │ │ -DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_6_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_F_V_a_r_P_a_t_c_h_P_a_r_a_m_B_u_f_f_e_r │ │ │ │ │ -GLuint GetFVarPatchParamBuffer(int fvarChannel=0) const │ │ │ │ │ -Returns the GL index buffer containing face-varying patch params. │ │ │ │ │ -DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_1_3 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:___p_a_t_c_h_P_a_r_a_m_T_e_x_t_u_r_e │ │ │ │ │ -GLuint _patchParamTexture │ │ │ │ │ -DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_3_4 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:_G_L_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ -GLPatchTable() │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ -_G_e_t_F_V_a_r_P_a_t_c_h_I_n_d_e_x_T_e_x_t_u_r_e_B_u_f_f_e_r │ │ │ │ │ -GLuint GetFVarPatchIndexTextureBuffer(int fvarChannel=0) const │ │ │ │ │ -Returns the GL texture buffer containing face-varying control vertices. │ │ │ │ │ -DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_0_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ -_G_e_t_F_V_a_r_P_a_t_c_h_P_a_r_a_m_T_e_x_t_u_r_e_B_u_f_f_e_r │ │ │ │ │ -GLuint GetFVarPatchParamTextureBuffer(int fvarChannel=0) const │ │ │ │ │ -Returns the GL texture buffer containing face-varying patch params. │ │ │ │ │ -DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_1_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_I_n_d_e_x_B_u_f_f_e_r │ │ │ │ │ -GLuint GetPatchIndexBuffer() const │ │ │ │ │ -Returns the GL index buffer containing the patch control vertices. │ │ │ │ │ -DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_6_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_N_u_m_F_V_a_r_C_h_a_n_n_e_l_s │ │ │ │ │ -int GetNumFVarChannels() const │ │ │ │ │ -Returns the number of face-varying channel buffers. │ │ │ │ │ -DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_9_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_F_V_a_r_P_a_t_c_h_A_r_r_a_y_s │ │ │ │ │ -PatchArrayVector const & GetFVarPatchArrays(int fvarChannel=0) const │ │ │ │ │ -Returns the patch arrays for face-varying index buffer data. │ │ │ │ │ -DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_9_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:___f_v_a_r_I_n_d_e_x_T_e_x_t_u_r_e_s │ │ │ │ │ -std::vector< GLuint > _fvarIndexTextures │ │ │ │ │ -DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_4_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:___p_a_t_c_h_I_n_d_e_x_T_e_x_t_u_r_e │ │ │ │ │ -GLuint _patchIndexTexture │ │ │ │ │ -DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_3_3 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:___f_v_a_r_P_a_t_c_h_A_r_r_a_y_s │ │ │ │ │ -std::vector< PatchArrayVector > _fvarPatchArrays │ │ │ │ │ -DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_4_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_I_n_d_e_x_T_e_x_t_u_r_e_B_u_f_f_e_r │ │ │ │ │ -GLuint GetPatchIndexTextureBuffer() const │ │ │ │ │ -Returns the GL texture buffer containing the patch control vertices. │ │ │ │ │ -DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_7_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ -_G_e_t_V_a_r_y_i_n_g_P_a_t_c_h_I_n_d_e_x_T_e_x_t_u_r_e_B_u_f_f_e_r │ │ │ │ │ -GLuint GetVaryingPatchIndexTextureBuffer() const │ │ │ │ │ -Returns the GL texture buffer containing the varying control vertices. │ │ │ │ │ -DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_9_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:___v_a_r_y_i_n_g_P_a_t_c_h_A_r_r_a_y_s │ │ │ │ │ -PatchArrayVector _varyingPatchArrays │ │ │ │ │ -DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_3_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_V_a_r_y_i_n_g_P_a_t_c_h_I_n_d_e_x_B_u_f_f_e_r │ │ │ │ │ -GLuint GetVaryingPatchIndexBuffer() const │ │ │ │ │ -Returns the GL index buffer containing the varying control vertices. │ │ │ │ │ -DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_8_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_V_a_r_y_i_n_g_P_a_t_c_h_A_r_r_a_y_s │ │ │ │ │ -PatchArrayVector const & GetVaryingPatchArrays() const │ │ │ │ │ -Returns the patch arrays for varying index buffer data. │ │ │ │ │ -DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_8_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:___p_a_t_c_h_P_a_r_a_m_B_u_f_f_e_r │ │ │ │ │ -GLuint _patchParamBuffer │ │ │ │ │ -DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_3_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ +DDeeffiinniittiioonn _g_l_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_._h_:_4_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ +_G_e_t_V_e_r_t_e_x_V_a_l_e_n_c_e_T_e_x_t_u_r_e_B_u_f_f_e_r │ │ │ │ │ +GLuint GetVertexValenceTextureBuffer() const │ │ │ │ │ +DDeeffiinniittiioonn _g_l_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_._h_:_5_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ +_G_e_t_Q_u_a_d_O_f_f_s_e_t_s_T_e_x_t_u_r_e_B_u_f_f_e_r │ │ │ │ │ +GLuint GetQuadOffsetsTextureBuffer() const │ │ │ │ │ +DDeeffiinniittiioonn _g_l_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_._h_:_5_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ +_~_G_L_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ +~GLLegacyGregoryPatchTable() │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ +_G_L_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ +GLLegacyGregoryPatchTable() │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ +_U_p_d_a_t_e_V_e_r_t_e_x_B_u_f_f_e_r │ │ │ │ │ +void UpdateVertexBuffer(GLuint vbo) │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ +_G_e_t_Q_u_a_d_O_f_f_s_e_t_s_B_a_s_e │ │ │ │ │ +GLuint GetQuadOffsetsBase(Far::PatchDescriptor::Type type) │ │ │ │ │ +DDeeffiinniittiioonn _g_l_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_._h_:_6_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ +_G_e_t_V_e_r_t_e_x_T_e_x_t_u_r_e_B_u_f_f_e_r │ │ │ │ │ +GLuint GetVertexTextureBuffer() const │ │ │ │ │ +DDeeffiinniittiioonn _g_l_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_._h_:_4_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_:_:_C_r_e_a_t_e │ │ │ │ │ +static GLLegacyGregoryPatchTable * Create(Far::PatchTable const *patchTable) │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _o_s_d │ │ │ │ │ - * _g_l_P_a_t_c_h_T_a_b_l_e_._h │ │ │ │ │ + * _g_l_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00866.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/osd/glLegacyGregoryPatchTable.h File Reference │ │ │ │ +OpenSubdiv: opensubdiv/osd/glPatchTable.h File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -90,42 +90,45 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ Classes | │ │ │ │ Namespaces
│ │ │ │ -
glLegacyGregoryPatchTable.h File Reference
│ │ │ │ +
glPatchTable.h File Reference
│ │ │ │
│ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ -#include "../far/patchTable.h"
│ │ │ │ #include "../osd/nonCopyable.h"
│ │ │ │ #include "../osd/opengl.h"
│ │ │ │ +#include "../osd/types.h"
│ │ │ │ +#include <vector>
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  GLLegacyGregoryPatchTable
class  GLPatchTable
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Namespaces

namespace  OpenSubdiv
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION::Far
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION::Osd
 
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,25 +1,28 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -glLegacyGregoryPatchTable.h File Reference │ │ │ │ │ +glPatchTable.h File Reference │ │ │ │ │ #include "../version.h" │ │ │ │ │ -#include "_._._/_f_a_r_/_p_a_t_c_h_T_a_b_l_e_._h" │ │ │ │ │ #include "../osd/nonCopyable.h" │ │ │ │ │ #include "_._._/_o_s_d_/_o_p_e_n_g_l_._h" │ │ │ │ │ +#include "_._._/_o_s_d_/_t_y_p_e_s_._h" │ │ │ │ │ +#include │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ CCllaasssseess │ │ │ │ │ -class   _G_L_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ +class   _G_L_P_a_t_c_h_T_a_b_l_e │ │ │ │ │   │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N │ │ │ │ │   │ │ │ │ │ +namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r │ │ │ │ │ +  │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d │ │ │ │ │   │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _o_s_d │ │ │ │ │ - * _g_l_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_._h │ │ │ │ │ + * _g_l_P_a_t_c_h_T_a_b_l_e_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00866.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -1,3 +1,3 @@ │ │ │ │ │ var a00866 = [ │ │ │ │ │ - ["GLLegacyGregoryPatchTable", "a01233.html", "a01233"] │ │ │ │ │ + ["GLPatchTable", "a01237.html", "a01237"] │ │ │ │ │ ]; │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00866_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/osd/glLegacyGregoryPatchTable.h Source File │ │ │ │ +OpenSubdiv: opensubdiv/osd/glPatchTable.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -92,15 +92,15 @@ │ │ │ │
No Matches
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
glLegacyGregoryPatchTable.h
│ │ │ │ +
glPatchTable.h
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1//
│ │ │ │
2// Copyright 2015 Pixar
│ │ │ │
3//
│ │ │ │
4// Licensed under the Apache License, Version 2.0 (the "Apache License")
│ │ │ │
5// with the following modification; you may not use this file except in
│ │ │ │ @@ -119,103 +119,200 @@ │ │ │ │
18// Unless required by applicable law or agreed to in writing, software
│ │ │ │
19// distributed under the Apache License with the above modification is
│ │ │ │
20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
│ │ │ │
21// KIND, either express or implied. See the Apache License for the specific
│ │ │ │
22// language governing permissions and limitations under the Apache License.
│ │ │ │
23//
│ │ │ │
24
│ │ │ │ -
25#ifndef OPENSUBDIV3_OSD_GL_LEGACY_GREGORY_PATCH_TABLE_H
│ │ │ │ -
26#define OPENSUBDIV3_OSD_GL_LEGACY_GREGORY_PATCH_TABLE_H
│ │ │ │ +
25#ifndef OPENSUBDIV3_OSD_GL_PATCH_TABLE_H
│ │ │ │ +
26#define OPENSUBDIV3_OSD_GL_PATCH_TABLE_H
│ │ │ │
27
│ │ │ │
28#include "../version.h"
│ │ │ │
29
│ │ │ │ -
30#include "../far/patchTable.h"
│ │ │ │ -
31#include "../osd/nonCopyable.h"
│ │ │ │ -
32#include "../osd/opengl.h"
│ │ │ │ +
30#include "../osd/nonCopyable.h"
│ │ │ │ +
31#include "../osd/opengl.h"
│ │ │ │ +
32#include "../osd/types.h"
│ │ │ │
33
│ │ │ │ -
34namespace OpenSubdiv {
│ │ │ │ -
35namespace OPENSUBDIV_VERSION {
│ │ │ │ -
36
│ │ │ │ -
37namespace Osd {
│ │ │ │ +
34#include <vector>
│ │ │ │ +
35
│ │ │ │ +
36namespace OpenSubdiv {
│ │ │ │ +
37namespace OPENSUBDIV_VERSION {
│ │ │ │
38
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
40 : private NonCopyable<GLLegacyGregoryPatchTable> {
│ │ │ │ -
41public:
│ │ │ │ - │ │ │ │ -
43
│ │ │ │ - │ │ │ │ -
45
│ │ │ │ -
46 void UpdateVertexBuffer(GLuint vbo);
│ │ │ │ -
47
│ │ │ │ -
│ │ │ │ -
48 GLuint GetVertexTextureBuffer() const {
│ │ │ │ -
49 return _vertexTextureBuffer;
│ │ │ │ -
50 }
│ │ │ │ -
│ │ │ │ -
51
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
53 return _vertexValenceTextureBuffer;
│ │ │ │ -
54 }
│ │ │ │ -
│ │ │ │ -
55
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
57 return _quadOffsetsTextureBuffer;
│ │ │ │ -
58 }
│ │ │ │ +
39namespace Far{
│ │ │ │ +
40 class PatchTable;
│ │ │ │ +
41};
│ │ │ │ +
42
│ │ │ │ +
43namespace Osd {
│ │ │ │ +
44
│ │ │ │ +
│ │ │ │ +
45class GLPatchTable : private NonCopyable<GLPatchTable> {
│ │ │ │ +
46public:
│ │ │ │ +
47 typedef GLuint VertexBufferBinding;
│ │ │ │ +
48
│ │ │ │ + │ │ │ │ +
50
│ │ │ │ +
51 static GLPatchTable *Create(Far::PatchTable const *farPatchTable,
│ │ │ │ +
52 void *deviceContext = NULL);
│ │ │ │ +
53
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
56 return _patchArrays;
│ │ │ │ +
57 }
│ │ │ │
│ │ │ │ -
59
│ │ │ │ +
58
│ │ │ │
│ │ │ │ - │ │ │ │ - │ │ │ │ -
62 return _quadOffsetsBase[1];
│ │ │ │ -
63 }
│ │ │ │ -
64 return _quadOffsetsBase[0];
│ │ │ │ -
65 }
│ │ │ │ -
│ │ │ │ -
66
│ │ │ │ -
67protected:
│ │ │ │ - │ │ │ │ -
69
│ │ │ │ -
70private:
│ │ │ │ -
71 GLuint _vertexTextureBuffer;
│ │ │ │ -
72 GLuint _vertexValenceTextureBuffer;
│ │ │ │ -
73 GLuint _quadOffsetsTextureBuffer;
│ │ │ │ -
74 GLuint _quadOffsetsBase[2]; // gregory, boundaryGregory
│ │ │ │ -
75};
│ │ │ │ +
60 GLuint GetPatchIndexBuffer() const {
│ │ │ │ +
61 return _patchIndexBuffer;
│ │ │ │ +
62 }
│ │ │ │ +
│ │ │ │ +
63
│ │ │ │ +
│ │ │ │ +
65 GLuint GetPatchParamBuffer() const {
│ │ │ │ +
66 return _patchParamBuffer;
│ │ │ │ +
67 }
│ │ │ │ +
│ │ │ │ +
68
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
71 return _patchIndexTexture;
│ │ │ │ +
72 }
│ │ │ │ +
│ │ │ │ +
73
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
76 return _patchParamTexture;
│ │ │ │ +
77 }
│ │ │ │
│ │ │ │ -
76
│ │ │ │ -
77
│ │ │ │
78
│ │ │ │ -
79} // end namespace Osd
│ │ │ │ -
80
│ │ │ │ -
81} // end namespace OPENSUBDIV_VERSION
│ │ │ │ -
82using namespace OPENSUBDIV_VERSION;
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ +
82 }
│ │ │ │ +
│ │ │ │
83
│ │ │ │ -
84} // end namespace OpenSubdiv
│ │ │ │ -
85
│ │ │ │ -
86#endif // OPENSUBDIV3_OSD_GL_LEGACY_GREGORY_PATCH_TABLE_H
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ +
87 }
│ │ │ │ +
│ │ │ │ +
88
│ │ │ │ +
│ │ │ │ + │ │ │ │ + │ │ │ │ +
92 }
│ │ │ │ +
│ │ │ │ +
93
│ │ │ │ +
95 int GetNumFVarChannels() const { return (int)_fvarPatchArrays.size(); }
│ │ │ │ +
96
│ │ │ │ +
│ │ │ │ +
98 PatchArrayVector const &GetFVarPatchArrays(int fvarChannel = 0) const {
│ │ │ │ +
99 return _fvarPatchArrays[fvarChannel];
│ │ │ │ +
100 }
│ │ │ │ +
│ │ │ │ +
101
│ │ │ │ +
│ │ │ │ +
103 GLuint GetFVarPatchIndexBuffer(int fvarChannel = 0) const {
│ │ │ │ +
104 return _fvarIndexBuffers[fvarChannel];
│ │ │ │ +
105 }
│ │ │ │ +
│ │ │ │ +
106
│ │ │ │ +
│ │ │ │ +
108 GLuint GetFVarPatchIndexTextureBuffer(int fvarChannel = 0) const {
│ │ │ │ +
109 return _fvarIndexTextures[fvarChannel];
│ │ │ │ +
110 }
│ │ │ │ +
│ │ │ │ +
111
│ │ │ │ +
│ │ │ │ +
113 GLuint GetFVarPatchParamBuffer(int fvarChannel = 0) const {
│ │ │ │ +
114 return _fvarParamBuffers[fvarChannel];
│ │ │ │ +
115 }
│ │ │ │ +
│ │ │ │ +
116
│ │ │ │ +
│ │ │ │ +
118 GLuint GetFVarPatchParamTextureBuffer(int fvarChannel = 0) const {
│ │ │ │ +
119 return _fvarParamTextures[fvarChannel];
│ │ │ │ +
120 }
│ │ │ │ +
│ │ │ │ +
121
│ │ │ │ +
122protected:
│ │ │ │ + │ │ │ │ +
124
│ │ │ │ +
125 // allocate buffers from patchTable
│ │ │ │ +
126 bool allocate(Far::PatchTable const *farPatchTable);
│ │ │ │ +
127
│ │ │ │ + │ │ │ │ +
129
│ │ │ │ + │ │ │ │ + │ │ │ │ +
132
│ │ │ │ + │ │ │ │ + │ │ │ │ +
135
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
139
│ │ │ │ +
140 std::vector<PatchArrayVector> _fvarPatchArrays;
│ │ │ │ +
141 std::vector<GLuint> _fvarIndexBuffers;
│ │ │ │ +
142 std::vector<GLuint> _fvarIndexTextures;
│ │ │ │ +
143
│ │ │ │ +
144 std::vector<GLuint> _fvarParamBuffers;
│ │ │ │ +
145 std::vector<GLuint> _fvarParamTextures;
│ │ │ │ +
146};
│ │ │ │ +
│ │ │ │ +
147
│ │ │ │ +
148
│ │ │ │ +
149} // end namespace Osd
│ │ │ │ +
150
│ │ │ │ +
151} // end namespace OPENSUBDIV_VERSION
│ │ │ │ +
152using namespace OPENSUBDIV_VERSION;
│ │ │ │ +
153
│ │ │ │ +
154} // end namespace OpenSubdiv
│ │ │ │ +
155
│ │ │ │ +
156#endif // OPENSUBDIV3_OSD_GL_PATCH_TABLE_H
│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ -
Container for arrays of parametric patches.
Definition patchTable.h:55
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -
static GLLegacyGregoryPatchTable * Create(Far::PatchTable const *patchTable)
│ │ │ │ +
std::vector< PatchArray > PatchArrayVector
Definition types.h:132
│ │ │ │ +
Container for arrays of parametric patches.
Definition patchTable.h:55
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
PatchArrayVector const & GetPatchArrays() const
Returns the patch arrays for vertex index buffer data.
│ │ │ │ +
GLuint GetFVarPatchIndexBuffer(int fvarChannel=0) const
Returns the GL index buffer containing face-varying control vertices.
│ │ │ │ + │ │ │ │ + │ │ │ │ +
GLuint GetPatchParamTextureBuffer() const
Returns the GL texture buffer containing the patch parameter.
│ │ │ │ + │ │ │ │ +
bool allocate(Far::PatchTable const *farPatchTable)
│ │ │ │ +
static GLPatchTable * Create(Far::PatchTable const *farPatchTable, void *deviceContext=NULL)
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +
GLuint GetPatchParamBuffer() const
Returns the GL index buffer containing the patch parameter.
│ │ │ │ +
GLuint GetFVarPatchParamBuffer(int fvarChannel=0) const
Returns the GL index buffer containing face-varying patch params.
│ │ │ │ + │ │ │ │ + │ │ │ │ +
GLuint GetFVarPatchIndexTextureBuffer(int fvarChannel=0) const
Returns the GL texture buffer containing face-varying control vertices.
│ │ │ │ +
GLuint GetFVarPatchParamTextureBuffer(int fvarChannel=0) const
Returns the GL texture buffer containing face-varying patch params.
│ │ │ │ +
GLuint GetPatchIndexBuffer() const
Returns the GL index buffer containing the patch control vertices.
│ │ │ │ +
int GetNumFVarChannels() const
Returns the number of face-varying channel buffers.
│ │ │ │ +
PatchArrayVector const & GetFVarPatchArrays(int fvarChannel=0) const
Returns the patch arrays for face-varying index buffer data.
│ │ │ │ + │ │ │ │ + │ │ │ │ +
std::vector< PatchArrayVector > _fvarPatchArrays
│ │ │ │ +
GLuint GetPatchIndexTextureBuffer() const
Returns the GL texture buffer containing the patch control vertices.
│ │ │ │ +
GLuint GetVaryingPatchIndexTextureBuffer() const
Returns the GL texture buffer containing the varying control vertices.
│ │ │ │ + │ │ │ │ +
GLuint GetVaryingPatchIndexBuffer() const
Returns the GL index buffer containing the varying control vertices.
│ │ │ │ +
PatchArrayVector const & GetVaryingPatchArrays() const
Returns the patch arrays for varying index buffer data.
│ │ │ │ + │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,12 +1,12 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ -glLegacyGregoryPatchTable.h │ │ │ │ │ +glPatchTable.h │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// │ │ │ │ │ 2// Copyright 2015 Pixar │ │ │ │ │ 3// │ │ │ │ │ 4// Licensed under the Apache License, Version 2.0 (the "Apache License") │ │ │ │ │ 5// with the following modification; you may not use this file except in │ │ │ │ │ 6// compliance with the Apache License and the following modification to it: │ │ │ │ │ @@ -24,113 +24,249 @@ │ │ │ │ │ 18// Unless required by applicable law or agreed to in writing, software │ │ │ │ │ 19// distributed under the Apache License with the above modification is │ │ │ │ │ 20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY │ │ │ │ │ 21// KIND, either express or implied. See the Apache License for the specific │ │ │ │ │ 22// language governing permissions and limitations under the Apache License. │ │ │ │ │ 23// │ │ │ │ │ 24 │ │ │ │ │ -25#ifndef OPENSUBDIV3_OSD_GL_LEGACY_GREGORY_PATCH_TABLE_H │ │ │ │ │ -26#define OPENSUBDIV3_OSD_GL_LEGACY_GREGORY_PATCH_TABLE_H │ │ │ │ │ +25#ifndef OPENSUBDIV3_OSD_GL_PATCH_TABLE_H │ │ │ │ │ +26#define OPENSUBDIV3_OSD_GL_PATCH_TABLE_H │ │ │ │ │ 27 │ │ │ │ │ 28#include "../version.h" │ │ │ │ │ 29 │ │ │ │ │ -30#include "../far/patchTable.h" │ │ │ │ │ -31#include "../osd/nonCopyable.h" │ │ │ │ │ -32#include "../osd/opengl.h" │ │ │ │ │ +30#include "../osd/nonCopyable.h" │ │ │ │ │ +31#include "../osd/opengl.h" │ │ │ │ │ +32#include "../osd/types.h" │ │ │ │ │ 33 │ │ │ │ │ -34namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ -35namespace OPENSUBDIV_VERSION { │ │ │ │ │ -36 │ │ │ │ │ -37namespace Osd { │ │ │ │ │ +34#include │ │ │ │ │ +35 │ │ │ │ │ +36namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ +37namespace OPENSUBDIV_VERSION { │ │ │ │ │ 38 │ │ │ │ │ -_3_9class _G_L_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ -40 : private NonCopyable { │ │ │ │ │ -41public: │ │ │ │ │ -_4_2 _~_G_L_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e(); │ │ │ │ │ -43 │ │ │ │ │ -_4_4 static _G_L_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e *_C_r_e_a_t_e(_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e const *patchTable); │ │ │ │ │ -45 │ │ │ │ │ -_4_6 void _U_p_d_a_t_e_V_e_r_t_e_x_B_u_f_f_e_r(GLuint vbo); │ │ │ │ │ -47 │ │ │ │ │ -_4_8 GLuint _G_e_t_V_e_r_t_e_x_T_e_x_t_u_r_e_B_u_f_f_e_r() const { │ │ │ │ │ -49 return _vertexTextureBuffer; │ │ │ │ │ -50 } │ │ │ │ │ -51 │ │ │ │ │ -_5_2 GLuint _G_e_t_V_e_r_t_e_x_V_a_l_e_n_c_e_T_e_x_t_u_r_e_B_u_f_f_e_r() const { │ │ │ │ │ -53 return _vertexValenceTextureBuffer; │ │ │ │ │ -54 } │ │ │ │ │ -55 │ │ │ │ │ -_5_6 GLuint _G_e_t_Q_u_a_d_O_f_f_s_e_t_s_T_e_x_t_u_r_e_B_u_f_f_e_r() const { │ │ │ │ │ -57 return _quadOffsetsTextureBuffer; │ │ │ │ │ -58 } │ │ │ │ │ -59 │ │ │ │ │ -_6_0 GLuint _G_e_t_Q_u_a_d_O_f_f_s_e_t_s_B_a_s_e(_F_a_r_:_:_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r_:_:_T_y_p_e type) { │ │ │ │ │ -61 if (type == _F_a_r_:_:_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r_:_:_G_R_E_G_O_R_Y___B_O_U_N_D_A_R_Y) { │ │ │ │ │ -62 return _quadOffsetsBase[1]; │ │ │ │ │ -63 } │ │ │ │ │ -64 return _quadOffsetsBase[0]; │ │ │ │ │ -65 } │ │ │ │ │ -66 │ │ │ │ │ -67protected: │ │ │ │ │ -_6_8 _G_L_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e(); │ │ │ │ │ -69 │ │ │ │ │ -70private: │ │ │ │ │ -71 GLuint _vertexTextureBuffer; │ │ │ │ │ -72 GLuint _vertexValenceTextureBuffer; │ │ │ │ │ -73 GLuint _quadOffsetsTextureBuffer; │ │ │ │ │ -74 GLuint _quadOffsetsBase[2]; // gregory, boundaryGregory │ │ │ │ │ -75}; │ │ │ │ │ -76 │ │ │ │ │ -77 │ │ │ │ │ +39namespace Far{ │ │ │ │ │ +40 class PatchTable; │ │ │ │ │ +41}; │ │ │ │ │ +42 │ │ │ │ │ +43namespace Osd { │ │ │ │ │ +44 │ │ │ │ │ +_4_5class _G_L_P_a_t_c_h_T_a_b_l_e : private NonCopyable { │ │ │ │ │ +46public: │ │ │ │ │ +_4_7 typedef GLuint _V_e_r_t_e_x_B_u_f_f_e_r_B_i_n_d_i_n_g; │ │ │ │ │ +48 │ │ │ │ │ +_4_9 _~_G_L_P_a_t_c_h_T_a_b_l_e(); │ │ │ │ │ +50 │ │ │ │ │ +_5_1 static _G_L_P_a_t_c_h_T_a_b_l_e *_C_r_e_a_t_e(_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e const *farPatchTable, │ │ │ │ │ +52 void *deviceContext = NULL); │ │ │ │ │ +53 │ │ │ │ │ +_5_5 _P_a_t_c_h_A_r_r_a_y_V_e_c_t_o_r const &_G_e_t_P_a_t_c_h_A_r_r_a_y_s() const { │ │ │ │ │ +56 return ___p_a_t_c_h_A_r_r_a_y_s; │ │ │ │ │ +57 } │ │ │ │ │ +58 │ │ │ │ │ +_6_0 GLuint _G_e_t_P_a_t_c_h_I_n_d_e_x_B_u_f_f_e_r() const { │ │ │ │ │ +61 return ___p_a_t_c_h_I_n_d_e_x_B_u_f_f_e_r; │ │ │ │ │ +62 } │ │ │ │ │ +63 │ │ │ │ │ +_6_5 GLuint _G_e_t_P_a_t_c_h_P_a_r_a_m_B_u_f_f_e_r() const { │ │ │ │ │ +66 return ___p_a_t_c_h_P_a_r_a_m_B_u_f_f_e_r; │ │ │ │ │ +67 } │ │ │ │ │ +68 │ │ │ │ │ +_7_0 GLuint _G_e_t_P_a_t_c_h_I_n_d_e_x_T_e_x_t_u_r_e_B_u_f_f_e_r() const { │ │ │ │ │ +71 return ___p_a_t_c_h_I_n_d_e_x_T_e_x_t_u_r_e; │ │ │ │ │ +72 } │ │ │ │ │ +73 │ │ │ │ │ +_7_5 GLuint _G_e_t_P_a_t_c_h_P_a_r_a_m_T_e_x_t_u_r_e_B_u_f_f_e_r() const { │ │ │ │ │ +76 return ___p_a_t_c_h_P_a_r_a_m_T_e_x_t_u_r_e; │ │ │ │ │ +77 } │ │ │ │ │ 78 │ │ │ │ │ -79} // end namespace Osd │ │ │ │ │ -80 │ │ │ │ │ -81} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ -82using namespace OPENSUBDIV_VERSION; │ │ │ │ │ +_8_0 _P_a_t_c_h_A_r_r_a_y_V_e_c_t_o_r const &_G_e_t_V_a_r_y_i_n_g_P_a_t_c_h_A_r_r_a_y_s() const { │ │ │ │ │ +81 return ___v_a_r_y_i_n_g_P_a_t_c_h_A_r_r_a_y_s; │ │ │ │ │ +82 } │ │ │ │ │ 83 │ │ │ │ │ -84} // end namespace OpenSubdiv │ │ │ │ │ -85 │ │ │ │ │ -86#endif // OPENSUBDIV3_OSD_GL_LEGACY_GREGORY_PATCH_TABLE_H │ │ │ │ │ +_8_5 GLuint _G_e_t_V_a_r_y_i_n_g_P_a_t_c_h_I_n_d_e_x_B_u_f_f_e_r() const { │ │ │ │ │ +86 return ___v_a_r_y_i_n_g_I_n_d_e_x_B_u_f_f_e_r; │ │ │ │ │ +87 } │ │ │ │ │ +88 │ │ │ │ │ +_9_0 GLuint _G_e_t_V_a_r_y_i_n_g_P_a_t_c_h_I_n_d_e_x_T_e_x_t_u_r_e_B_u_f_f_e_r() const { │ │ │ │ │ +91 return ___v_a_r_y_i_n_g_I_n_d_e_x_T_e_x_t_u_r_e; │ │ │ │ │ +92 } │ │ │ │ │ +93 │ │ │ │ │ +_9_5 int _G_e_t_N_u_m_F_V_a_r_C_h_a_n_n_e_l_s() const { return (int)___f_v_a_r_P_a_t_c_h_A_r_r_a_y_s.size(); } │ │ │ │ │ +96 │ │ │ │ │ +_9_8 _P_a_t_c_h_A_r_r_a_y_V_e_c_t_o_r const &_G_e_t_F_V_a_r_P_a_t_c_h_A_r_r_a_y_s(int fvarChannel = 0) const { │ │ │ │ │ +99 return ___f_v_a_r_P_a_t_c_h_A_r_r_a_y_s[fvarChannel]; │ │ │ │ │ +100 } │ │ │ │ │ +101 │ │ │ │ │ +_1_0_3 GLuint _G_e_t_F_V_a_r_P_a_t_c_h_I_n_d_e_x_B_u_f_f_e_r(int fvarChannel = 0) const { │ │ │ │ │ +104 return ___f_v_a_r_I_n_d_e_x_B_u_f_f_e_r_s[fvarChannel]; │ │ │ │ │ +105 } │ │ │ │ │ +106 │ │ │ │ │ +_1_0_8 GLuint _G_e_t_F_V_a_r_P_a_t_c_h_I_n_d_e_x_T_e_x_t_u_r_e_B_u_f_f_e_r(int fvarChannel = 0) const { │ │ │ │ │ +109 return ___f_v_a_r_I_n_d_e_x_T_e_x_t_u_r_e_s[fvarChannel]; │ │ │ │ │ +110 } │ │ │ │ │ +111 │ │ │ │ │ +_1_1_3 GLuint _G_e_t_F_V_a_r_P_a_t_c_h_P_a_r_a_m_B_u_f_f_e_r(int fvarChannel = 0) const { │ │ │ │ │ +114 return ___f_v_a_r_P_a_r_a_m_B_u_f_f_e_r_s[fvarChannel]; │ │ │ │ │ +115 } │ │ │ │ │ +116 │ │ │ │ │ +_1_1_8 GLuint _G_e_t_F_V_a_r_P_a_t_c_h_P_a_r_a_m_T_e_x_t_u_r_e_B_u_f_f_e_r(int fvarChannel = 0) const { │ │ │ │ │ +119 return ___f_v_a_r_P_a_r_a_m_T_e_x_t_u_r_e_s[fvarChannel]; │ │ │ │ │ +120 } │ │ │ │ │ +121 │ │ │ │ │ +122protected: │ │ │ │ │ +_1_2_3 _G_L_P_a_t_c_h_T_a_b_l_e(); │ │ │ │ │ +124 │ │ │ │ │ +125 // allocate buffers from patchTable │ │ │ │ │ +_1_2_6 bool _a_l_l_o_c_a_t_e(_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e const *farPatchTable); │ │ │ │ │ +127 │ │ │ │ │ +_1_2_8 _P_a_t_c_h_A_r_r_a_y_V_e_c_t_o_r ___p_a_t_c_h_A_r_r_a_y_s; │ │ │ │ │ +129 │ │ │ │ │ +_1_3_0 GLuint ___p_a_t_c_h_I_n_d_e_x_B_u_f_f_e_r; │ │ │ │ │ +_1_3_1 GLuint ___p_a_t_c_h_P_a_r_a_m_B_u_f_f_e_r; │ │ │ │ │ +132 │ │ │ │ │ +_1_3_3 GLuint ___p_a_t_c_h_I_n_d_e_x_T_e_x_t_u_r_e; │ │ │ │ │ +_1_3_4 GLuint ___p_a_t_c_h_P_a_r_a_m_T_e_x_t_u_r_e; │ │ │ │ │ +135 │ │ │ │ │ +_1_3_6 _P_a_t_c_h_A_r_r_a_y_V_e_c_t_o_r ___v_a_r_y_i_n_g_P_a_t_c_h_A_r_r_a_y_s; │ │ │ │ │ +_1_3_7 GLuint ___v_a_r_y_i_n_g_I_n_d_e_x_B_u_f_f_e_r; │ │ │ │ │ +_1_3_8 GLuint ___v_a_r_y_i_n_g_I_n_d_e_x_T_e_x_t_u_r_e; │ │ │ │ │ +139 │ │ │ │ │ +_1_4_0 std::vector ___f_v_a_r_P_a_t_c_h_A_r_r_a_y_s; │ │ │ │ │ +_1_4_1 std::vector ___f_v_a_r_I_n_d_e_x_B_u_f_f_e_r_s; │ │ │ │ │ +_1_4_2 std::vector ___f_v_a_r_I_n_d_e_x_T_e_x_t_u_r_e_s; │ │ │ │ │ +143 │ │ │ │ │ +_1_4_4 std::vector ___f_v_a_r_P_a_r_a_m_B_u_f_f_e_r_s; │ │ │ │ │ +_1_4_5 std::vector ___f_v_a_r_P_a_r_a_m_T_e_x_t_u_r_e_s; │ │ │ │ │ +146}; │ │ │ │ │ +147 │ │ │ │ │ +148 │ │ │ │ │ +149} // end namespace Osd │ │ │ │ │ +150 │ │ │ │ │ +151} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ +152using namespace OPENSUBDIV_VERSION; │ │ │ │ │ +153 │ │ │ │ │ +154} // end namespace OpenSubdiv │ │ │ │ │ +155 │ │ │ │ │ +156#endif // OPENSUBDIV3_OSD_GL_PATCH_TABLE_H │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v │ │ │ │ │ DDeeffiinniittiioonn _l_i_m_i_t_s_._h_:_3_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r_:_:_T_y_p_e │ │ │ │ │ -Type │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_D_e_s_c_r_i_p_t_o_r_._h_:_4_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_D_e_s_c_r_i_p_t_o_r_:_:_G_R_E_G_O_R_Y___B_O_U_N_D_A_R_Y │ │ │ │ │ -@ GREGORY_BOUNDARY │ │ │ │ │ -DDeeffiinniittiioonn _p_a_t_c_h_D_e_s_c_r_i_p_t_o_r_._h_:_6_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_P_a_t_c_h_A_r_r_a_y_V_e_c_t_o_r │ │ │ │ │ +std::vector< PatchArray > PatchArrayVector │ │ │ │ │ +DDeeffiinniittiioonn _t_y_p_e_s_._h_:_1_3_2 │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_F_a_r_:_:_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ Container for arrays of parametric patches. │ │ │ │ │ DDeeffiinniittiioonn _p_a_t_c_h_T_a_b_l_e_._h_:_5_5 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ -DDeeffiinniittiioonn _g_l_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_._h_:_4_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ -_G_e_t_V_e_r_t_e_x_V_a_l_e_n_c_e_T_e_x_t_u_r_e_B_u_f_f_e_r │ │ │ │ │ -GLuint GetVertexValenceTextureBuffer() const │ │ │ │ │ -DDeeffiinniittiioonn _g_l_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_._h_:_5_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ -_G_e_t_Q_u_a_d_O_f_f_s_e_t_s_T_e_x_t_u_r_e_B_u_f_f_e_r │ │ │ │ │ -GLuint GetQuadOffsetsTextureBuffer() const │ │ │ │ │ -DDeeffiinniittiioonn _g_l_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_._h_:_5_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ -_~_G_L_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ -~GLLegacyGregoryPatchTable() │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ -_G_L_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ -GLLegacyGregoryPatchTable() │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ -_U_p_d_a_t_e_V_e_r_t_e_x_B_u_f_f_e_r │ │ │ │ │ -void UpdateVertexBuffer(GLuint vbo) │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ -_G_e_t_Q_u_a_d_O_f_f_s_e_t_s_B_a_s_e │ │ │ │ │ -GLuint GetQuadOffsetsBase(Far::PatchDescriptor::Type type) │ │ │ │ │ -DDeeffiinniittiioonn _g_l_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_._h_:_6_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ -_G_e_t_V_e_r_t_e_x_T_e_x_t_u_r_e_B_u_f_f_e_r │ │ │ │ │ -GLuint GetVertexTextureBuffer() const │ │ │ │ │ -DDeeffiinniittiioonn _g_l_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_._h_:_4_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_:_:_C_r_e_a_t_e │ │ │ │ │ -static GLLegacyGregoryPatchTable * Create(Far::PatchTable const *patchTable) │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ +DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_4_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:_V_e_r_t_e_x_B_u_f_f_e_r_B_i_n_d_i_n_g │ │ │ │ │ +GLuint VertexBufferBinding │ │ │ │ │ +DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_4_7 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:___f_v_a_r_I_n_d_e_x_B_u_f_f_e_r_s │ │ │ │ │ +std::vector< GLuint > _fvarIndexBuffers │ │ │ │ │ +DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_4_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_A_r_r_a_y_s │ │ │ │ │ +PatchArrayVector const & GetPatchArrays() const │ │ │ │ │ +Returns the patch arrays for vertex index buffer data. │ │ │ │ │ +DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_5_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_F_V_a_r_P_a_t_c_h_I_n_d_e_x_B_u_f_f_e_r │ │ │ │ │ +GLuint GetFVarPatchIndexBuffer(int fvarChannel=0) const │ │ │ │ │ +Returns the GL index buffer containing face-varying control vertices. │ │ │ │ │ +DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_0_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:_~_G_L_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ +~GLPatchTable() │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:___f_v_a_r_P_a_r_a_m_B_u_f_f_e_r_s │ │ │ │ │ +std::vector< GLuint > _fvarParamBuffers │ │ │ │ │ +DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_4_4 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_P_a_r_a_m_T_e_x_t_u_r_e_B_u_f_f_e_r │ │ │ │ │ +GLuint GetPatchParamTextureBuffer() const │ │ │ │ │ +Returns the GL texture buffer containing the patch parameter. │ │ │ │ │ +DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_7_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:___v_a_r_y_i_n_g_I_n_d_e_x_B_u_f_f_e_r │ │ │ │ │ +GLuint _varyingIndexBuffer │ │ │ │ │ +DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_3_7 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:_a_l_l_o_c_a_t_e │ │ │ │ │ +bool allocate(Far::PatchTable const *farPatchTable) │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:_C_r_e_a_t_e │ │ │ │ │ +static GLPatchTable * Create(Far::PatchTable const *farPatchTable, void │ │ │ │ │ +*deviceContext=NULL) │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:___v_a_r_y_i_n_g_I_n_d_e_x_T_e_x_t_u_r_e │ │ │ │ │ +GLuint _varyingIndexTexture │ │ │ │ │ +DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_3_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:___f_v_a_r_P_a_r_a_m_T_e_x_t_u_r_e_s │ │ │ │ │ +std::vector< GLuint > _fvarParamTextures │ │ │ │ │ +DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_4_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:___p_a_t_c_h_A_r_r_a_y_s │ │ │ │ │ +PatchArrayVector _patchArrays │ │ │ │ │ +DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_2_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:___p_a_t_c_h_I_n_d_e_x_B_u_f_f_e_r │ │ │ │ │ +GLuint _patchIndexBuffer │ │ │ │ │ +DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_3_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_P_a_r_a_m_B_u_f_f_e_r │ │ │ │ │ +GLuint GetPatchParamBuffer() const │ │ │ │ │ +Returns the GL index buffer containing the patch parameter. │ │ │ │ │ +DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_6_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_F_V_a_r_P_a_t_c_h_P_a_r_a_m_B_u_f_f_e_r │ │ │ │ │ +GLuint GetFVarPatchParamBuffer(int fvarChannel=0) const │ │ │ │ │ +Returns the GL index buffer containing face-varying patch params. │ │ │ │ │ +DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_1_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:___p_a_t_c_h_P_a_r_a_m_T_e_x_t_u_r_e │ │ │ │ │ +GLuint _patchParamTexture │ │ │ │ │ +DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_3_4 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:_G_L_P_a_t_c_h_T_a_b_l_e │ │ │ │ │ +GLPatchTable() │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ +_G_e_t_F_V_a_r_P_a_t_c_h_I_n_d_e_x_T_e_x_t_u_r_e_B_u_f_f_e_r │ │ │ │ │ +GLuint GetFVarPatchIndexTextureBuffer(int fvarChannel=0) const │ │ │ │ │ +Returns the GL texture buffer containing face-varying control vertices. │ │ │ │ │ +DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_0_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ +_G_e_t_F_V_a_r_P_a_t_c_h_P_a_r_a_m_T_e_x_t_u_r_e_B_u_f_f_e_r │ │ │ │ │ +GLuint GetFVarPatchParamTextureBuffer(int fvarChannel=0) const │ │ │ │ │ +Returns the GL texture buffer containing face-varying patch params. │ │ │ │ │ +DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_1_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_I_n_d_e_x_B_u_f_f_e_r │ │ │ │ │ +GLuint GetPatchIndexBuffer() const │ │ │ │ │ +Returns the GL index buffer containing the patch control vertices. │ │ │ │ │ +DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_6_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_N_u_m_F_V_a_r_C_h_a_n_n_e_l_s │ │ │ │ │ +int GetNumFVarChannels() const │ │ │ │ │ +Returns the number of face-varying channel buffers. │ │ │ │ │ +DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_9_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_F_V_a_r_P_a_t_c_h_A_r_r_a_y_s │ │ │ │ │ +PatchArrayVector const & GetFVarPatchArrays(int fvarChannel=0) const │ │ │ │ │ +Returns the patch arrays for face-varying index buffer data. │ │ │ │ │ +DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_9_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:___f_v_a_r_I_n_d_e_x_T_e_x_t_u_r_e_s │ │ │ │ │ +std::vector< GLuint > _fvarIndexTextures │ │ │ │ │ +DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_4_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:___p_a_t_c_h_I_n_d_e_x_T_e_x_t_u_r_e │ │ │ │ │ +GLuint _patchIndexTexture │ │ │ │ │ +DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_3_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:___f_v_a_r_P_a_t_c_h_A_r_r_a_y_s │ │ │ │ │ +std::vector< PatchArrayVector > _fvarPatchArrays │ │ │ │ │ +DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_4_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_P_a_t_c_h_I_n_d_e_x_T_e_x_t_u_r_e_B_u_f_f_e_r │ │ │ │ │ +GLuint GetPatchIndexTextureBuffer() const │ │ │ │ │ +Returns the GL texture buffer containing the patch control vertices. │ │ │ │ │ +DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_7_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_: │ │ │ │ │ +_G_e_t_V_a_r_y_i_n_g_P_a_t_c_h_I_n_d_e_x_T_e_x_t_u_r_e_B_u_f_f_e_r │ │ │ │ │ +GLuint GetVaryingPatchIndexTextureBuffer() const │ │ │ │ │ +Returns the GL texture buffer containing the varying control vertices. │ │ │ │ │ +DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_9_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:___v_a_r_y_i_n_g_P_a_t_c_h_A_r_r_a_y_s │ │ │ │ │ +PatchArrayVector _varyingPatchArrays │ │ │ │ │ +DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_3_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_V_a_r_y_i_n_g_P_a_t_c_h_I_n_d_e_x_B_u_f_f_e_r │ │ │ │ │ +GLuint GetVaryingPatchIndexBuffer() const │ │ │ │ │ +Returns the GL index buffer containing the varying control vertices. │ │ │ │ │ +DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_8_5 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:_G_e_t_V_a_r_y_i_n_g_P_a_t_c_h_A_r_r_a_y_s │ │ │ │ │ +PatchArrayVector const & GetVaryingPatchArrays() const │ │ │ │ │ +Returns the patch arrays for varying index buffer data. │ │ │ │ │ +DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_8_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_G_L_P_a_t_c_h_T_a_b_l_e_:_:___p_a_t_c_h_P_a_r_a_m_B_u_f_f_e_r │ │ │ │ │ +GLuint _patchParamBuffer │ │ │ │ │ +DDeeffiinniittiioonn _g_l_P_a_t_c_h_T_a_b_l_e_._h_:_1_3_1 │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _o_s_d │ │ │ │ │ - * _g_l_L_e_g_a_c_y_G_r_e_g_o_r_y_P_a_t_c_h_T_a_b_l_e_._h │ │ │ │ │ + * _g_l_P_a_t_c_h_T_a_b_l_e_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00872.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/osd/tbbKernel.h File Reference │ │ │ │ +OpenSubdiv: opensubdiv/osd/tbbEvaluator.h File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -88,51 +88,44 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ -Namespaces | │ │ │ │ -Functions
│ │ │ │ -
tbbKernel.h File Reference
│ │ │ │ +Classes | │ │ │ │ +Namespaces
│ │ │ │ +
tbbEvaluator.h File Reference
│ │ │ │ │ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ -#include "../far/patchDescriptor.h"
│ │ │ │ -#include "../far/patchParam.h"
│ │ │ │ +#include "../osd/bufferDescriptor.h"
│ │ │ │ +#include "../osd/types.h"
│ │ │ │ +#include <cstddef>
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +

│ │ │ │ +Classes

class  TbbEvaluator
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

│ │ │ │ Namespaces

namespace  OpenSubdiv
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION::Osd
 
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │

│ │ │ │ -Functions

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)
 
void TbbEvalStencils (float const *src, BufferDescriptor const &srcDesc, float *dst, BufferDescriptor const &dstDesc, float *dstDu, BufferDescriptor const &dstDuDesc, float *dstDv, BufferDescriptor const &dstDvDesc, int const *sizes, int const *offsets, int const *indices, float const *weights, float const *duWeights, float const *dvWeights, int start, int end)
 
void TbbEvalStencils (float const *src, BufferDescriptor const &srcDesc, float *dst, BufferDescriptor const &dstDesc, float *dstDu, BufferDescriptor const &dstDuDesc, float *dstDv, BufferDescriptor const &dstDvDesc, float *dstDuu, BufferDescriptor const &dstDuuDesc, float *dstDuv, BufferDescriptor const &dstDuvDesc, float *dstDvv, BufferDescriptor 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)
 
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)
 
void TbbEvalPatches (float const *src, BufferDescriptor const &srcDesc, float *dst, BufferDescriptor const &dstDesc, float *dstDu, BufferDescriptor const &dstDuDesc, float *dstDv, BufferDescriptor const &dstDvDesc, float *dstDuu, BufferDescriptor const &dstDuuDesc, float *dstDuv, BufferDescriptor const &dstDuvDesc, float *dstDvv, BufferDescriptor const &dstDvvDesc, int numPatchCoords, const PatchCoord *patchCoords, const PatchArray *patchArrayBuffer, const int *patchIndexBuffer, const PatchParam *patchParamBuffer)
 
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,59 +1,25 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ -_N_a_m_e_s_p_a_c_e_s | _F_u_n_c_t_i_o_n_s │ │ │ │ │ -tbbKernel.h File Reference │ │ │ │ │ +_C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ +tbbEvaluator.h File Reference │ │ │ │ │ #include "../version.h" │ │ │ │ │ -#include "_._._/_f_a_r_/_p_a_t_c_h_D_e_s_c_r_i_p_t_o_r_._h" │ │ │ │ │ -#include "_._._/_f_a_r_/_p_a_t_c_h_P_a_r_a_m_._h" │ │ │ │ │ +#include "_._._/_o_s_d_/_b_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r_._h" │ │ │ │ │ +#include "_._._/_o_s_d_/_t_y_p_e_s_._h" │ │ │ │ │ +#include │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ +CCllaasssseess │ │ │ │ │ +class   _T_b_b_E_v_a_l_u_a_t_o_r │ │ │ │ │ +  │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d │ │ │ │ │   │ │ │ │ │ -FFuunnccttiioonnss │ │ │ │ │ -void  _T_b_b_E_v_a_l_S_t_e_n_c_i_l_s (float const *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, float │ │ │ │ │ - *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, int const *sizes, int const │ │ │ │ │ - *offsets, int const *indices, float const *weights, int start, int end) │ │ │ │ │ -  │ │ │ │ │ -void  _T_b_b_E_v_a_l_S_t_e_n_c_i_l_s (float const *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, float │ │ │ │ │ - *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, float *dstDu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ - const &dstDuDesc, float *dstDv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDvDesc, int │ │ │ │ │ - const *sizes, int const *offsets, int const *indices, float const │ │ │ │ │ - *weights, float const *duWeights, float const *dvWeights, int start, int │ │ │ │ │ - end) │ │ │ │ │ -  │ │ │ │ │ -void  _T_b_b_E_v_a_l_S_t_e_n_c_i_l_s (float const *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, float │ │ │ │ │ - *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, float *dstDu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ - const &dstDuDesc, float *dstDv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDvDesc, float │ │ │ │ │ - *dstDuu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDuuDesc, float *dstDuv, │ │ │ │ │ - _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDuvDesc, float *dstDvv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r 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) │ │ │ │ │ -  │ │ │ │ │ -void  _T_b_b_E_v_a_l_P_a_t_c_h_e_s (float const *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, float │ │ │ │ │ - *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, float *dstDu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ - const &dstDuDesc, float *dstDv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDvDesc, int │ │ │ │ │ - numPatchCoords, const _P_a_t_c_h_C_o_o_r_d *patchCoords, const _P_a_t_c_h_A_r_r_a_y │ │ │ │ │ - *patchArrayBuffer, const int *patchIndexBuffer, const _P_a_t_c_h_P_a_r_a_m │ │ │ │ │ - *patchParamBuffer) │ │ │ │ │ -  │ │ │ │ │ -void  _T_b_b_E_v_a_l_P_a_t_c_h_e_s (float const *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, float │ │ │ │ │ - *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, float *dstDu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ - const &dstDuDesc, float *dstDv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDvDesc, float │ │ │ │ │ - *dstDuu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDuuDesc, float *dstDuv, │ │ │ │ │ - _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDuvDesc, float *dstDvv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const │ │ │ │ │ - &dstDvvDesc, int numPatchCoords, const _P_a_t_c_h_C_o_o_r_d *patchCoords, const │ │ │ │ │ - _P_a_t_c_h_A_r_r_a_y *patchArrayBuffer, const int *patchIndexBuffer, const │ │ │ │ │ - _P_a_t_c_h_P_a_r_a_m *patchParamBuffer) │ │ │ │ │ -  │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _o_s_d │ │ │ │ │ - * _t_b_b_K_e_r_n_e_l_._h │ │ │ │ │ + * _t_b_b_E_v_a_l_u_a_t_o_r_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00872.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -1,7 +1,3 @@ │ │ │ │ │ var a00872 = [ │ │ │ │ │ - ["TbbEvalPatches", "a00872.html#aa0c3c264a43eeddc5cb3a58b006d3d32", null], │ │ │ │ │ - ["TbbEvalPatches", "a00872.html#a20e08be34d6183b6943ed7a1586eca4a", null], │ │ │ │ │ - ["TbbEvalStencils", "a00872.html#aa65ed860a2fa5935d99129a898a8f0b6", null], │ │ │ │ │ - ["TbbEvalStencils", "a00872.html#af23c35537952bfdd493441e5c42ff2ed", null], │ │ │ │ │ - ["TbbEvalStencils", "a00872.html#a4a6a0fcc01638f2a0316b32ad158b485", null] │ │ │ │ │ + ["TbbEvaluator", "a01317.html", null] │ │ │ │ │ ]; │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00872_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/osd/tbbKernel.h Source File │ │ │ │ +OpenSubdiv: opensubdiv/osd/tbbEvaluator.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -92,19 +92,19 @@ │ │ │ │
No Matches
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
tbbKernel.h
│ │ │ │ +
tbbEvaluator.h
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1//
│ │ │ │ -
2// Copyright 2013 Pixar
│ │ │ │ +
2// Copyright 2015 Pixar
│ │ │ │
3//
│ │ │ │
4// Licensed under the Apache License, Version 2.0 (the "Apache License")
│ │ │ │
5// with the following modification; you may not use this file except in
│ │ │ │
6// compliance with the Apache License and the following modification to it:
│ │ │ │
7// Section 6. Trademarks. is deleted and replaced with:
│ │ │ │
8//
│ │ │ │
9// 6. Trademarks. This License does not grant permission to use the trade
│ │ │ │ @@ -119,116 +119,528 @@ │ │ │ │
18// Unless required by applicable law or agreed to in writing, software
│ │ │ │
19// distributed under the Apache License with the above modification is
│ │ │ │
20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
│ │ │ │
21// KIND, either express or implied. See the Apache License for the specific
│ │ │ │
22// language governing permissions and limitations under the Apache License.
│ │ │ │
23//
│ │ │ │
24
│ │ │ │ -
25#ifndef OPENSUBDIV3_OSD_TBB_KERNEL_H
│ │ │ │ -
26#define OPENSUBDIV3_OSD_TBB_KERNEL_H
│ │ │ │ +
25#ifndef OPENSUBDIV3_OSD_TBB_EVALUATOR_H
│ │ │ │ +
26#define OPENSUBDIV3_OSD_TBB_EVALUATOR_H
│ │ │ │
27
│ │ │ │
28#include "../version.h"
│ │ │ │ -
29#include "../far/patchDescriptor.h"
│ │ │ │ -
30#include "../far/patchParam.h"
│ │ │ │ +
29#include "../osd/bufferDescriptor.h"
│ │ │ │ +
30#include "../osd/types.h"
│ │ │ │
31
│ │ │ │ -
32namespace OpenSubdiv {
│ │ │ │ -
33namespace OPENSUBDIV_VERSION {
│ │ │ │ -
34
│ │ │ │ -
35namespace Osd {
│ │ │ │ +
32#include <cstddef>
│ │ │ │ +
33
│ │ │ │ +
34namespace OpenSubdiv {
│ │ │ │ +
35namespace OPENSUBDIV_VERSION {
│ │ │ │
36
│ │ │ │ -
37struct PatchArray;
│ │ │ │ -
38struct PatchCoord;
│ │ │ │ -
39struct PatchParam;
│ │ │ │ -
40struct BufferDescriptor;
│ │ │ │ -
41
│ │ │ │ -
42void
│ │ │ │ -
43TbbEvalStencils(float const * src, BufferDescriptor const &srcDesc,
│ │ │ │ -
44 float * dst, BufferDescriptor const &dstDesc,
│ │ │ │ -
45 int const * sizes,
│ │ │ │ -
46 int const * offsets,
│ │ │ │ -
47 int const * indices,
│ │ │ │ -
48 float const * weights,
│ │ │ │ -
49 int start, int end);
│ │ │ │ -
50
│ │ │ │ -
51void
│ │ │ │ -
52TbbEvalStencils(float const * src, BufferDescriptor const &srcDesc,
│ │ │ │ -
53 float * dst, BufferDescriptor const &dstDesc,
│ │ │ │ -
54 float * dstDu, BufferDescriptor const &dstDuDesc,
│ │ │ │ -
55 float * dstDv, BufferDescriptor const &dstDvDesc,
│ │ │ │ -
56 int const * sizes,
│ │ │ │ -
57 int const * offsets,
│ │ │ │ -
58 int const * indices,
│ │ │ │ -
59 float const * weights,
│ │ │ │ -
60 float const * duWeights,
│ │ │ │ -
61 float const * dvWeights,
│ │ │ │ -
62 int start, int end);
│ │ │ │ -
63
│ │ │ │ -
64void
│ │ │ │ -
65TbbEvalStencils(float const * src, BufferDescriptor const &srcDesc,
│ │ │ │ -
66 float * dst, BufferDescriptor const &dstDesc,
│ │ │ │ -
67 float * dstDu, BufferDescriptor const &dstDuDesc,
│ │ │ │ -
68 float * dstDv, BufferDescriptor const &dstDvDesc,
│ │ │ │ -
69 float * dstDuu, BufferDescriptor const &dstDuuDesc,
│ │ │ │ -
70 float * dstDuv, BufferDescriptor const &dstDuvDesc,
│ │ │ │ -
71 float * dstDvv, BufferDescriptor const &dstDvvDesc,
│ │ │ │ -
72 int const * sizes,
│ │ │ │ -
73 int const * offsets,
│ │ │ │ -
74 int const * indices,
│ │ │ │ -
75 float const * weights,
│ │ │ │ -
76 float const * duWeights,
│ │ │ │ -
77 float const * dvWeights,
│ │ │ │ -
78 float const * duuWeights,
│ │ │ │ -
79 float const * duvWeights,
│ │ │ │ -
80 float const * dvvWeights,
│ │ │ │ -
81 int start, int end);
│ │ │ │ -
82
│ │ │ │ -
83void
│ │ │ │ -
84TbbEvalPatches(float const *src, BufferDescriptor const &srcDesc,
│ │ │ │ -
85 float *dst, BufferDescriptor const &dstDesc,
│ │ │ │ -
86 float *dstDu, BufferDescriptor const &dstDuDesc,
│ │ │ │ -
87 float *dstDv, BufferDescriptor const &dstDvDesc,
│ │ │ │ -
88 int numPatchCoords,
│ │ │ │ -
89 const PatchCoord *patchCoords,
│ │ │ │ -
90 const PatchArray *patchArrayBuffer,
│ │ │ │ -
91 const int *patchIndexBuffer,
│ │ │ │ -
92 const PatchParam *patchParamBuffer);
│ │ │ │ -
93
│ │ │ │ -
94void
│ │ │ │ -
95TbbEvalPatches(float const *src, BufferDescriptor const &srcDesc,
│ │ │ │ -
96 float *dst, BufferDescriptor const &dstDesc,
│ │ │ │ -
97 float *dstDu, BufferDescriptor const &dstDuDesc,
│ │ │ │ -
98 float *dstDv, BufferDescriptor const &dstDvDesc,
│ │ │ │ -
99 float *dstDuu, BufferDescriptor const &dstDuuDesc,
│ │ │ │ -
100 float *dstDuv, BufferDescriptor const &dstDuvDesc,
│ │ │ │ -
101 float *dstDvv, BufferDescriptor const &dstDvvDesc,
│ │ │ │ -
102 int numPatchCoords,
│ │ │ │ -
103 const PatchCoord *patchCoords,
│ │ │ │ -
104 const PatchArray *patchArrayBuffer,
│ │ │ │ -
105 const int *patchIndexBuffer,
│ │ │ │ -
106 const PatchParam *patchParamBuffer);
│ │ │ │ -
107
│ │ │ │ -
108} // end namespace Osd
│ │ │ │ -
109
│ │ │ │ -
110} // end namespace OPENSUBDIV_VERSION
│ │ │ │ -
111using namespace OPENSUBDIV_VERSION;
│ │ │ │ -
112
│ │ │ │ -
113} // end namespace OpenSubdiv
│ │ │ │ -
114
│ │ │ │ -
115#endif // OPENSUBDIV3_OSD_TBB_KERNEL_H
│ │ │ │ +
37namespace Osd {
│ │ │ │ +
38
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
40public:
│ │ │ │ +
46
│ │ │ │ +
71 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ +
│ │ │ │ +
72 static bool EvalStencils(
│ │ │ │ +
73 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
74 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
75 STENCIL_TABLE const *stencilTable,
│ │ │ │ +
76 TbbEvaluator const *instance = NULL,
│ │ │ │ +
77 void *deviceContext = NULL) {
│ │ │ │ +
78
│ │ │ │ +
79 (void)instance; // unused
│ │ │ │ +
80 (void)deviceContext; // unused
│ │ │ │ +
81
│ │ │ │ +
82 if (stencilTable->GetNumStencils() == 0)
│ │ │ │ +
83 return false;
│ │ │ │ +
84
│ │ │ │ +
85 return EvalStencils(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ +
86 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ +
87 &stencilTable->GetSizes()[0],
│ │ │ │ +
88 &stencilTable->GetOffsets()[0],
│ │ │ │ +
89 &stencilTable->GetControlIndices()[0],
│ │ │ │ +
90 &stencilTable->GetWeights()[0],
│ │ │ │ +
91 /*start = */ 0,
│ │ │ │ +
92 /*end = */ stencilTable->GetNumStencils());
│ │ │ │ +
93 }
│ │ │ │ +
│ │ │ │ +
94
│ │ │ │ +
121 static bool EvalStencils(
│ │ │ │ +
122 const float *src, BufferDescriptor const &srcDesc,
│ │ │ │ +
123 float *dst, BufferDescriptor const &dstDesc,
│ │ │ │ +
124 const int * sizes,
│ │ │ │ +
125 const int * offsets,
│ │ │ │ +
126 const int * indices,
│ │ │ │ +
127 const float * weights,
│ │ │ │ +
128 int start, int end);
│ │ │ │ +
129
│ │ │ │ +
167 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ +
│ │ │ │ +
168 static bool EvalStencils(
│ │ │ │ +
169 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
170 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
171 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
172 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
173 STENCIL_TABLE const *stencilTable,
│ │ │ │ +
174 const TbbEvaluator *instance = NULL,
│ │ │ │ +
175 void * deviceContext = NULL) {
│ │ │ │ +
176
│ │ │ │ +
177 (void)instance; // unused
│ │ │ │ +
178 (void)deviceContext; // unused
│ │ │ │ +
179
│ │ │ │ +
180 return EvalStencils(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ +
181 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ +
182 duBuffer->BindCpuBuffer(), duDesc,
│ │ │ │ +
183 dvBuffer->BindCpuBuffer(), dvDesc,
│ │ │ │ +
184 &stencilTable->GetSizes()[0],
│ │ │ │ +
185 &stencilTable->GetOffsets()[0],
│ │ │ │ +
186 &stencilTable->GetControlIndices()[0],
│ │ │ │ +
187 &stencilTable->GetWeights()[0],
│ │ │ │ +
188 &stencilTable->GetDuWeights()[0],
│ │ │ │ +
189 &stencilTable->GetDvWeights()[0],
│ │ │ │ +
190 /*start = */ 0,
│ │ │ │ +
191 /*end = */ stencilTable->GetNumStencils());
│ │ │ │ +
192 }
│ │ │ │ +
│ │ │ │ +
193
│ │ │ │ +
234 static bool EvalStencils(
│ │ │ │ +
235 const float *src, BufferDescriptor const &srcDesc,
│ │ │ │ +
236 float *dst, BufferDescriptor const &dstDesc,
│ │ │ │ +
237 float *du, BufferDescriptor const &duDesc,
│ │ │ │ +
238 float *dv, BufferDescriptor const &dvDesc,
│ │ │ │ +
239 const int * sizes,
│ │ │ │ +
240 const int * offsets,
│ │ │ │ +
241 const int * indices,
│ │ │ │ +
242 const float * weights,
│ │ │ │ +
243 const float * duWeights,
│ │ │ │ +
244 const float * dvWeights,
│ │ │ │ +
245 int start, int end);
│ │ │ │ +
246
│ │ │ │ +
302 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ +
│ │ │ │ +
303 static bool EvalStencils(
│ │ │ │ +
304 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
305 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
306 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
307 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
308 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ +
309 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ +
310 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ +
311 STENCIL_TABLE const *stencilTable,
│ │ │ │ +
312 const TbbEvaluator *instance = NULL,
│ │ │ │ +
313 void * deviceContext = NULL) {
│ │ │ │ +
314
│ │ │ │ +
315 (void)instance; // unused
│ │ │ │ +
316 (void)deviceContext; // unused
│ │ │ │ +
317
│ │ │ │ +
318 return EvalStencils(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ +
319 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ +
320 duBuffer->BindCpuBuffer(), duDesc,
│ │ │ │ +
321 dvBuffer->BindCpuBuffer(), dvDesc,
│ │ │ │ +
322 duuBuffer->BindCpuBuffer(), duuDesc,
│ │ │ │ +
323 duvBuffer->BindCpuBuffer(), duvDesc,
│ │ │ │ +
324 dvvBuffer->BindCpuBuffer(), dvvDesc,
│ │ │ │ +
325 &stencilTable->GetSizes()[0],
│ │ │ │ +
326 &stencilTable->GetOffsets()[0],
│ │ │ │ +
327 &stencilTable->GetControlIndices()[0],
│ │ │ │ +
328 &stencilTable->GetWeights()[0],
│ │ │ │ +
329 &stencilTable->GetDuWeights()[0],
│ │ │ │ +
330 &stencilTable->GetDvWeights()[0],
│ │ │ │ +
331 &stencilTable->GetDuuWeights()[0],
│ │ │ │ +
332 &stencilTable->GetDuvWeights()[0],
│ │ │ │ +
333 &stencilTable->GetDvvWeights()[0],
│ │ │ │ +
334 /*start = */ 0,
│ │ │ │ +
335 /*end = */ stencilTable->GetNumStencils());
│ │ │ │ +
336 }
│ │ │ │ +
│ │ │ │ +
337
│ │ │ │ +
399 static bool EvalStencils(
│ │ │ │ +
400 const float *src, BufferDescriptor const &srcDesc,
│ │ │ │ +
401 float *dst, BufferDescriptor const &dstDesc,
│ │ │ │ +
402 float *du, BufferDescriptor const &duDesc,
│ │ │ │ +
403 float *dv, BufferDescriptor const &dvDesc,
│ │ │ │ +
404 float *duu, BufferDescriptor const &duuDesc,
│ │ │ │ +
405 float *duv, BufferDescriptor const &duvDesc,
│ │ │ │ +
406 float *dvv, BufferDescriptor const &dvvDesc,
│ │ │ │ +
407 const int * sizes,
│ │ │ │ +
408 const int * offsets,
│ │ │ │ +
409 const int * indices,
│ │ │ │ +
410 const float * weights,
│ │ │ │ +
411 const float * duWeights,
│ │ │ │ +
412 const float * dvWeights,
│ │ │ │ +
413 const float * duuWeights,
│ │ │ │ +
414 const float * duvWeights,
│ │ │ │ +
415 const float * dvvWeights,
│ │ │ │ +
416 int start, int end);
│ │ │ │ +
417
│ │ │ │ +
423
│ │ │ │ +
452 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
453 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ +
454 static bool EvalPatches(
│ │ │ │ +
455 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
456 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
457 int numPatchCoords,
│ │ │ │ +
458 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
459 PATCH_TABLE *patchTable,
│ │ │ │ +
460 TbbEvaluator const *instance = NULL,
│ │ │ │ +
461 void * deviceContext = NULL) {
│ │ │ │ +
462
│ │ │ │ +
463 (void)instance; // unused
│ │ │ │ +
464 (void)deviceContext; // unused
│ │ │ │ +
465
│ │ │ │ +
466 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ +
467 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ +
468 numPatchCoords,
│ │ │ │ +
469 (const PatchCoord*)patchCoords->BindCpuBuffer(),
│ │ │ │ +
470 patchTable->GetPatchArrayBuffer(),
│ │ │ │ +
471 patchTable->GetPatchIndexBuffer(),
│ │ │ │ +
472 patchTable->GetPatchParamBuffer());
│ │ │ │ +
473 }
│ │ │ │ +
│ │ │ │ +
474
│ │ │ │ +
515 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
516 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ +
517 static bool EvalPatches(
│ │ │ │ +
518 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
519 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
520 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
521 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
522 int numPatchCoords,
│ │ │ │ +
523 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
524 PATCH_TABLE *patchTable,
│ │ │ │ +
525 TbbEvaluator const *instance = NULL,
│ │ │ │ +
526 void * deviceContext = NULL) {
│ │ │ │ +
527
│ │ │ │ +
528 (void)instance; // unused
│ │ │ │ +
529 (void)deviceContext; // unused
│ │ │ │ +
530
│ │ │ │ +
531 // XXX: PatchCoords is somewhat abusing vertex primvar buffer interop.
│ │ │ │ +
532 // ideally all buffer classes should have templated by datatype
│ │ │ │ +
533 // so that downcast isn't needed there.
│ │ │ │ +
534 // (e.g. Osd::CpuBuffer<PatchCoord> )
│ │ │ │ +
535 //
│ │ │ │ +
536 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ +
537 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ +
538 duBuffer->BindCpuBuffer(), duDesc,
│ │ │ │ +
539 dvBuffer->BindCpuBuffer(), dvDesc,
│ │ │ │ +
540 numPatchCoords,
│ │ │ │ +
541 (const PatchCoord*)patchCoords->BindCpuBuffer(),
│ │ │ │ +
542 patchTable->GetPatchArrayBuffer(),
│ │ │ │ +
543 patchTable->GetPatchIndexBuffer(),
│ │ │ │ +
544 patchTable->GetPatchParamBuffer());
│ │ │ │ +
545 }
│ │ │ │ +
│ │ │ │ +
546
│ │ │ │ +
605 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
606 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ +
607 static bool EvalPatches(
│ │ │ │ +
608 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
609 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
610 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
611 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
612 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ +
613 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ +
614 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ +
615 int numPatchCoords,
│ │ │ │ +
616 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
617 PATCH_TABLE *patchTable,
│ │ │ │ +
618 TbbEvaluator const *instance = NULL,
│ │ │ │ +
619 void * deviceContext = NULL) {
│ │ │ │ +
620
│ │ │ │ +
621 (void)instance; // unused
│ │ │ │ +
622 (void)deviceContext; // unused
│ │ │ │ +
623
│ │ │ │ +
624 // XXX: PatchCoords is somewhat abusing vertex primvar buffer interop.
│ │ │ │ +
625 // ideally all buffer classes should have templated by datatype
│ │ │ │ +
626 // so that downcast isn't needed there.
│ │ │ │ +
627 // (e.g. Osd::CpuBuffer<PatchCoord> )
│ │ │ │ +
628 //
│ │ │ │ +
629 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ +
630 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ +
631 duBuffer->BindCpuBuffer(), duDesc,
│ │ │ │ +
632 dvBuffer->BindCpuBuffer(), dvDesc,
│ │ │ │ +
633 duuBuffer->BindCpuBuffer(), duuDesc,
│ │ │ │ +
634 duvBuffer->BindCpuBuffer(), duvDesc,
│ │ │ │ +
635 dvvBuffer->BindCpuBuffer(), dvvDesc,
│ │ │ │ +
636 numPatchCoords,
│ │ │ │ +
637 (const PatchCoord*)patchCoords->BindCpuBuffer(),
│ │ │ │ +
638 patchTable->GetPatchArrayBuffer(),
│ │ │ │ +
639 patchTable->GetPatchIndexBuffer(),
│ │ │ │ +
640 patchTable->GetPatchParamBuffer());
│ │ │ │ +
641 }
│ │ │ │ +
│ │ │ │ +
642
│ │ │ │ +
670 static bool EvalPatches(
│ │ │ │ +
671 const float *src, BufferDescriptor const &srcDesc,
│ │ │ │ +
672 float *dst, BufferDescriptor const &dstDesc,
│ │ │ │ +
673 int numPatchCoords,
│ │ │ │ +
674 const PatchCoord *patchCoords,
│ │ │ │ +
675 const PatchArray *patchArrays,
│ │ │ │ +
676 const int *patchIndexBuffer,
│ │ │ │ +
677 const PatchParam *patchParamBuffer);
│ │ │ │ +
678
│ │ │ │ +
716 static bool EvalPatches(
│ │ │ │ +
717 const float *src, BufferDescriptor const &srcDesc,
│ │ │ │ +
718 float *dst, BufferDescriptor const &dstDesc,
│ │ │ │ +
719 float *du, BufferDescriptor const &duDesc,
│ │ │ │ +
720 float *dv, BufferDescriptor const &dvDesc,
│ │ │ │ +
721 int numPatchCoords,
│ │ │ │ +
722 PatchCoord const *patchCoords,
│ │ │ │ +
723 PatchArray const *patchArrays,
│ │ │ │ +
724 const int *patchIndexBuffer,
│ │ │ │ +
725 PatchParam const *patchParamBuffer);
│ │ │ │ +
726
│ │ │ │ +
779 static bool EvalPatches(
│ │ │ │ +
780 const float *src, BufferDescriptor const &srcDesc,
│ │ │ │ +
781 float *dst, BufferDescriptor const &dstDesc,
│ │ │ │ +
782 float *du, BufferDescriptor const &duDesc,
│ │ │ │ +
783 float *dv, BufferDescriptor const &dvDesc,
│ │ │ │ +
784 float *duu, BufferDescriptor const &duuDesc,
│ │ │ │ +
785 float *duv, BufferDescriptor const &duvDesc,
│ │ │ │ +
786 float *dvv, BufferDescriptor const &dvvDesc,
│ │ │ │ +
787 int numPatchCoords,
│ │ │ │ +
788 PatchCoord const *patchCoords,
│ │ │ │ +
789 PatchArray const *patchArrays,
│ │ │ │ +
790 const int *patchIndexBuffer,
│ │ │ │ +
791 PatchParam const *patchParamBuffer);
│ │ │ │ +
792
│ │ │ │ +
821 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
822 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
824 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
825 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
826 int numPatchCoords,
│ │ │ │ +
827 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
828 PATCH_TABLE *patchTable,
│ │ │ │ +
829 TbbEvaluator const *instance = NULL,
│ │ │ │ +
830 void * deviceContext = NULL) {
│ │ │ │ +
831
│ │ │ │ +
832 (void)instance; // unused
│ │ │ │ +
833 (void)deviceContext; // unused
│ │ │ │ +
834
│ │ │ │ +
835 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ +
836 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ +
837 numPatchCoords,
│ │ │ │ +
838 (const PatchCoord*)patchCoords->BindCpuBuffer(),
│ │ │ │ +
839 patchTable->GetVaryingPatchArrayBuffer(),
│ │ │ │ +
840 patchTable->GetVaryingPatchIndexBuffer(),
│ │ │ │ +
841 patchTable->GetPatchParamBuffer());
│ │ │ │ +
842 }
│ │ │ │ +
│ │ │ │ +
843
│ │ │ │ +
884 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
885 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
887 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
888 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
889 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
890 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
891 int numPatchCoords,
│ │ │ │ +
892 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
893 PATCH_TABLE *patchTable,
│ │ │ │ +
894 TbbEvaluator const *instance = NULL,
│ │ │ │ +
895 void * deviceContext = NULL) {
│ │ │ │ +
896
│ │ │ │ +
897 (void)instance; // unused
│ │ │ │ +
898 (void)deviceContext; // unused
│ │ │ │ +
899
│ │ │ │ +
900 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ +
901 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ +
902 duBuffer->BindCpuBuffer(), duDesc,
│ │ │ │ +
903 dvBuffer->BindCpuBuffer(), dvDesc,
│ │ │ │ +
904 numPatchCoords,
│ │ │ │ +
905 (const PatchCoord*)patchCoords->BindCpuBuffer(),
│ │ │ │ +
906 patchTable->GetVaryingPatchArrayBuffer(),
│ │ │ │ +
907 patchTable->GetVaryingPatchIndexBuffer(),
│ │ │ │ +
908 patchTable->GetPatchParamBuffer());
│ │ │ │ +
909 }
│ │ │ │ +
│ │ │ │ +
910
│ │ │ │ +
969 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
970 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
972 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
973 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
974 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
975 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
976 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ +
977 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ +
978 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ +
979 int numPatchCoords,
│ │ │ │ +
980 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
981 PATCH_TABLE *patchTable,
│ │ │ │ +
982 TbbEvaluator const *instance = NULL,
│ │ │ │ +
983 void * deviceContext = NULL) {
│ │ │ │ +
984
│ │ │ │ +
985 (void)instance; // unused
│ │ │ │ +
986 (void)deviceContext; // unused
│ │ │ │ +
987
│ │ │ │ +
988 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ +
989 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ +
990 duBuffer->BindCpuBuffer(), duDesc,
│ │ │ │ +
991 dvBuffer->BindCpuBuffer(), dvDesc,
│ │ │ │ +
992 duuBuffer->BindCpuBuffer(), duuDesc,
│ │ │ │ +
993 duvBuffer->BindCpuBuffer(), duvDesc,
│ │ │ │ +
994 dvvBuffer->BindCpuBuffer(), dvvDesc,
│ │ │ │ +
995 numPatchCoords,
│ │ │ │ +
996 (const PatchCoord*)patchCoords->BindCpuBuffer(),
│ │ │ │ +
997 patchTable->GetVaryingPatchArrayBuffer(),
│ │ │ │ +
998 patchTable->GetVaryingPatchIndexBuffer(),
│ │ │ │ +
999 patchTable->GetPatchParamBuffer());
│ │ │ │ +
1000 }
│ │ │ │ +
│ │ │ │ +
1001
│ │ │ │ +
1032 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1033 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1035 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1036 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1037 int numPatchCoords,
│ │ │ │ +
1038 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1039 PATCH_TABLE *patchTable,
│ │ │ │ +
1040 int fvarChannel,
│ │ │ │ +
1041 TbbEvaluator const *instance = NULL,
│ │ │ │ +
1042 void * deviceContext = NULL) {
│ │ │ │ +
1043
│ │ │ │ +
1044 (void)instance; // unused
│ │ │ │ +
1045 (void)deviceContext; // unused
│ │ │ │ +
1046
│ │ │ │ +
1047 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ +
1048 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ +
1049 numPatchCoords,
│ │ │ │ +
1050 (const PatchCoord*)patchCoords->BindCpuBuffer(),
│ │ │ │ +
1051 patchTable->GetFVarPatchArrayBuffer(fvarChannel),
│ │ │ │ +
1052 patchTable->GetFVarPatchIndexBuffer(fvarChannel),
│ │ │ │ +
1053 patchTable->GetFVarPatchParamBuffer(fvarChannel));
│ │ │ │ +
1054 }
│ │ │ │ +
│ │ │ │ +
1055
│ │ │ │ +
1098 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1099 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1101 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1102 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1103 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
1104 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
1105 int numPatchCoords,
│ │ │ │ +
1106 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1107 PATCH_TABLE *patchTable,
│ │ │ │ +
1108 int fvarChannel,
│ │ │ │ +
1109 TbbEvaluator const *instance = NULL,
│ │ │ │ +
1110 void * deviceContext = NULL) {
│ │ │ │ +
1111
│ │ │ │ +
1112 (void)instance; // unused
│ │ │ │ +
1113 (void)deviceContext; // unused
│ │ │ │ +
1114
│ │ │ │ +
1115 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ +
1116 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ +
1117 duBuffer->BindCpuBuffer(), duDesc,
│ │ │ │ +
1118 dvBuffer->BindCpuBuffer(), dvDesc,
│ │ │ │ +
1119 numPatchCoords,
│ │ │ │ +
1120 (const PatchCoord*)patchCoords->BindCpuBuffer(),
│ │ │ │ +
1121 patchTable->GetFVarPatchArrayBuffer(fvarChannel),
│ │ │ │ +
1122 patchTable->GetFVarPatchIndexBuffer(fvarChannel),
│ │ │ │ +
1123 patchTable->GetFVarPatchParamBuffer(fvarChannel));
│ │ │ │ +
1124 }
│ │ │ │ +
│ │ │ │ +
1125
│ │ │ │ +
1186 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1187 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1189 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1190 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1191 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
1192 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
1193 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ +
1194 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ +
1195 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ +
1196 int numPatchCoords,
│ │ │ │ +
1197 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1198 PATCH_TABLE *patchTable,
│ │ │ │ +
1199 int fvarChannel,
│ │ │ │ +
1200 TbbEvaluator const *instance = NULL,
│ │ │ │ +
1201 void * deviceContext = NULL) {
│ │ │ │ +
1202
│ │ │ │ +
1203 (void)instance; // unused
│ │ │ │ +
1204 (void)deviceContext; // unused
│ │ │ │ +
1205
│ │ │ │ +
1206 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ +
1207 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ +
1208 duBuffer->BindCpuBuffer(), duDesc,
│ │ │ │ +
1209 dvBuffer->BindCpuBuffer(), dvDesc,
│ │ │ │ +
1210 duuBuffer->BindCpuBuffer(), duuDesc,
│ │ │ │ +
1211 duvBuffer->BindCpuBuffer(), duvDesc,
│ │ │ │ +
1212 dvvBuffer->BindCpuBuffer(), dvvDesc,
│ │ │ │ +
1213 numPatchCoords,
│ │ │ │ +
1214 (const PatchCoord*)patchCoords->BindCpuBuffer(),
│ │ │ │ +
1215 patchTable->GetFVarPatchArrayBuffer(fvarChannel),
│ │ │ │ +
1216 patchTable->GetFVarPatchIndexBuffer(fvarChannel),
│ │ │ │ +
1217 patchTable->GetFVarPatchParamBuffer(fvarChannel));
│ │ │ │ +
1218 }
│ │ │ │ +
│ │ │ │ +
1219
│ │ │ │ +
1225
│ │ │ │ +
1227 static void Synchronize(void *deviceContext = NULL);
│ │ │ │ +
1228
│ │ │ │ +
1233 static void SetNumThreads(int numThreads);
│ │ │ │ +
1234};
│ │ │ │ +
│ │ │ │ +
1235
│ │ │ │ +
1236
│ │ │ │ +
1237} // end namespace Osd
│ │ │ │ +
1238
│ │ │ │ +
1239} // end namespace OPENSUBDIV_VERSION
│ │ │ │ +
1240using namespace OPENSUBDIV_VERSION;
│ │ │ │ +
1241
│ │ │ │ +
1242} // end namespace OpenSubdiv
│ │ │ │ +
1243
│ │ │ │ +
1244
│ │ │ │ +
1245#endif // OPENSUBDIV3_OSD_TBB_EVALUATOR_H
│ │ │ │ │ │ │ │ -
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)
│ │ │ │ -
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)
│ │ │ │
BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....
│ │ │ │ + │ │ │ │ +
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)
Generic static eval stencils function. This function has a same signature as other device kernels hav...
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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)
Generic static eval stencils function with derivatives. This function has a same signature as other d...
│ │ │ │ +
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)
Static eval stencils function which takes raw CPU pointers for input and output.
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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)
Generic limit eval function with derivatives. This function has a same signature as other device kern...
│ │ │ │ +
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)
Static eval stencils function with derivatives, which takes raw CPU pointers for input and output.
│ │ │ │ +
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)
Static eval stencils function with derivatives, which takes raw CPU pointers for input and output.
│ │ │ │ +
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)
Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...
│ │ │ │ +
static void Synchronize(void *deviceContext=NULL)
synchronize all asynchronous computation invoked on this device.
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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)
Generic limit eval function with derivatives. This function has a same signature as other device kern...
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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)
Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...
│ │ │ │ +
static void SetNumThreads(int numThreads)
Deprecated. Client code should initialize TBB.
│ │ │ │ +
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)
Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...
│ │ │ │ +
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)
Generic static eval stencils function with derivatives. This function has a same signature as other d...
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │
Coordinates set on a patch table.
Definition types.h:42
│ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ -tbbKernel.h │ │ │ │ │ +tbbEvaluator.h │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// │ │ │ │ │ -2// Copyright 2013 Pixar │ │ │ │ │ +2// Copyright 2015 Pixar │ │ │ │ │ 3// │ │ │ │ │ 4// Licensed under the Apache License, Version 2.0 (the "Apache License") │ │ │ │ │ 5// with the following modification; you may not use this file except in │ │ │ │ │ 6// compliance with the Apache License and the following modification to it: │ │ │ │ │ 7// Section 6. Trademarks. is deleted and replaced with: │ │ │ │ │ 8// │ │ │ │ │ 9// 6. Trademarks. This License does not grant permission to use the trade │ │ │ │ │ @@ -24,126 +24,657 @@ │ │ │ │ │ 18// Unless required by applicable law or agreed to in writing, software │ │ │ │ │ 19// distributed under the Apache License with the above modification is │ │ │ │ │ 20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY │ │ │ │ │ 21// KIND, either express or implied. See the Apache License for the specific │ │ │ │ │ 22// language governing permissions and limitations under the Apache License. │ │ │ │ │ 23// │ │ │ │ │ 24 │ │ │ │ │ -25#ifndef OPENSUBDIV3_OSD_TBB_KERNEL_H │ │ │ │ │ -26#define OPENSUBDIV3_OSD_TBB_KERNEL_H │ │ │ │ │ +25#ifndef OPENSUBDIV3_OSD_TBB_EVALUATOR_H │ │ │ │ │ +26#define OPENSUBDIV3_OSD_TBB_EVALUATOR_H │ │ │ │ │ 27 │ │ │ │ │ 28#include "../version.h" │ │ │ │ │ -29#include "../far/patchDescriptor.h" │ │ │ │ │ -30#include "../far/patchParam.h" │ │ │ │ │ +29#include "../osd/bufferDescriptor.h" │ │ │ │ │ +30#include "../osd/types.h" │ │ │ │ │ 31 │ │ │ │ │ -32namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ -33namespace OPENSUBDIV_VERSION { │ │ │ │ │ -34 │ │ │ │ │ -35namespace Osd { │ │ │ │ │ +32#include │ │ │ │ │ +33 │ │ │ │ │ +34namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ +35namespace OPENSUBDIV_VERSION { │ │ │ │ │ 36 │ │ │ │ │ -37struct PatchArray; │ │ │ │ │ -38struct PatchCoord; │ │ │ │ │ -39struct PatchParam; │ │ │ │ │ -40struct BufferDescriptor; │ │ │ │ │ -41 │ │ │ │ │ -42void │ │ │ │ │ -_4_3_T_b_b_E_v_a_l_S_t_e_n_c_i_l_s(float const * src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -44 float * dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -45 int const * sizes, │ │ │ │ │ -46 int const * offsets, │ │ │ │ │ -47 int const * indices, │ │ │ │ │ -48 float const * weights, │ │ │ │ │ -49 int start, int end); │ │ │ │ │ -50 │ │ │ │ │ -51void │ │ │ │ │ -_5_2_T_b_b_E_v_a_l_S_t_e_n_c_i_l_s(float const * src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -53 float * dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -54 float * dstDu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDuDesc, │ │ │ │ │ -55 float * dstDv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDvDesc, │ │ │ │ │ -56 int const * sizes, │ │ │ │ │ -57 int const * offsets, │ │ │ │ │ -58 int const * indices, │ │ │ │ │ -59 float const * weights, │ │ │ │ │ -60 float const * duWeights, │ │ │ │ │ -61 float const * dvWeights, │ │ │ │ │ -62 int start, int end); │ │ │ │ │ -63 │ │ │ │ │ -64void │ │ │ │ │ -_6_5_T_b_b_E_v_a_l_S_t_e_n_c_i_l_s(float const * src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -66 float * dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -67 float * dstDu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDuDesc, │ │ │ │ │ -68 float * dstDv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDvDesc, │ │ │ │ │ -69 float * dstDuu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDuuDesc, │ │ │ │ │ -70 float * dstDuv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDuvDesc, │ │ │ │ │ -71 float * dstDvv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDvvDesc, │ │ │ │ │ -72 int const * sizes, │ │ │ │ │ -73 int const * offsets, │ │ │ │ │ -74 int const * indices, │ │ │ │ │ -75 float const * weights, │ │ │ │ │ -76 float const * duWeights, │ │ │ │ │ -77 float const * dvWeights, │ │ │ │ │ -78 float const * duuWeights, │ │ │ │ │ -79 float const * duvWeights, │ │ │ │ │ -80 float const * dvvWeights, │ │ │ │ │ -81 int start, int end); │ │ │ │ │ -82 │ │ │ │ │ -83void │ │ │ │ │ -_8_4_T_b_b_E_v_a_l_P_a_t_c_h_e_s(float const *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -85 float *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -86 float *dstDu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDuDesc, │ │ │ │ │ -87 float *dstDv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDvDesc, │ │ │ │ │ -88 int numPatchCoords, │ │ │ │ │ -89 const _P_a_t_c_h_C_o_o_r_d *patchCoords, │ │ │ │ │ -90 const _P_a_t_c_h_A_r_r_a_y *patchArrayBuffer, │ │ │ │ │ -91 const int *patchIndexBuffer, │ │ │ │ │ -92 const _P_a_t_c_h_P_a_r_a_m *patchParamBuffer); │ │ │ │ │ -93 │ │ │ │ │ -94void │ │ │ │ │ -_9_5_T_b_b_E_v_a_l_P_a_t_c_h_e_s(float const *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -96 float *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -97 float *dstDu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDuDesc, │ │ │ │ │ -98 float *dstDv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDvDesc, │ │ │ │ │ -99 float *dstDuu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDuuDesc, │ │ │ │ │ -100 float *dstDuv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDuvDesc, │ │ │ │ │ -101 float *dstDvv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDvvDesc, │ │ │ │ │ -102 int numPatchCoords, │ │ │ │ │ -103 const _P_a_t_c_h_C_o_o_r_d *patchCoords, │ │ │ │ │ -104 const _P_a_t_c_h_A_r_r_a_y *patchArrayBuffer, │ │ │ │ │ -105 const int *patchIndexBuffer, │ │ │ │ │ -106 const _P_a_t_c_h_P_a_r_a_m *patchParamBuffer); │ │ │ │ │ -107 │ │ │ │ │ -108} // end namespace Osd │ │ │ │ │ -109 │ │ │ │ │ -110} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ -111using namespace OPENSUBDIV_VERSION; │ │ │ │ │ -112 │ │ │ │ │ -113} // end namespace OpenSubdiv │ │ │ │ │ -114 │ │ │ │ │ -115#endif // OPENSUBDIV3_OSD_TBB_KERNEL_H │ │ │ │ │ +37namespace Osd { │ │ │ │ │ +38 │ │ │ │ │ +_3_9class _T_b_b_E_v_a_l_u_a_t_o_r { │ │ │ │ │ +40public: │ │ │ │ │ +46 │ │ │ │ │ +71 template │ │ │ │ │ +_7_2 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ +73 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +74 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +75 STENCIL_TABLE const *stencilTable, │ │ │ │ │ +76 _T_b_b_E_v_a_l_u_a_t_o_r const *instance = NULL, │ │ │ │ │ +77 void *deviceContext = NULL) { │ │ │ │ │ +78 │ │ │ │ │ +79 (void)instance; // unused │ │ │ │ │ +80 (void)deviceContext; // unused │ │ │ │ │ +81 │ │ │ │ │ +82 if (stencilTable->GetNumStencils() == 0) │ │ │ │ │ +83 return false; │ │ │ │ │ +84 │ │ │ │ │ +85 return _E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ +86 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ +87 &stencilTable->GetSizes()[0], │ │ │ │ │ +88 &stencilTable->GetOffsets()[0], │ │ │ │ │ +89 &stencilTable->GetControlIndices()[0], │ │ │ │ │ +90 &stencilTable->GetWeights()[0], │ │ │ │ │ +91 /*start = */ 0, │ │ │ │ │ +92 /*end = */ stencilTable->GetNumStencils()); │ │ │ │ │ +93 } │ │ │ │ │ +94 │ │ │ │ │ +_1_2_1 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ +122 const float *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +123 float *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +124 const int * sizes, │ │ │ │ │ +125 const int * offsets, │ │ │ │ │ +126 const int * indices, │ │ │ │ │ +127 const float * weights, │ │ │ │ │ +128 int start, int end); │ │ │ │ │ +129 │ │ │ │ │ +167 template │ │ │ │ │ +_1_6_8 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ +169 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +170 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +171 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +172 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +173 STENCIL_TABLE const *stencilTable, │ │ │ │ │ +174 const _T_b_b_E_v_a_l_u_a_t_o_r *instance = NULL, │ │ │ │ │ +175 void * deviceContext = NULL) { │ │ │ │ │ +176 │ │ │ │ │ +177 (void)instance; // unused │ │ │ │ │ +178 (void)deviceContext; // unused │ │ │ │ │ +179 │ │ │ │ │ +180 return _E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ +181 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ +182 duBuffer->BindCpuBuffer(), duDesc, │ │ │ │ │ +183 dvBuffer->BindCpuBuffer(), dvDesc, │ │ │ │ │ +184 &stencilTable->GetSizes()[0], │ │ │ │ │ +185 &stencilTable->GetOffsets()[0], │ │ │ │ │ +186 &stencilTable->GetControlIndices()[0], │ │ │ │ │ +187 &stencilTable->GetWeights()[0], │ │ │ │ │ +188 &stencilTable->GetDuWeights()[0], │ │ │ │ │ +189 &stencilTable->GetDvWeights()[0], │ │ │ │ │ +190 /*start = */ 0, │ │ │ │ │ +191 /*end = */ stencilTable->GetNumStencils()); │ │ │ │ │ +192 } │ │ │ │ │ +193 │ │ │ │ │ +_2_3_4 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ +235 const float *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +236 float *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +237 float *du, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +238 float *dv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +239 const int * sizes, │ │ │ │ │ +240 const int * offsets, │ │ │ │ │ +241 const int * indices, │ │ │ │ │ +242 const float * weights, │ │ │ │ │ +243 const float * duWeights, │ │ │ │ │ +244 const float * dvWeights, │ │ │ │ │ +245 int start, int end); │ │ │ │ │ +246 │ │ │ │ │ +302 template │ │ │ │ │ +_3_0_3 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ +304 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +305 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +306 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +307 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +308 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +309 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +310 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +311 STENCIL_TABLE const *stencilTable, │ │ │ │ │ +312 const _T_b_b_E_v_a_l_u_a_t_o_r *instance = NULL, │ │ │ │ │ +313 void * deviceContext = NULL) { │ │ │ │ │ +314 │ │ │ │ │ +315 (void)instance; // unused │ │ │ │ │ +316 (void)deviceContext; // unused │ │ │ │ │ +317 │ │ │ │ │ +318 return _E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ +319 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ +320 duBuffer->BindCpuBuffer(), duDesc, │ │ │ │ │ +321 dvBuffer->BindCpuBuffer(), dvDesc, │ │ │ │ │ +322 duuBuffer->BindCpuBuffer(), duuDesc, │ │ │ │ │ +323 duvBuffer->BindCpuBuffer(), duvDesc, │ │ │ │ │ +324 dvvBuffer->BindCpuBuffer(), dvvDesc, │ │ │ │ │ +325 &stencilTable->GetSizes()[0], │ │ │ │ │ +326 &stencilTable->GetOffsets()[0], │ │ │ │ │ +327 &stencilTable->GetControlIndices()[0], │ │ │ │ │ +328 &stencilTable->GetWeights()[0], │ │ │ │ │ +329 &stencilTable->GetDuWeights()[0], │ │ │ │ │ +330 &stencilTable->GetDvWeights()[0], │ │ │ │ │ +331 &stencilTable->GetDuuWeights()[0], │ │ │ │ │ +332 &stencilTable->GetDuvWeights()[0], │ │ │ │ │ +333 &stencilTable->GetDvvWeights()[0], │ │ │ │ │ +334 /*start = */ 0, │ │ │ │ │ +335 /*end = */ stencilTable->GetNumStencils()); │ │ │ │ │ +336 } │ │ │ │ │ +337 │ │ │ │ │ +_3_9_9 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ +400 const float *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +401 float *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +402 float *du, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +403 float *dv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +404 float *duu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +405 float *duv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +406 float *dvv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +407 const int * sizes, │ │ │ │ │ +408 const int * offsets, │ │ │ │ │ +409 const int * indices, │ │ │ │ │ +410 const float * weights, │ │ │ │ │ +411 const float * duWeights, │ │ │ │ │ +412 const float * dvWeights, │ │ │ │ │ +413 const float * duuWeights, │ │ │ │ │ +414 const float * duvWeights, │ │ │ │ │ +415 const float * dvvWeights, │ │ │ │ │ +416 int start, int end); │ │ │ │ │ +417 │ │ │ │ │ +423 │ │ │ │ │ +452 template │ │ │ │ │ +_4_5_4 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ +455 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +456 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +457 int numPatchCoords, │ │ │ │ │ +458 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +459 PATCH_TABLE *patchTable, │ │ │ │ │ +460 _T_b_b_E_v_a_l_u_a_t_o_r const *instance = NULL, │ │ │ │ │ +461 void * deviceContext = NULL) { │ │ │ │ │ +462 │ │ │ │ │ +463 (void)instance; // unused │ │ │ │ │ +464 (void)deviceContext; // unused │ │ │ │ │ +465 │ │ │ │ │ +466 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ +467 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ +468 numPatchCoords, │ │ │ │ │ +469 (const _P_a_t_c_h_C_o_o_r_d*)patchCoords->BindCpuBuffer(), │ │ │ │ │ +470 patchTable->GetPatchArrayBuffer(), │ │ │ │ │ +471 patchTable->GetPatchIndexBuffer(), │ │ │ │ │ +472 patchTable->GetPatchParamBuffer()); │ │ │ │ │ +473 } │ │ │ │ │ +474 │ │ │ │ │ +515 template │ │ │ │ │ +_5_1_7 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ +518 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +519 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +520 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +521 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +522 int numPatchCoords, │ │ │ │ │ +523 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +524 PATCH_TABLE *patchTable, │ │ │ │ │ +525 _T_b_b_E_v_a_l_u_a_t_o_r const *instance = NULL, │ │ │ │ │ +526 void * deviceContext = NULL) { │ │ │ │ │ +527 │ │ │ │ │ +528 (void)instance; // unused │ │ │ │ │ +529 (void)deviceContext; // unused │ │ │ │ │ +530 │ │ │ │ │ +531 // XXX: PatchCoords is somewhat abusing vertex primvar buffer interop. │ │ │ │ │ +532 // ideally all buffer classes should have templated by datatype │ │ │ │ │ +533 // so that downcast isn't needed there. │ │ │ │ │ +534 // (e.g. Osd::CpuBuffer ) │ │ │ │ │ +535 // │ │ │ │ │ +536 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ +537 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ +538 duBuffer->BindCpuBuffer(), duDesc, │ │ │ │ │ +539 dvBuffer->BindCpuBuffer(), dvDesc, │ │ │ │ │ +540 numPatchCoords, │ │ │ │ │ +541 (const _P_a_t_c_h_C_o_o_r_d*)patchCoords->BindCpuBuffer(), │ │ │ │ │ +542 patchTable->GetPatchArrayBuffer(), │ │ │ │ │ +543 patchTable->GetPatchIndexBuffer(), │ │ │ │ │ +544 patchTable->GetPatchParamBuffer()); │ │ │ │ │ +545 } │ │ │ │ │ +546 │ │ │ │ │ +605 template │ │ │ │ │ +_6_0_7 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ +608 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +609 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +610 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +611 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +612 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +613 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +614 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +615 int numPatchCoords, │ │ │ │ │ +616 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +617 PATCH_TABLE *patchTable, │ │ │ │ │ +618 _T_b_b_E_v_a_l_u_a_t_o_r const *instance = NULL, │ │ │ │ │ +619 void * deviceContext = NULL) { │ │ │ │ │ +620 │ │ │ │ │ +621 (void)instance; // unused │ │ │ │ │ +622 (void)deviceContext; // unused │ │ │ │ │ +623 │ │ │ │ │ +624 // XXX: PatchCoords is somewhat abusing vertex primvar buffer interop. │ │ │ │ │ +625 // ideally all buffer classes should have templated by datatype │ │ │ │ │ +626 // so that downcast isn't needed there. │ │ │ │ │ +627 // (e.g. Osd::CpuBuffer ) │ │ │ │ │ +628 // │ │ │ │ │ +629 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ +630 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ +631 duBuffer->BindCpuBuffer(), duDesc, │ │ │ │ │ +632 dvBuffer->BindCpuBuffer(), dvDesc, │ │ │ │ │ +633 duuBuffer->BindCpuBuffer(), duuDesc, │ │ │ │ │ +634 duvBuffer->BindCpuBuffer(), duvDesc, │ │ │ │ │ +635 dvvBuffer->BindCpuBuffer(), dvvDesc, │ │ │ │ │ +636 numPatchCoords, │ │ │ │ │ +637 (const _P_a_t_c_h_C_o_o_r_d*)patchCoords->BindCpuBuffer(), │ │ │ │ │ +638 patchTable->GetPatchArrayBuffer(), │ │ │ │ │ +639 patchTable->GetPatchIndexBuffer(), │ │ │ │ │ +640 patchTable->GetPatchParamBuffer()); │ │ │ │ │ +641 } │ │ │ │ │ +642 │ │ │ │ │ +_6_7_0 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ +671 const float *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +672 float *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +673 int numPatchCoords, │ │ │ │ │ +674 const _P_a_t_c_h_C_o_o_r_d *patchCoords, │ │ │ │ │ +675 const _P_a_t_c_h_A_r_r_a_y *patchArrays, │ │ │ │ │ +676 const int *patchIndexBuffer, │ │ │ │ │ +677 const _P_a_t_c_h_P_a_r_a_m *patchParamBuffer); │ │ │ │ │ +678 │ │ │ │ │ +_7_1_6 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ +717 const float *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +718 float *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +719 float *du, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +720 float *dv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +721 int numPatchCoords, │ │ │ │ │ +722 _P_a_t_c_h_C_o_o_r_d const *patchCoords, │ │ │ │ │ +723 _P_a_t_c_h_A_r_r_a_y const *patchArrays, │ │ │ │ │ +724 const int *patchIndexBuffer, │ │ │ │ │ +725 _P_a_t_c_h_P_a_r_a_m const *patchParamBuffer); │ │ │ │ │ +726 │ │ │ │ │ +_7_7_9 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ +780 const float *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +781 float *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +782 float *du, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +783 float *dv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +784 float *duu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +785 float *duv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +786 float *dvv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +787 int numPatchCoords, │ │ │ │ │ +788 _P_a_t_c_h_C_o_o_r_d const *patchCoords, │ │ │ │ │ +789 _P_a_t_c_h_A_r_r_a_y const *patchArrays, │ │ │ │ │ +790 const int *patchIndexBuffer, │ │ │ │ │ +791 _P_a_t_c_h_P_a_r_a_m const *patchParamBuffer); │ │ │ │ │ +792 │ │ │ │ │ +821 template │ │ │ │ │ +_8_2_3 static bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +824 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +825 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +826 int numPatchCoords, │ │ │ │ │ +827 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +828 PATCH_TABLE *patchTable, │ │ │ │ │ +829 _T_b_b_E_v_a_l_u_a_t_o_r const *instance = NULL, │ │ │ │ │ +830 void * deviceContext = NULL) { │ │ │ │ │ +831 │ │ │ │ │ +832 (void)instance; // unused │ │ │ │ │ +833 (void)deviceContext; // unused │ │ │ │ │ +834 │ │ │ │ │ +835 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ +836 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ +837 numPatchCoords, │ │ │ │ │ +838 (const _P_a_t_c_h_C_o_o_r_d*)patchCoords->BindCpuBuffer(), │ │ │ │ │ +839 patchTable->GetVaryingPatchArrayBuffer(), │ │ │ │ │ +840 patchTable->GetVaryingPatchIndexBuffer(), │ │ │ │ │ +841 patchTable->GetPatchParamBuffer()); │ │ │ │ │ +842 } │ │ │ │ │ +843 │ │ │ │ │ +884 template │ │ │ │ │ +_8_8_6 static bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +887 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +888 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +889 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +890 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +891 int numPatchCoords, │ │ │ │ │ +892 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +893 PATCH_TABLE *patchTable, │ │ │ │ │ +894 _T_b_b_E_v_a_l_u_a_t_o_r const *instance = NULL, │ │ │ │ │ +895 void * deviceContext = NULL) { │ │ │ │ │ +896 │ │ │ │ │ +897 (void)instance; // unused │ │ │ │ │ +898 (void)deviceContext; // unused │ │ │ │ │ +899 │ │ │ │ │ +900 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ +901 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ +902 duBuffer->BindCpuBuffer(), duDesc, │ │ │ │ │ +903 dvBuffer->BindCpuBuffer(), dvDesc, │ │ │ │ │ +904 numPatchCoords, │ │ │ │ │ +905 (const _P_a_t_c_h_C_o_o_r_d*)patchCoords->BindCpuBuffer(), │ │ │ │ │ +906 patchTable->GetVaryingPatchArrayBuffer(), │ │ │ │ │ +907 patchTable->GetVaryingPatchIndexBuffer(), │ │ │ │ │ +908 patchTable->GetPatchParamBuffer()); │ │ │ │ │ +909 } │ │ │ │ │ +910 │ │ │ │ │ +969 template │ │ │ │ │ +_9_7_1 static bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +972 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +973 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +974 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +975 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +976 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +977 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +978 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +979 int numPatchCoords, │ │ │ │ │ +980 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +981 PATCH_TABLE *patchTable, │ │ │ │ │ +982 _T_b_b_E_v_a_l_u_a_t_o_r const *instance = NULL, │ │ │ │ │ +983 void * deviceContext = NULL) { │ │ │ │ │ +984 │ │ │ │ │ +985 (void)instance; // unused │ │ │ │ │ +986 (void)deviceContext; // unused │ │ │ │ │ +987 │ │ │ │ │ +988 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ +989 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ +990 duBuffer->BindCpuBuffer(), duDesc, │ │ │ │ │ +991 dvBuffer->BindCpuBuffer(), dvDesc, │ │ │ │ │ +992 duuBuffer->BindCpuBuffer(), duuDesc, │ │ │ │ │ +993 duvBuffer->BindCpuBuffer(), duvDesc, │ │ │ │ │ +994 dvvBuffer->BindCpuBuffer(), dvvDesc, │ │ │ │ │ +995 numPatchCoords, │ │ │ │ │ +996 (const _P_a_t_c_h_C_o_o_r_d*)patchCoords->BindCpuBuffer(), │ │ │ │ │ +997 patchTable->GetVaryingPatchArrayBuffer(), │ │ │ │ │ +998 patchTable->GetVaryingPatchIndexBuffer(), │ │ │ │ │ +999 patchTable->GetPatchParamBuffer()); │ │ │ │ │ +1000 } │ │ │ │ │ +1001 │ │ │ │ │ +1032 template │ │ │ │ │ +_1_0_3_4 static bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +1035 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1036 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1037 int numPatchCoords, │ │ │ │ │ +1038 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1039 PATCH_TABLE *patchTable, │ │ │ │ │ +1040 int fvarChannel, │ │ │ │ │ +1041 _T_b_b_E_v_a_l_u_a_t_o_r const *instance = NULL, │ │ │ │ │ +1042 void * deviceContext = NULL) { │ │ │ │ │ +1043 │ │ │ │ │ +1044 (void)instance; // unused │ │ │ │ │ +1045 (void)deviceContext; // unused │ │ │ │ │ +1046 │ │ │ │ │ +1047 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ +1048 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ +1049 numPatchCoords, │ │ │ │ │ +1050 (const _P_a_t_c_h_C_o_o_r_d*)patchCoords->BindCpuBuffer(), │ │ │ │ │ +1051 patchTable->GetFVarPatchArrayBuffer(fvarChannel), │ │ │ │ │ +1052 patchTable->GetFVarPatchIndexBuffer(fvarChannel), │ │ │ │ │ +1053 patchTable->GetFVarPatchParamBuffer(fvarChannel)); │ │ │ │ │ +1054 } │ │ │ │ │ +1055 │ │ │ │ │ +1098 template │ │ │ │ │ +_1_1_0_0 static bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +1101 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1102 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1103 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +1104 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +1105 int numPatchCoords, │ │ │ │ │ +1106 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1107 PATCH_TABLE *patchTable, │ │ │ │ │ +1108 int fvarChannel, │ │ │ │ │ +1109 _T_b_b_E_v_a_l_u_a_t_o_r const *instance = NULL, │ │ │ │ │ +1110 void * deviceContext = NULL) { │ │ │ │ │ +1111 │ │ │ │ │ +1112 (void)instance; // unused │ │ │ │ │ +1113 (void)deviceContext; // unused │ │ │ │ │ +1114 │ │ │ │ │ +1115 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ +1116 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ +1117 duBuffer->BindCpuBuffer(), duDesc, │ │ │ │ │ +1118 dvBuffer->BindCpuBuffer(), dvDesc, │ │ │ │ │ +1119 numPatchCoords, │ │ │ │ │ +1120 (const _P_a_t_c_h_C_o_o_r_d*)patchCoords->BindCpuBuffer(), │ │ │ │ │ +1121 patchTable->GetFVarPatchArrayBuffer(fvarChannel), │ │ │ │ │ +1122 patchTable->GetFVarPatchIndexBuffer(fvarChannel), │ │ │ │ │ +1123 patchTable->GetFVarPatchParamBuffer(fvarChannel)); │ │ │ │ │ +1124 } │ │ │ │ │ +1125 │ │ │ │ │ +1186 template │ │ │ │ │ +_1_1_8_8 static bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +1189 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1190 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1191 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +1192 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +1193 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +1194 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +1195 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +1196 int numPatchCoords, │ │ │ │ │ +1197 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1198 PATCH_TABLE *patchTable, │ │ │ │ │ +1199 int fvarChannel, │ │ │ │ │ +1200 _T_b_b_E_v_a_l_u_a_t_o_r const *instance = NULL, │ │ │ │ │ +1201 void * deviceContext = NULL) { │ │ │ │ │ +1202 │ │ │ │ │ +1203 (void)instance; // unused │ │ │ │ │ +1204 (void)deviceContext; // unused │ │ │ │ │ +1205 │ │ │ │ │ +1206 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ +1207 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ +1208 duBuffer->BindCpuBuffer(), duDesc, │ │ │ │ │ +1209 dvBuffer->BindCpuBuffer(), dvDesc, │ │ │ │ │ +1210 duuBuffer->BindCpuBuffer(), duuDesc, │ │ │ │ │ +1211 duvBuffer->BindCpuBuffer(), duvDesc, │ │ │ │ │ +1212 dvvBuffer->BindCpuBuffer(), dvvDesc, │ │ │ │ │ +1213 numPatchCoords, │ │ │ │ │ +1214 (const _P_a_t_c_h_C_o_o_r_d*)patchCoords->BindCpuBuffer(), │ │ │ │ │ +1215 patchTable->GetFVarPatchArrayBuffer(fvarChannel), │ │ │ │ │ +1216 patchTable->GetFVarPatchIndexBuffer(fvarChannel), │ │ │ │ │ +1217 patchTable->GetFVarPatchParamBuffer(fvarChannel)); │ │ │ │ │ +1218 } │ │ │ │ │ +1219 │ │ │ │ │ +1225 │ │ │ │ │ +_1_2_2_7 static void _S_y_n_c_h_r_o_n_i_z_e(void *deviceContext = NULL); │ │ │ │ │ +1228 │ │ │ │ │ +_1_2_3_3 static void _S_e_t_N_u_m_T_h_r_e_a_d_s(int numThreads); │ │ │ │ │ +1234}; │ │ │ │ │ +1235 │ │ │ │ │ +1236 │ │ │ │ │ +1237} // end namespace Osd │ │ │ │ │ +1238 │ │ │ │ │ +1239} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ +1240using namespace OPENSUBDIV_VERSION; │ │ │ │ │ +1241 │ │ │ │ │ +1242} // end namespace OpenSubdiv │ │ │ │ │ +1243 │ │ │ │ │ +1244 │ │ │ │ │ +1245#endif // OPENSUBDIV3_OSD_TBB_EVALUATOR_H │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v │ │ │ │ │ DDeeffiinniittiioonn _l_i_m_i_t_s_._h_:_3_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ -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) │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ -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) │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ BufferDescriptor is a struct which describes buffer elements in interleaved │ │ │ │ │ data buffers.... │ │ │ │ │ DDeeffiinniittiioonn _b_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r_._h_:_6_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r │ │ │ │ │ +DDeeffiinniittiioonn _t_b_b_E_v_a_l_u_a_t_o_r_._h_:_3_9 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +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) │ │ │ │ │ +Generic static eval stencils function. This function has a same signature as │ │ │ │ │ +other device kernels hav... │ │ │ │ │ +DDeeffiinniittiioonn _t_b_b_E_v_a_l_u_a_t_o_r_._h_:_7_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _t_b_b_E_v_a_l_u_a_t_o_r_._h_:_4_5_4 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +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) │ │ │ │ │ +Generic static eval stencils function with derivatives. This function has a │ │ │ │ │ +same signature as other d... │ │ │ │ │ +DDeeffiinniittiioonn _t_b_b_E_v_a_l_u_a_t_o_r_._h_:_3_0_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +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) │ │ │ │ │ +Static eval stencils function which takes raw CPU pointers for input and │ │ │ │ │ +output. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _t_b_b_E_v_a_l_u_a_t_o_r_._h_:_8_8_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function with derivatives. This function has a same │ │ │ │ │ +signature as other device kern... │ │ │ │ │ +DDeeffiinniittiioonn _t_b_b_E_v_a_l_u_a_t_o_r_._h_:_6_0_7 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +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) │ │ │ │ │ +Static eval stencils function with derivatives, which takes raw CPU pointers │ │ │ │ │ +for input and output. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +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) │ │ │ │ │ +Static eval stencils function with derivatives, which takes raw CPU pointers │ │ │ │ │ +for input and output. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ +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) │ │ │ │ │ +Static limit eval function. It takes an array of PatchCoord and evaluate limit │ │ │ │ │ +values on given PatchT... │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_S_y_n_c_h_r_o_n_i_z_e │ │ │ │ │ +static void Synchronize(void *deviceContext=NULL) │ │ │ │ │ +synchronize all asynchronous computation invoked on this device. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _t_b_b_E_v_a_l_u_a_t_o_r_._h_:_9_7_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _t_b_b_E_v_a_l_u_a_t_o_r_._h_:_1_1_0_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function with derivatives. This function has a same │ │ │ │ │ +signature as other device kern... │ │ │ │ │ +DDeeffiinniittiioonn _t_b_b_E_v_a_l_u_a_t_o_r_._h_:_5_1_7 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _t_b_b_E_v_a_l_u_a_t_o_r_._h_:_1_0_3_4 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ +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) │ │ │ │ │ +Static limit eval function. It takes an array of PatchCoord and evaluate limit │ │ │ │ │ +values on given PatchT... │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_S_e_t_N_u_m_T_h_r_e_a_d_s │ │ │ │ │ +static void SetNumThreads(int numThreads) │ │ │ │ │ +Deprecated. Client code should initialize TBB. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ +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) │ │ │ │ │ +Static limit eval function. It takes an array of PatchCoord and evaluate limit │ │ │ │ │ +values on given PatchT... │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +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) │ │ │ │ │ +Generic static eval stencils function with derivatives. This function has a │ │ │ │ │ +same signature as other d... │ │ │ │ │ +DDeeffiinniittiioonn _t_b_b_E_v_a_l_u_a_t_o_r_._h_:_1_6_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _t_b_b_E_v_a_l_u_a_t_o_r_._h_:_1_1_8_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _t_b_b_E_v_a_l_u_a_t_o_r_._h_:_8_2_3 │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_P_a_t_c_h_C_o_o_r_d │ │ │ │ │ Coordinates set on a patch table. │ │ │ │ │ DDeeffiinniittiioonn _t_y_p_e_s_._h_:_4_2 │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_P_a_t_c_h_A_r_r_a_y │ │ │ │ │ DDeeffiinniittiioonn _t_y_p_e_s_._h_:_6_6 │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_P_a_t_c_h_P_a_r_a_m │ │ │ │ │ DDeeffiinniittiioonn _t_y_p_e_s_._h_:_1_2_7 │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _o_s_d │ │ │ │ │ - * _t_b_b_K_e_r_n_e_l_._h │ │ │ │ │ + * _t_b_b_E_v_a_l_u_a_t_o_r_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00875.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/osd/tbbEvaluator.h File Reference │ │ │ │ +OpenSubdiv: opensubdiv/osd/tbbKernel.h File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -88,44 +88,51 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ -Classes | │ │ │ │ -Namespaces
│ │ │ │ -
tbbEvaluator.h File Reference
│ │ │ │ +Namespaces | │ │ │ │ +Functions
│ │ │ │ +
tbbKernel.h File Reference
│ │ │ │ │ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ -#include "../osd/bufferDescriptor.h"
│ │ │ │ -#include "../osd/types.h"
│ │ │ │ -#include <cstddef>
│ │ │ │ +#include "../far/patchDescriptor.h"
│ │ │ │ +#include "../far/patchParam.h"
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -

│ │ │ │ -Classes

class  TbbEvaluator
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +

│ │ │ │ Namespaces

namespace  OpenSubdiv
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION::Osd
 
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │

│ │ │ │ +Functions

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)
 
void TbbEvalStencils (float const *src, BufferDescriptor const &srcDesc, float *dst, BufferDescriptor const &dstDesc, float *dstDu, BufferDescriptor const &dstDuDesc, float *dstDv, BufferDescriptor const &dstDvDesc, int const *sizes, int const *offsets, int const *indices, float const *weights, float const *duWeights, float const *dvWeights, int start, int end)
 
void TbbEvalStencils (float const *src, BufferDescriptor const &srcDesc, float *dst, BufferDescriptor const &dstDesc, float *dstDu, BufferDescriptor const &dstDuDesc, float *dstDv, BufferDescriptor const &dstDvDesc, float *dstDuu, BufferDescriptor const &dstDuuDesc, float *dstDuv, BufferDescriptor const &dstDuvDesc, float *dstDvv, BufferDescriptor 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)
 
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)
 
void TbbEvalPatches (float const *src, BufferDescriptor const &srcDesc, float *dst, BufferDescriptor const &dstDesc, float *dstDu, BufferDescriptor const &dstDuDesc, float *dstDv, BufferDescriptor const &dstDvDesc, float *dstDuu, BufferDescriptor const &dstDuuDesc, float *dstDuv, BufferDescriptor const &dstDuvDesc, float *dstDvv, BufferDescriptor const &dstDvvDesc, int numPatchCoords, const PatchCoord *patchCoords, const PatchArray *patchArrayBuffer, const int *patchIndexBuffer, const PatchParam *patchParamBuffer)
 
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,25 +1,59 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ -_C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -tbbEvaluator.h File Reference │ │ │ │ │ +_N_a_m_e_s_p_a_c_e_s | _F_u_n_c_t_i_o_n_s │ │ │ │ │ +tbbKernel.h File Reference │ │ │ │ │ #include "../version.h" │ │ │ │ │ -#include "_._._/_o_s_d_/_b_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r_._h" │ │ │ │ │ -#include "_._._/_o_s_d_/_t_y_p_e_s_._h" │ │ │ │ │ -#include │ │ │ │ │ +#include "_._._/_f_a_r_/_p_a_t_c_h_D_e_s_c_r_i_p_t_o_r_._h" │ │ │ │ │ +#include "_._._/_f_a_r_/_p_a_t_c_h_P_a_r_a_m_._h" │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ -CCllaasssseess │ │ │ │ │ -class   _T_b_b_E_v_a_l_u_a_t_o_r │ │ │ │ │ -  │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d │ │ │ │ │   │ │ │ │ │ +FFuunnccttiioonnss │ │ │ │ │ +void  _T_b_b_E_v_a_l_S_t_e_n_c_i_l_s (float const *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, float │ │ │ │ │ + *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, int const *sizes, int const │ │ │ │ │ + *offsets, int const *indices, float const *weights, int start, int end) │ │ │ │ │ +  │ │ │ │ │ +void  _T_b_b_E_v_a_l_S_t_e_n_c_i_l_s (float const *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, float │ │ │ │ │ + *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, float *dstDu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ + const &dstDuDesc, float *dstDv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDvDesc, int │ │ │ │ │ + const *sizes, int const *offsets, int const *indices, float const │ │ │ │ │ + *weights, float const *duWeights, float const *dvWeights, int start, int │ │ │ │ │ + end) │ │ │ │ │ +  │ │ │ │ │ +void  _T_b_b_E_v_a_l_S_t_e_n_c_i_l_s (float const *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, float │ │ │ │ │ + *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, float *dstDu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ + const &dstDuDesc, float *dstDv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDvDesc, float │ │ │ │ │ + *dstDuu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDuuDesc, float *dstDuv, │ │ │ │ │ + _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDuvDesc, float *dstDvv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r 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) │ │ │ │ │ +  │ │ │ │ │ +void  _T_b_b_E_v_a_l_P_a_t_c_h_e_s (float const *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, float │ │ │ │ │ + *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, float *dstDu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ + const &dstDuDesc, float *dstDv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDvDesc, int │ │ │ │ │ + numPatchCoords, const _P_a_t_c_h_C_o_o_r_d *patchCoords, const _P_a_t_c_h_A_r_r_a_y │ │ │ │ │ + *patchArrayBuffer, const int *patchIndexBuffer, const _P_a_t_c_h_P_a_r_a_m │ │ │ │ │ + *patchParamBuffer) │ │ │ │ │ +  │ │ │ │ │ +void  _T_b_b_E_v_a_l_P_a_t_c_h_e_s (float const *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, float │ │ │ │ │ + *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, float *dstDu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ + const &dstDuDesc, float *dstDv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDvDesc, float │ │ │ │ │ + *dstDuu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDuuDesc, float *dstDuv, │ │ │ │ │ + _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDuvDesc, float *dstDvv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const │ │ │ │ │ + &dstDvvDesc, int numPatchCoords, const _P_a_t_c_h_C_o_o_r_d *patchCoords, const │ │ │ │ │ + _P_a_t_c_h_A_r_r_a_y *patchArrayBuffer, const int *patchIndexBuffer, const │ │ │ │ │ + _P_a_t_c_h_P_a_r_a_m *patchParamBuffer) │ │ │ │ │ +  │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _o_s_d │ │ │ │ │ - * _t_b_b_E_v_a_l_u_a_t_o_r_._h │ │ │ │ │ + * _t_b_b_K_e_r_n_e_l_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00875.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -1,3 +1,7 @@ │ │ │ │ │ var a00875 = [ │ │ │ │ │ - ["TbbEvaluator", "a01317.html", null] │ │ │ │ │ + ["TbbEvalPatches", "a00875.html#aa0c3c264a43eeddc5cb3a58b006d3d32", null], │ │ │ │ │ + ["TbbEvalPatches", "a00875.html#a20e08be34d6183b6943ed7a1586eca4a", null], │ │ │ │ │ + ["TbbEvalStencils", "a00875.html#aa65ed860a2fa5935d99129a898a8f0b6", null], │ │ │ │ │ + ["TbbEvalStencils", "a00875.html#af23c35537952bfdd493441e5c42ff2ed", null], │ │ │ │ │ + ["TbbEvalStencils", "a00875.html#a4a6a0fcc01638f2a0316b32ad158b485", null] │ │ │ │ │ ]; │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00875_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/osd/tbbEvaluator.h Source File │ │ │ │ +OpenSubdiv: opensubdiv/osd/tbbKernel.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -92,19 +92,19 @@ │ │ │ │
No Matches
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
tbbEvaluator.h
│ │ │ │ +
tbbKernel.h
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1//
│ │ │ │ -
2// Copyright 2015 Pixar
│ │ │ │ +
2// Copyright 2013 Pixar
│ │ │ │
3//
│ │ │ │
4// Licensed under the Apache License, Version 2.0 (the "Apache License")
│ │ │ │
5// with the following modification; you may not use this file except in
│ │ │ │
6// compliance with the Apache License and the following modification to it:
│ │ │ │
7// Section 6. Trademarks. is deleted and replaced with:
│ │ │ │
8//
│ │ │ │
9// 6. Trademarks. This License does not grant permission to use the trade
│ │ │ │ @@ -119,528 +119,116 @@ │ │ │ │
18// Unless required by applicable law or agreed to in writing, software
│ │ │ │
19// distributed under the Apache License with the above modification is
│ │ │ │
20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
│ │ │ │
21// KIND, either express or implied. See the Apache License for the specific
│ │ │ │
22// language governing permissions and limitations under the Apache License.
│ │ │ │
23//
│ │ │ │
24
│ │ │ │ -
25#ifndef OPENSUBDIV3_OSD_TBB_EVALUATOR_H
│ │ │ │ -
26#define OPENSUBDIV3_OSD_TBB_EVALUATOR_H
│ │ │ │ +
25#ifndef OPENSUBDIV3_OSD_TBB_KERNEL_H
│ │ │ │ +
26#define OPENSUBDIV3_OSD_TBB_KERNEL_H
│ │ │ │
27
│ │ │ │
28#include "../version.h"
│ │ │ │ -
29#include "../osd/bufferDescriptor.h"
│ │ │ │ -
30#include "../osd/types.h"
│ │ │ │ +
29#include "../far/patchDescriptor.h"
│ │ │ │ +
30#include "../far/patchParam.h"
│ │ │ │
31
│ │ │ │ -
32#include <cstddef>
│ │ │ │ -
33
│ │ │ │ -
34namespace OpenSubdiv {
│ │ │ │ -
35namespace OPENSUBDIV_VERSION {
│ │ │ │ +
32namespace OpenSubdiv {
│ │ │ │ +
33namespace OPENSUBDIV_VERSION {
│ │ │ │ +
34
│ │ │ │ +
35namespace Osd {
│ │ │ │
36
│ │ │ │ -
37namespace Osd {
│ │ │ │ -
38
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
40public:
│ │ │ │ -
46
│ │ │ │ -
71 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ -
│ │ │ │ -
72 static bool EvalStencils(
│ │ │ │ -
73 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
74 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
75 STENCIL_TABLE const *stencilTable,
│ │ │ │ -
76 TbbEvaluator const *instance = NULL,
│ │ │ │ -
77 void *deviceContext = NULL) {
│ │ │ │ -
78
│ │ │ │ -
79 (void)instance; // unused
│ │ │ │ -
80 (void)deviceContext; // unused
│ │ │ │ -
81
│ │ │ │ -
82 if (stencilTable->GetNumStencils() == 0)
│ │ │ │ -
83 return false;
│ │ │ │ -
84
│ │ │ │ -
85 return EvalStencils(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ -
86 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ -
87 &stencilTable->GetSizes()[0],
│ │ │ │ -
88 &stencilTable->GetOffsets()[0],
│ │ │ │ -
89 &stencilTable->GetControlIndices()[0],
│ │ │ │ -
90 &stencilTable->GetWeights()[0],
│ │ │ │ -
91 /*start = */ 0,
│ │ │ │ -
92 /*end = */ stencilTable->GetNumStencils());
│ │ │ │ -
93 }
│ │ │ │ -
│ │ │ │ -
94
│ │ │ │ -
121 static bool EvalStencils(
│ │ │ │ -
122 const float *src, BufferDescriptor const &srcDesc,
│ │ │ │ -
123 float *dst, BufferDescriptor const &dstDesc,
│ │ │ │ -
124 const int * sizes,
│ │ │ │ -
125 const int * offsets,
│ │ │ │ -
126 const int * indices,
│ │ │ │ -
127 const float * weights,
│ │ │ │ -
128 int start, int end);
│ │ │ │ -
129
│ │ │ │ -
167 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ -
│ │ │ │ -
168 static bool EvalStencils(
│ │ │ │ -
169 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
170 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
171 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
172 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
173 STENCIL_TABLE const *stencilTable,
│ │ │ │ -
174 const TbbEvaluator *instance = NULL,
│ │ │ │ -
175 void * deviceContext = NULL) {
│ │ │ │ -
176
│ │ │ │ -
177 (void)instance; // unused
│ │ │ │ -
178 (void)deviceContext; // unused
│ │ │ │ -
179
│ │ │ │ -
180 return EvalStencils(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ -
181 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ -
182 duBuffer->BindCpuBuffer(), duDesc,
│ │ │ │ -
183 dvBuffer->BindCpuBuffer(), dvDesc,
│ │ │ │ -
184 &stencilTable->GetSizes()[0],
│ │ │ │ -
185 &stencilTable->GetOffsets()[0],
│ │ │ │ -
186 &stencilTable->GetControlIndices()[0],
│ │ │ │ -
187 &stencilTable->GetWeights()[0],
│ │ │ │ -
188 &stencilTable->GetDuWeights()[0],
│ │ │ │ -
189 &stencilTable->GetDvWeights()[0],
│ │ │ │ -
190 /*start = */ 0,
│ │ │ │ -
191 /*end = */ stencilTable->GetNumStencils());
│ │ │ │ -
192 }
│ │ │ │ -
│ │ │ │ -
193
│ │ │ │ -
234 static bool EvalStencils(
│ │ │ │ -
235 const float *src, BufferDescriptor const &srcDesc,
│ │ │ │ -
236 float *dst, BufferDescriptor const &dstDesc,
│ │ │ │ -
237 float *du, BufferDescriptor const &duDesc,
│ │ │ │ -
238 float *dv, BufferDescriptor const &dvDesc,
│ │ │ │ -
239 const int * sizes,
│ │ │ │ -
240 const int * offsets,
│ │ │ │ -
241 const int * indices,
│ │ │ │ -
242 const float * weights,
│ │ │ │ -
243 const float * duWeights,
│ │ │ │ -
244 const float * dvWeights,
│ │ │ │ -
245 int start, int end);
│ │ │ │ -
246
│ │ │ │ -
302 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ -
│ │ │ │ -
303 static bool EvalStencils(
│ │ │ │ -
304 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
305 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
306 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
307 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
308 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ -
309 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ -
310 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ -
311 STENCIL_TABLE const *stencilTable,
│ │ │ │ -
312 const TbbEvaluator *instance = NULL,
│ │ │ │ -
313 void * deviceContext = NULL) {
│ │ │ │ -
314
│ │ │ │ -
315 (void)instance; // unused
│ │ │ │ -
316 (void)deviceContext; // unused
│ │ │ │ -
317
│ │ │ │ -
318 return EvalStencils(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ -
319 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ -
320 duBuffer->BindCpuBuffer(), duDesc,
│ │ │ │ -
321 dvBuffer->BindCpuBuffer(), dvDesc,
│ │ │ │ -
322 duuBuffer->BindCpuBuffer(), duuDesc,
│ │ │ │ -
323 duvBuffer->BindCpuBuffer(), duvDesc,
│ │ │ │ -
324 dvvBuffer->BindCpuBuffer(), dvvDesc,
│ │ │ │ -
325 &stencilTable->GetSizes()[0],
│ │ │ │ -
326 &stencilTable->GetOffsets()[0],
│ │ │ │ -
327 &stencilTable->GetControlIndices()[0],
│ │ │ │ -
328 &stencilTable->GetWeights()[0],
│ │ │ │ -
329 &stencilTable->GetDuWeights()[0],
│ │ │ │ -
330 &stencilTable->GetDvWeights()[0],
│ │ │ │ -
331 &stencilTable->GetDuuWeights()[0],
│ │ │ │ -
332 &stencilTable->GetDuvWeights()[0],
│ │ │ │ -
333 &stencilTable->GetDvvWeights()[0],
│ │ │ │ -
334 /*start = */ 0,
│ │ │ │ -
335 /*end = */ stencilTable->GetNumStencils());
│ │ │ │ -
336 }
│ │ │ │ -
│ │ │ │ -
337
│ │ │ │ -
399 static bool EvalStencils(
│ │ │ │ -
400 const float *src, BufferDescriptor const &srcDesc,
│ │ │ │ -
401 float *dst, BufferDescriptor const &dstDesc,
│ │ │ │ -
402 float *du, BufferDescriptor const &duDesc,
│ │ │ │ -
403 float *dv, BufferDescriptor const &dvDesc,
│ │ │ │ -
404 float *duu, BufferDescriptor const &duuDesc,
│ │ │ │ -
405 float *duv, BufferDescriptor const &duvDesc,
│ │ │ │ -
406 float *dvv, BufferDescriptor const &dvvDesc,
│ │ │ │ -
407 const int * sizes,
│ │ │ │ -
408 const int * offsets,
│ │ │ │ -
409 const int * indices,
│ │ │ │ -
410 const float * weights,
│ │ │ │ -
411 const float * duWeights,
│ │ │ │ -
412 const float * dvWeights,
│ │ │ │ -
413 const float * duuWeights,
│ │ │ │ -
414 const float * duvWeights,
│ │ │ │ -
415 const float * dvvWeights,
│ │ │ │ -
416 int start, int end);
│ │ │ │ -
417
│ │ │ │ -
423
│ │ │ │ -
452 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
453 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ -
454 static bool EvalPatches(
│ │ │ │ -
455 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
456 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
457 int numPatchCoords,
│ │ │ │ -
458 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
459 PATCH_TABLE *patchTable,
│ │ │ │ -
460 TbbEvaluator const *instance = NULL,
│ │ │ │ -
461 void * deviceContext = NULL) {
│ │ │ │ -
462
│ │ │ │ -
463 (void)instance; // unused
│ │ │ │ -
464 (void)deviceContext; // unused
│ │ │ │ -
465
│ │ │ │ -
466 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ -
467 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ -
468 numPatchCoords,
│ │ │ │ -
469 (const PatchCoord*)patchCoords->BindCpuBuffer(),
│ │ │ │ -
470 patchTable->GetPatchArrayBuffer(),
│ │ │ │ -
471 patchTable->GetPatchIndexBuffer(),
│ │ │ │ -
472 patchTable->GetPatchParamBuffer());
│ │ │ │ -
473 }
│ │ │ │ -
│ │ │ │ -
474
│ │ │ │ -
515 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
516 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ -
517 static bool EvalPatches(
│ │ │ │ -
518 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
519 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
520 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
521 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
522 int numPatchCoords,
│ │ │ │ -
523 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
524 PATCH_TABLE *patchTable,
│ │ │ │ -
525 TbbEvaluator const *instance = NULL,
│ │ │ │ -
526 void * deviceContext = NULL) {
│ │ │ │ -
527
│ │ │ │ -
528 (void)instance; // unused
│ │ │ │ -
529 (void)deviceContext; // unused
│ │ │ │ -
530
│ │ │ │ -
531 // XXX: PatchCoords is somewhat abusing vertex primvar buffer interop.
│ │ │ │ -
532 // ideally all buffer classes should have templated by datatype
│ │ │ │ -
533 // so that downcast isn't needed there.
│ │ │ │ -
534 // (e.g. Osd::CpuBuffer<PatchCoord> )
│ │ │ │ -
535 //
│ │ │ │ -
536 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ -
537 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ -
538 duBuffer->BindCpuBuffer(), duDesc,
│ │ │ │ -
539 dvBuffer->BindCpuBuffer(), dvDesc,
│ │ │ │ -
540 numPatchCoords,
│ │ │ │ -
541 (const PatchCoord*)patchCoords->BindCpuBuffer(),
│ │ │ │ -
542 patchTable->GetPatchArrayBuffer(),
│ │ │ │ -
543 patchTable->GetPatchIndexBuffer(),
│ │ │ │ -
544 patchTable->GetPatchParamBuffer());
│ │ │ │ -
545 }
│ │ │ │ -
│ │ │ │ -
546
│ │ │ │ -
605 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
606 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ -
607 static bool EvalPatches(
│ │ │ │ -
608 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
609 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
610 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
611 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
612 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ -
613 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ -
614 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ -
615 int numPatchCoords,
│ │ │ │ -
616 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
617 PATCH_TABLE *patchTable,
│ │ │ │ -
618 TbbEvaluator const *instance = NULL,
│ │ │ │ -
619 void * deviceContext = NULL) {
│ │ │ │ -
620
│ │ │ │ -
621 (void)instance; // unused
│ │ │ │ -
622 (void)deviceContext; // unused
│ │ │ │ -
623
│ │ │ │ -
624 // XXX: PatchCoords is somewhat abusing vertex primvar buffer interop.
│ │ │ │ -
625 // ideally all buffer classes should have templated by datatype
│ │ │ │ -
626 // so that downcast isn't needed there.
│ │ │ │ -
627 // (e.g. Osd::CpuBuffer<PatchCoord> )
│ │ │ │ -
628 //
│ │ │ │ -
629 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ -
630 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ -
631 duBuffer->BindCpuBuffer(), duDesc,
│ │ │ │ -
632 dvBuffer->BindCpuBuffer(), dvDesc,
│ │ │ │ -
633 duuBuffer->BindCpuBuffer(), duuDesc,
│ │ │ │ -
634 duvBuffer->BindCpuBuffer(), duvDesc,
│ │ │ │ -
635 dvvBuffer->BindCpuBuffer(), dvvDesc,
│ │ │ │ -
636 numPatchCoords,
│ │ │ │ -
637 (const PatchCoord*)patchCoords->BindCpuBuffer(),
│ │ │ │ -
638 patchTable->GetPatchArrayBuffer(),
│ │ │ │ -
639 patchTable->GetPatchIndexBuffer(),
│ │ │ │ -
640 patchTable->GetPatchParamBuffer());
│ │ │ │ -
641 }
│ │ │ │ -
│ │ │ │ -
642
│ │ │ │ -
670 static bool EvalPatches(
│ │ │ │ -
671 const float *src, BufferDescriptor const &srcDesc,
│ │ │ │ -
672 float *dst, BufferDescriptor const &dstDesc,
│ │ │ │ -
673 int numPatchCoords,
│ │ │ │ -
674 const PatchCoord *patchCoords,
│ │ │ │ -
675 const PatchArray *patchArrays,
│ │ │ │ -
676 const int *patchIndexBuffer,
│ │ │ │ -
677 const PatchParam *patchParamBuffer);
│ │ │ │ -
678
│ │ │ │ -
716 static bool EvalPatches(
│ │ │ │ -
717 const float *src, BufferDescriptor const &srcDesc,
│ │ │ │ -
718 float *dst, BufferDescriptor const &dstDesc,
│ │ │ │ -
719 float *du, BufferDescriptor const &duDesc,
│ │ │ │ -
720 float *dv, BufferDescriptor const &dvDesc,
│ │ │ │ -
721 int numPatchCoords,
│ │ │ │ -
722 PatchCoord const *patchCoords,
│ │ │ │ -
723 PatchArray const *patchArrays,
│ │ │ │ -
724 const int *patchIndexBuffer,
│ │ │ │ -
725 PatchParam const *patchParamBuffer);
│ │ │ │ -
726
│ │ │ │ -
779 static bool EvalPatches(
│ │ │ │ -
780 const float *src, BufferDescriptor const &srcDesc,
│ │ │ │ -
781 float *dst, BufferDescriptor const &dstDesc,
│ │ │ │ -
782 float *du, BufferDescriptor const &duDesc,
│ │ │ │ -
783 float *dv, BufferDescriptor const &dvDesc,
│ │ │ │ -
784 float *duu, BufferDescriptor const &duuDesc,
│ │ │ │ -
785 float *duv, BufferDescriptor const &duvDesc,
│ │ │ │ -
786 float *dvv, BufferDescriptor const &dvvDesc,
│ │ │ │ -
787 int numPatchCoords,
│ │ │ │ -
788 PatchCoord const *patchCoords,
│ │ │ │ -
789 PatchArray const *patchArrays,
│ │ │ │ -
790 const int *patchIndexBuffer,
│ │ │ │ -
791 PatchParam const *patchParamBuffer);
│ │ │ │ -
792
│ │ │ │ -
821 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
822 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
824 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
825 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
826 int numPatchCoords,
│ │ │ │ -
827 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
828 PATCH_TABLE *patchTable,
│ │ │ │ -
829 TbbEvaluator const *instance = NULL,
│ │ │ │ -
830 void * deviceContext = NULL) {
│ │ │ │ -
831
│ │ │ │ -
832 (void)instance; // unused
│ │ │ │ -
833 (void)deviceContext; // unused
│ │ │ │ -
834
│ │ │ │ -
835 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ -
836 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ -
837 numPatchCoords,
│ │ │ │ -
838 (const PatchCoord*)patchCoords->BindCpuBuffer(),
│ │ │ │ -
839 patchTable->GetVaryingPatchArrayBuffer(),
│ │ │ │ -
840 patchTable->GetVaryingPatchIndexBuffer(),
│ │ │ │ -
841 patchTable->GetPatchParamBuffer());
│ │ │ │ -
842 }
│ │ │ │ -
│ │ │ │ -
843
│ │ │ │ -
884 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
885 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
887 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
888 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
889 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
890 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
891 int numPatchCoords,
│ │ │ │ -
892 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
893 PATCH_TABLE *patchTable,
│ │ │ │ -
894 TbbEvaluator const *instance = NULL,
│ │ │ │ -
895 void * deviceContext = NULL) {
│ │ │ │ -
896
│ │ │ │ -
897 (void)instance; // unused
│ │ │ │ -
898 (void)deviceContext; // unused
│ │ │ │ -
899
│ │ │ │ -
900 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ -
901 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ -
902 duBuffer->BindCpuBuffer(), duDesc,
│ │ │ │ -
903 dvBuffer->BindCpuBuffer(), dvDesc,
│ │ │ │ -
904 numPatchCoords,
│ │ │ │ -
905 (const PatchCoord*)patchCoords->BindCpuBuffer(),
│ │ │ │ -
906 patchTable->GetVaryingPatchArrayBuffer(),
│ │ │ │ -
907 patchTable->GetVaryingPatchIndexBuffer(),
│ │ │ │ -
908 patchTable->GetPatchParamBuffer());
│ │ │ │ -
909 }
│ │ │ │ -
│ │ │ │ -
910
│ │ │ │ -
969 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
970 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
972 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
973 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
974 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
975 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
976 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ -
977 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ -
978 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ -
979 int numPatchCoords,
│ │ │ │ -
980 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
981 PATCH_TABLE *patchTable,
│ │ │ │ -
982 TbbEvaluator const *instance = NULL,
│ │ │ │ -
983 void * deviceContext = NULL) {
│ │ │ │ -
984
│ │ │ │ -
985 (void)instance; // unused
│ │ │ │ -
986 (void)deviceContext; // unused
│ │ │ │ -
987
│ │ │ │ -
988 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ -
989 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ -
990 duBuffer->BindCpuBuffer(), duDesc,
│ │ │ │ -
991 dvBuffer->BindCpuBuffer(), dvDesc,
│ │ │ │ -
992 duuBuffer->BindCpuBuffer(), duuDesc,
│ │ │ │ -
993 duvBuffer->BindCpuBuffer(), duvDesc,
│ │ │ │ -
994 dvvBuffer->BindCpuBuffer(), dvvDesc,
│ │ │ │ -
995 numPatchCoords,
│ │ │ │ -
996 (const PatchCoord*)patchCoords->BindCpuBuffer(),
│ │ │ │ -
997 patchTable->GetVaryingPatchArrayBuffer(),
│ │ │ │ -
998 patchTable->GetVaryingPatchIndexBuffer(),
│ │ │ │ -
999 patchTable->GetPatchParamBuffer());
│ │ │ │ -
1000 }
│ │ │ │ -
│ │ │ │ -
1001
│ │ │ │ -
1032 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1033 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1035 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1036 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1037 int numPatchCoords,
│ │ │ │ -
1038 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1039 PATCH_TABLE *patchTable,
│ │ │ │ -
1040 int fvarChannel,
│ │ │ │ -
1041 TbbEvaluator const *instance = NULL,
│ │ │ │ -
1042 void * deviceContext = NULL) {
│ │ │ │ -
1043
│ │ │ │ -
1044 (void)instance; // unused
│ │ │ │ -
1045 (void)deviceContext; // unused
│ │ │ │ -
1046
│ │ │ │ -
1047 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ -
1048 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ -
1049 numPatchCoords,
│ │ │ │ -
1050 (const PatchCoord*)patchCoords->BindCpuBuffer(),
│ │ │ │ -
1051 patchTable->GetFVarPatchArrayBuffer(fvarChannel),
│ │ │ │ -
1052 patchTable->GetFVarPatchIndexBuffer(fvarChannel),
│ │ │ │ -
1053 patchTable->GetFVarPatchParamBuffer(fvarChannel));
│ │ │ │ -
1054 }
│ │ │ │ -
│ │ │ │ -
1055
│ │ │ │ -
1098 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1099 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1101 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1102 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1103 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
1104 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
1105 int numPatchCoords,
│ │ │ │ -
1106 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1107 PATCH_TABLE *patchTable,
│ │ │ │ -
1108 int fvarChannel,
│ │ │ │ -
1109 TbbEvaluator const *instance = NULL,
│ │ │ │ -
1110 void * deviceContext = NULL) {
│ │ │ │ -
1111
│ │ │ │ -
1112 (void)instance; // unused
│ │ │ │ -
1113 (void)deviceContext; // unused
│ │ │ │ -
1114
│ │ │ │ -
1115 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ -
1116 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ -
1117 duBuffer->BindCpuBuffer(), duDesc,
│ │ │ │ -
1118 dvBuffer->BindCpuBuffer(), dvDesc,
│ │ │ │ -
1119 numPatchCoords,
│ │ │ │ -
1120 (const PatchCoord*)patchCoords->BindCpuBuffer(),
│ │ │ │ -
1121 patchTable->GetFVarPatchArrayBuffer(fvarChannel),
│ │ │ │ -
1122 patchTable->GetFVarPatchIndexBuffer(fvarChannel),
│ │ │ │ -
1123 patchTable->GetFVarPatchParamBuffer(fvarChannel));
│ │ │ │ -
1124 }
│ │ │ │ -
│ │ │ │ -
1125
│ │ │ │ -
1186 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1187 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1189 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1190 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1191 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
1192 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
1193 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ -
1194 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ -
1195 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ -
1196 int numPatchCoords,
│ │ │ │ -
1197 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1198 PATCH_TABLE *patchTable,
│ │ │ │ -
1199 int fvarChannel,
│ │ │ │ -
1200 TbbEvaluator const *instance = NULL,
│ │ │ │ -
1201 void * deviceContext = NULL) {
│ │ │ │ -
1202
│ │ │ │ -
1203 (void)instance; // unused
│ │ │ │ -
1204 (void)deviceContext; // unused
│ │ │ │ -
1205
│ │ │ │ -
1206 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ -
1207 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ -
1208 duBuffer->BindCpuBuffer(), duDesc,
│ │ │ │ -
1209 dvBuffer->BindCpuBuffer(), dvDesc,
│ │ │ │ -
1210 duuBuffer->BindCpuBuffer(), duuDesc,
│ │ │ │ -
1211 duvBuffer->BindCpuBuffer(), duvDesc,
│ │ │ │ -
1212 dvvBuffer->BindCpuBuffer(), dvvDesc,
│ │ │ │ -
1213 numPatchCoords,
│ │ │ │ -
1214 (const PatchCoord*)patchCoords->BindCpuBuffer(),
│ │ │ │ -
1215 patchTable->GetFVarPatchArrayBuffer(fvarChannel),
│ │ │ │ -
1216 patchTable->GetFVarPatchIndexBuffer(fvarChannel),
│ │ │ │ -
1217 patchTable->GetFVarPatchParamBuffer(fvarChannel));
│ │ │ │ -
1218 }
│ │ │ │ -
│ │ │ │ -
1219
│ │ │ │ -
1225
│ │ │ │ -
1227 static void Synchronize(void *deviceContext = NULL);
│ │ │ │ -
1228
│ │ │ │ -
1233 static void SetNumThreads(int numThreads);
│ │ │ │ -
1234};
│ │ │ │ -
│ │ │ │ -
1235
│ │ │ │ -
1236
│ │ │ │ -
1237} // end namespace Osd
│ │ │ │ -
1238
│ │ │ │ -
1239} // end namespace OPENSUBDIV_VERSION
│ │ │ │ -
1240using namespace OPENSUBDIV_VERSION;
│ │ │ │ -
1241
│ │ │ │ -
1242} // end namespace OpenSubdiv
│ │ │ │ -
1243
│ │ │ │ -
1244
│ │ │ │ -
1245#endif // OPENSUBDIV3_OSD_TBB_EVALUATOR_H
│ │ │ │ +
37struct PatchArray;
│ │ │ │ +
38struct PatchCoord;
│ │ │ │ +
39struct PatchParam;
│ │ │ │ +
40struct BufferDescriptor;
│ │ │ │ +
41
│ │ │ │ +
42void
│ │ │ │ +
43TbbEvalStencils(float const * src, BufferDescriptor const &srcDesc,
│ │ │ │ +
44 float * dst, BufferDescriptor const &dstDesc,
│ │ │ │ +
45 int const * sizes,
│ │ │ │ +
46 int const * offsets,
│ │ │ │ +
47 int const * indices,
│ │ │ │ +
48 float const * weights,
│ │ │ │ +
49 int start, int end);
│ │ │ │ +
50
│ │ │ │ +
51void
│ │ │ │ +
52TbbEvalStencils(float const * src, BufferDescriptor const &srcDesc,
│ │ │ │ +
53 float * dst, BufferDescriptor const &dstDesc,
│ │ │ │ +
54 float * dstDu, BufferDescriptor const &dstDuDesc,
│ │ │ │ +
55 float * dstDv, BufferDescriptor const &dstDvDesc,
│ │ │ │ +
56 int const * sizes,
│ │ │ │ +
57 int const * offsets,
│ │ │ │ +
58 int const * indices,
│ │ │ │ +
59 float const * weights,
│ │ │ │ +
60 float const * duWeights,
│ │ │ │ +
61 float const * dvWeights,
│ │ │ │ +
62 int start, int end);
│ │ │ │ +
63
│ │ │ │ +
64void
│ │ │ │ +
65TbbEvalStencils(float const * src, BufferDescriptor const &srcDesc,
│ │ │ │ +
66 float * dst, BufferDescriptor const &dstDesc,
│ │ │ │ +
67 float * dstDu, BufferDescriptor const &dstDuDesc,
│ │ │ │ +
68 float * dstDv, BufferDescriptor const &dstDvDesc,
│ │ │ │ +
69 float * dstDuu, BufferDescriptor const &dstDuuDesc,
│ │ │ │ +
70 float * dstDuv, BufferDescriptor const &dstDuvDesc,
│ │ │ │ +
71 float * dstDvv, BufferDescriptor const &dstDvvDesc,
│ │ │ │ +
72 int const * sizes,
│ │ │ │ +
73 int const * offsets,
│ │ │ │ +
74 int const * indices,
│ │ │ │ +
75 float const * weights,
│ │ │ │ +
76 float const * duWeights,
│ │ │ │ +
77 float const * dvWeights,
│ │ │ │ +
78 float const * duuWeights,
│ │ │ │ +
79 float const * duvWeights,
│ │ │ │ +
80 float const * dvvWeights,
│ │ │ │ +
81 int start, int end);
│ │ │ │ +
82
│ │ │ │ +
83void
│ │ │ │ +
84TbbEvalPatches(float const *src, BufferDescriptor const &srcDesc,
│ │ │ │ +
85 float *dst, BufferDescriptor const &dstDesc,
│ │ │ │ +
86 float *dstDu, BufferDescriptor const &dstDuDesc,
│ │ │ │ +
87 float *dstDv, BufferDescriptor const &dstDvDesc,
│ │ │ │ +
88 int numPatchCoords,
│ │ │ │ +
89 const PatchCoord *patchCoords,
│ │ │ │ +
90 const PatchArray *patchArrayBuffer,
│ │ │ │ +
91 const int *patchIndexBuffer,
│ │ │ │ +
92 const PatchParam *patchParamBuffer);
│ │ │ │ +
93
│ │ │ │ +
94void
│ │ │ │ +
95TbbEvalPatches(float const *src, BufferDescriptor const &srcDesc,
│ │ │ │ +
96 float *dst, BufferDescriptor const &dstDesc,
│ │ │ │ +
97 float *dstDu, BufferDescriptor const &dstDuDesc,
│ │ │ │ +
98 float *dstDv, BufferDescriptor const &dstDvDesc,
│ │ │ │ +
99 float *dstDuu, BufferDescriptor const &dstDuuDesc,
│ │ │ │ +
100 float *dstDuv, BufferDescriptor const &dstDuvDesc,
│ │ │ │ +
101 float *dstDvv, BufferDescriptor const &dstDvvDesc,
│ │ │ │ +
102 int numPatchCoords,
│ │ │ │ +
103 const PatchCoord *patchCoords,
│ │ │ │ +
104 const PatchArray *patchArrayBuffer,
│ │ │ │ +
105 const int *patchIndexBuffer,
│ │ │ │ +
106 const PatchParam *patchParamBuffer);
│ │ │ │ +
107
│ │ │ │ +
108} // end namespace Osd
│ │ │ │ +
109
│ │ │ │ +
110} // end namespace OPENSUBDIV_VERSION
│ │ │ │ +
111using namespace OPENSUBDIV_VERSION;
│ │ │ │ +
112
│ │ │ │ +
113} // end namespace OpenSubdiv
│ │ │ │ +
114
│ │ │ │ +
115#endif // OPENSUBDIV3_OSD_TBB_KERNEL_H
│ │ │ │ │ │ │ │ +
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)
│ │ │ │ +
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)
│ │ │ │
BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....
│ │ │ │ - │ │ │ │ -
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)
Generic static eval stencils function. This function has a same signature as other device kernels hav...
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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)
Generic static eval stencils function with derivatives. This function has a same signature as other d...
│ │ │ │ -
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)
Static eval stencils function which takes raw CPU pointers for input and output.
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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)
Generic limit eval function with derivatives. This function has a same signature as other device kern...
│ │ │ │ -
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)
Static eval stencils function with derivatives, which takes raw CPU pointers for input and output.
│ │ │ │ -
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)
Static eval stencils function with derivatives, which takes raw CPU pointers for input and output.
│ │ │ │ -
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)
Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...
│ │ │ │ -
static void Synchronize(void *deviceContext=NULL)
synchronize all asynchronous computation invoked on this device.
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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)
Generic limit eval function with derivatives. This function has a same signature as other device kern...
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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)
Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...
│ │ │ │ -
static void SetNumThreads(int numThreads)
Deprecated. Client code should initialize TBB.
│ │ │ │ -
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)
Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...
│ │ │ │ -
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)
Generic static eval stencils function with derivatives. This function has a same signature as other d...
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │
Coordinates set on a patch table.
Definition types.h:42
│ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ -tbbEvaluator.h │ │ │ │ │ +tbbKernel.h │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// │ │ │ │ │ -2// Copyright 2015 Pixar │ │ │ │ │ +2// Copyright 2013 Pixar │ │ │ │ │ 3// │ │ │ │ │ 4// Licensed under the Apache License, Version 2.0 (the "Apache License") │ │ │ │ │ 5// with the following modification; you may not use this file except in │ │ │ │ │ 6// compliance with the Apache License and the following modification to it: │ │ │ │ │ 7// Section 6. Trademarks. is deleted and replaced with: │ │ │ │ │ 8// │ │ │ │ │ 9// 6. Trademarks. This License does not grant permission to use the trade │ │ │ │ │ @@ -24,657 +24,126 @@ │ │ │ │ │ 18// Unless required by applicable law or agreed to in writing, software │ │ │ │ │ 19// distributed under the Apache License with the above modification is │ │ │ │ │ 20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY │ │ │ │ │ 21// KIND, either express or implied. See the Apache License for the specific │ │ │ │ │ 22// language governing permissions and limitations under the Apache License. │ │ │ │ │ 23// │ │ │ │ │ 24 │ │ │ │ │ -25#ifndef OPENSUBDIV3_OSD_TBB_EVALUATOR_H │ │ │ │ │ -26#define OPENSUBDIV3_OSD_TBB_EVALUATOR_H │ │ │ │ │ +25#ifndef OPENSUBDIV3_OSD_TBB_KERNEL_H │ │ │ │ │ +26#define OPENSUBDIV3_OSD_TBB_KERNEL_H │ │ │ │ │ 27 │ │ │ │ │ 28#include "../version.h" │ │ │ │ │ -29#include "../osd/bufferDescriptor.h" │ │ │ │ │ -30#include "../osd/types.h" │ │ │ │ │ +29#include "../far/patchDescriptor.h" │ │ │ │ │ +30#include "../far/patchParam.h" │ │ │ │ │ 31 │ │ │ │ │ -32#include │ │ │ │ │ -33 │ │ │ │ │ -34namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ -35namespace OPENSUBDIV_VERSION { │ │ │ │ │ +32namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ +33namespace OPENSUBDIV_VERSION { │ │ │ │ │ +34 │ │ │ │ │ +35namespace Osd { │ │ │ │ │ 36 │ │ │ │ │ -37namespace Osd { │ │ │ │ │ -38 │ │ │ │ │ -_3_9class _T_b_b_E_v_a_l_u_a_t_o_r { │ │ │ │ │ -40public: │ │ │ │ │ -46 │ │ │ │ │ -71 template │ │ │ │ │ -_7_2 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ -73 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -74 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -75 STENCIL_TABLE const *stencilTable, │ │ │ │ │ -76 _T_b_b_E_v_a_l_u_a_t_o_r const *instance = NULL, │ │ │ │ │ -77 void *deviceContext = NULL) { │ │ │ │ │ -78 │ │ │ │ │ -79 (void)instance; // unused │ │ │ │ │ -80 (void)deviceContext; // unused │ │ │ │ │ -81 │ │ │ │ │ -82 if (stencilTable->GetNumStencils() == 0) │ │ │ │ │ -83 return false; │ │ │ │ │ -84 │ │ │ │ │ -85 return _E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ -86 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ -87 &stencilTable->GetSizes()[0], │ │ │ │ │ -88 &stencilTable->GetOffsets()[0], │ │ │ │ │ -89 &stencilTable->GetControlIndices()[0], │ │ │ │ │ -90 &stencilTable->GetWeights()[0], │ │ │ │ │ -91 /*start = */ 0, │ │ │ │ │ -92 /*end = */ stencilTable->GetNumStencils()); │ │ │ │ │ -93 } │ │ │ │ │ -94 │ │ │ │ │ -_1_2_1 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ -122 const float *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -123 float *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -124 const int * sizes, │ │ │ │ │ -125 const int * offsets, │ │ │ │ │ -126 const int * indices, │ │ │ │ │ -127 const float * weights, │ │ │ │ │ -128 int start, int end); │ │ │ │ │ -129 │ │ │ │ │ -167 template │ │ │ │ │ -_1_6_8 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ -169 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -170 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -171 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -172 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -173 STENCIL_TABLE const *stencilTable, │ │ │ │ │ -174 const _T_b_b_E_v_a_l_u_a_t_o_r *instance = NULL, │ │ │ │ │ -175 void * deviceContext = NULL) { │ │ │ │ │ -176 │ │ │ │ │ -177 (void)instance; // unused │ │ │ │ │ -178 (void)deviceContext; // unused │ │ │ │ │ -179 │ │ │ │ │ -180 return _E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ -181 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ -182 duBuffer->BindCpuBuffer(), duDesc, │ │ │ │ │ -183 dvBuffer->BindCpuBuffer(), dvDesc, │ │ │ │ │ -184 &stencilTable->GetSizes()[0], │ │ │ │ │ -185 &stencilTable->GetOffsets()[0], │ │ │ │ │ -186 &stencilTable->GetControlIndices()[0], │ │ │ │ │ -187 &stencilTable->GetWeights()[0], │ │ │ │ │ -188 &stencilTable->GetDuWeights()[0], │ │ │ │ │ -189 &stencilTable->GetDvWeights()[0], │ │ │ │ │ -190 /*start = */ 0, │ │ │ │ │ -191 /*end = */ stencilTable->GetNumStencils()); │ │ │ │ │ -192 } │ │ │ │ │ -193 │ │ │ │ │ -_2_3_4 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ -235 const float *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -236 float *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -237 float *du, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -238 float *dv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -239 const int * sizes, │ │ │ │ │ -240 const int * offsets, │ │ │ │ │ -241 const int * indices, │ │ │ │ │ -242 const float * weights, │ │ │ │ │ -243 const float * duWeights, │ │ │ │ │ -244 const float * dvWeights, │ │ │ │ │ -245 int start, int end); │ │ │ │ │ -246 │ │ │ │ │ -302 template │ │ │ │ │ -_3_0_3 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ -304 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -305 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -306 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -307 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -308 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -309 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -310 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -311 STENCIL_TABLE const *stencilTable, │ │ │ │ │ -312 const _T_b_b_E_v_a_l_u_a_t_o_r *instance = NULL, │ │ │ │ │ -313 void * deviceContext = NULL) { │ │ │ │ │ -314 │ │ │ │ │ -315 (void)instance; // unused │ │ │ │ │ -316 (void)deviceContext; // unused │ │ │ │ │ -317 │ │ │ │ │ -318 return _E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ -319 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ -320 duBuffer->BindCpuBuffer(), duDesc, │ │ │ │ │ -321 dvBuffer->BindCpuBuffer(), dvDesc, │ │ │ │ │ -322 duuBuffer->BindCpuBuffer(), duuDesc, │ │ │ │ │ -323 duvBuffer->BindCpuBuffer(), duvDesc, │ │ │ │ │ -324 dvvBuffer->BindCpuBuffer(), dvvDesc, │ │ │ │ │ -325 &stencilTable->GetSizes()[0], │ │ │ │ │ -326 &stencilTable->GetOffsets()[0], │ │ │ │ │ -327 &stencilTable->GetControlIndices()[0], │ │ │ │ │ -328 &stencilTable->GetWeights()[0], │ │ │ │ │ -329 &stencilTable->GetDuWeights()[0], │ │ │ │ │ -330 &stencilTable->GetDvWeights()[0], │ │ │ │ │ -331 &stencilTable->GetDuuWeights()[0], │ │ │ │ │ -332 &stencilTable->GetDuvWeights()[0], │ │ │ │ │ -333 &stencilTable->GetDvvWeights()[0], │ │ │ │ │ -334 /*start = */ 0, │ │ │ │ │ -335 /*end = */ stencilTable->GetNumStencils()); │ │ │ │ │ -336 } │ │ │ │ │ -337 │ │ │ │ │ -_3_9_9 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ -400 const float *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -401 float *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -402 float *du, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -403 float *dv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -404 float *duu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -405 float *duv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -406 float *dvv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -407 const int * sizes, │ │ │ │ │ -408 const int * offsets, │ │ │ │ │ -409 const int * indices, │ │ │ │ │ -410 const float * weights, │ │ │ │ │ -411 const float * duWeights, │ │ │ │ │ -412 const float * dvWeights, │ │ │ │ │ -413 const float * duuWeights, │ │ │ │ │ -414 const float * duvWeights, │ │ │ │ │ -415 const float * dvvWeights, │ │ │ │ │ -416 int start, int end); │ │ │ │ │ -417 │ │ │ │ │ -423 │ │ │ │ │ -452 template │ │ │ │ │ -_4_5_4 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ -455 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -456 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -457 int numPatchCoords, │ │ │ │ │ -458 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -459 PATCH_TABLE *patchTable, │ │ │ │ │ -460 _T_b_b_E_v_a_l_u_a_t_o_r const *instance = NULL, │ │ │ │ │ -461 void * deviceContext = NULL) { │ │ │ │ │ -462 │ │ │ │ │ -463 (void)instance; // unused │ │ │ │ │ -464 (void)deviceContext; // unused │ │ │ │ │ -465 │ │ │ │ │ -466 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ -467 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ -468 numPatchCoords, │ │ │ │ │ -469 (const _P_a_t_c_h_C_o_o_r_d*)patchCoords->BindCpuBuffer(), │ │ │ │ │ -470 patchTable->GetPatchArrayBuffer(), │ │ │ │ │ -471 patchTable->GetPatchIndexBuffer(), │ │ │ │ │ -472 patchTable->GetPatchParamBuffer()); │ │ │ │ │ -473 } │ │ │ │ │ -474 │ │ │ │ │ -515 template │ │ │ │ │ -_5_1_7 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ -518 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -519 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -520 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -521 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -522 int numPatchCoords, │ │ │ │ │ -523 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -524 PATCH_TABLE *patchTable, │ │ │ │ │ -525 _T_b_b_E_v_a_l_u_a_t_o_r const *instance = NULL, │ │ │ │ │ -526 void * deviceContext = NULL) { │ │ │ │ │ -527 │ │ │ │ │ -528 (void)instance; // unused │ │ │ │ │ -529 (void)deviceContext; // unused │ │ │ │ │ -530 │ │ │ │ │ -531 // XXX: PatchCoords is somewhat abusing vertex primvar buffer interop. │ │ │ │ │ -532 // ideally all buffer classes should have templated by datatype │ │ │ │ │ -533 // so that downcast isn't needed there. │ │ │ │ │ -534 // (e.g. Osd::CpuBuffer ) │ │ │ │ │ -535 // │ │ │ │ │ -536 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ -537 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ -538 duBuffer->BindCpuBuffer(), duDesc, │ │ │ │ │ -539 dvBuffer->BindCpuBuffer(), dvDesc, │ │ │ │ │ -540 numPatchCoords, │ │ │ │ │ -541 (const _P_a_t_c_h_C_o_o_r_d*)patchCoords->BindCpuBuffer(), │ │ │ │ │ -542 patchTable->GetPatchArrayBuffer(), │ │ │ │ │ -543 patchTable->GetPatchIndexBuffer(), │ │ │ │ │ -544 patchTable->GetPatchParamBuffer()); │ │ │ │ │ -545 } │ │ │ │ │ -546 │ │ │ │ │ -605 template │ │ │ │ │ -_6_0_7 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ -608 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -609 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -610 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -611 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -612 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -613 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -614 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -615 int numPatchCoords, │ │ │ │ │ -616 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -617 PATCH_TABLE *patchTable, │ │ │ │ │ -618 _T_b_b_E_v_a_l_u_a_t_o_r const *instance = NULL, │ │ │ │ │ -619 void * deviceContext = NULL) { │ │ │ │ │ -620 │ │ │ │ │ -621 (void)instance; // unused │ │ │ │ │ -622 (void)deviceContext; // unused │ │ │ │ │ -623 │ │ │ │ │ -624 // XXX: PatchCoords is somewhat abusing vertex primvar buffer interop. │ │ │ │ │ -625 // ideally all buffer classes should have templated by datatype │ │ │ │ │ -626 // so that downcast isn't needed there. │ │ │ │ │ -627 // (e.g. Osd::CpuBuffer ) │ │ │ │ │ -628 // │ │ │ │ │ -629 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ -630 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ -631 duBuffer->BindCpuBuffer(), duDesc, │ │ │ │ │ -632 dvBuffer->BindCpuBuffer(), dvDesc, │ │ │ │ │ -633 duuBuffer->BindCpuBuffer(), duuDesc, │ │ │ │ │ -634 duvBuffer->BindCpuBuffer(), duvDesc, │ │ │ │ │ -635 dvvBuffer->BindCpuBuffer(), dvvDesc, │ │ │ │ │ -636 numPatchCoords, │ │ │ │ │ -637 (const _P_a_t_c_h_C_o_o_r_d*)patchCoords->BindCpuBuffer(), │ │ │ │ │ -638 patchTable->GetPatchArrayBuffer(), │ │ │ │ │ -639 patchTable->GetPatchIndexBuffer(), │ │ │ │ │ -640 patchTable->GetPatchParamBuffer()); │ │ │ │ │ -641 } │ │ │ │ │ -642 │ │ │ │ │ -_6_7_0 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ -671 const float *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -672 float *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -673 int numPatchCoords, │ │ │ │ │ -674 const _P_a_t_c_h_C_o_o_r_d *patchCoords, │ │ │ │ │ -675 const _P_a_t_c_h_A_r_r_a_y *patchArrays, │ │ │ │ │ -676 const int *patchIndexBuffer, │ │ │ │ │ -677 const _P_a_t_c_h_P_a_r_a_m *patchParamBuffer); │ │ │ │ │ -678 │ │ │ │ │ -_7_1_6 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ -717 const float *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -718 float *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -719 float *du, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -720 float *dv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -721 int numPatchCoords, │ │ │ │ │ -722 _P_a_t_c_h_C_o_o_r_d const *patchCoords, │ │ │ │ │ -723 _P_a_t_c_h_A_r_r_a_y const *patchArrays, │ │ │ │ │ -724 const int *patchIndexBuffer, │ │ │ │ │ -725 _P_a_t_c_h_P_a_r_a_m const *patchParamBuffer); │ │ │ │ │ -726 │ │ │ │ │ -_7_7_9 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ -780 const float *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -781 float *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -782 float *du, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -783 float *dv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -784 float *duu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -785 float *duv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -786 float *dvv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -787 int numPatchCoords, │ │ │ │ │ -788 _P_a_t_c_h_C_o_o_r_d const *patchCoords, │ │ │ │ │ -789 _P_a_t_c_h_A_r_r_a_y const *patchArrays, │ │ │ │ │ -790 const int *patchIndexBuffer, │ │ │ │ │ -791 _P_a_t_c_h_P_a_r_a_m const *patchParamBuffer); │ │ │ │ │ -792 │ │ │ │ │ -821 template │ │ │ │ │ -_8_2_3 static bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -824 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -825 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -826 int numPatchCoords, │ │ │ │ │ -827 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -828 PATCH_TABLE *patchTable, │ │ │ │ │ -829 _T_b_b_E_v_a_l_u_a_t_o_r const *instance = NULL, │ │ │ │ │ -830 void * deviceContext = NULL) { │ │ │ │ │ -831 │ │ │ │ │ -832 (void)instance; // unused │ │ │ │ │ -833 (void)deviceContext; // unused │ │ │ │ │ -834 │ │ │ │ │ -835 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ -836 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ -837 numPatchCoords, │ │ │ │ │ -838 (const _P_a_t_c_h_C_o_o_r_d*)patchCoords->BindCpuBuffer(), │ │ │ │ │ -839 patchTable->GetVaryingPatchArrayBuffer(), │ │ │ │ │ -840 patchTable->GetVaryingPatchIndexBuffer(), │ │ │ │ │ -841 patchTable->GetPatchParamBuffer()); │ │ │ │ │ -842 } │ │ │ │ │ -843 │ │ │ │ │ -884 template │ │ │ │ │ -_8_8_6 static bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -887 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -888 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -889 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -890 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -891 int numPatchCoords, │ │ │ │ │ -892 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -893 PATCH_TABLE *patchTable, │ │ │ │ │ -894 _T_b_b_E_v_a_l_u_a_t_o_r const *instance = NULL, │ │ │ │ │ -895 void * deviceContext = NULL) { │ │ │ │ │ -896 │ │ │ │ │ -897 (void)instance; // unused │ │ │ │ │ -898 (void)deviceContext; // unused │ │ │ │ │ -899 │ │ │ │ │ -900 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ -901 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ -902 duBuffer->BindCpuBuffer(), duDesc, │ │ │ │ │ -903 dvBuffer->BindCpuBuffer(), dvDesc, │ │ │ │ │ -904 numPatchCoords, │ │ │ │ │ -905 (const _P_a_t_c_h_C_o_o_r_d*)patchCoords->BindCpuBuffer(), │ │ │ │ │ -906 patchTable->GetVaryingPatchArrayBuffer(), │ │ │ │ │ -907 patchTable->GetVaryingPatchIndexBuffer(), │ │ │ │ │ -908 patchTable->GetPatchParamBuffer()); │ │ │ │ │ -909 } │ │ │ │ │ -910 │ │ │ │ │ -969 template │ │ │ │ │ -_9_7_1 static bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -972 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -973 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -974 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -975 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -976 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -977 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -978 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -979 int numPatchCoords, │ │ │ │ │ -980 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -981 PATCH_TABLE *patchTable, │ │ │ │ │ -982 _T_b_b_E_v_a_l_u_a_t_o_r const *instance = NULL, │ │ │ │ │ -983 void * deviceContext = NULL) { │ │ │ │ │ -984 │ │ │ │ │ -985 (void)instance; // unused │ │ │ │ │ -986 (void)deviceContext; // unused │ │ │ │ │ -987 │ │ │ │ │ -988 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ -989 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ -990 duBuffer->BindCpuBuffer(), duDesc, │ │ │ │ │ -991 dvBuffer->BindCpuBuffer(), dvDesc, │ │ │ │ │ -992 duuBuffer->BindCpuBuffer(), duuDesc, │ │ │ │ │ -993 duvBuffer->BindCpuBuffer(), duvDesc, │ │ │ │ │ -994 dvvBuffer->BindCpuBuffer(), dvvDesc, │ │ │ │ │ -995 numPatchCoords, │ │ │ │ │ -996 (const _P_a_t_c_h_C_o_o_r_d*)patchCoords->BindCpuBuffer(), │ │ │ │ │ -997 patchTable->GetVaryingPatchArrayBuffer(), │ │ │ │ │ -998 patchTable->GetVaryingPatchIndexBuffer(), │ │ │ │ │ -999 patchTable->GetPatchParamBuffer()); │ │ │ │ │ -1000 } │ │ │ │ │ -1001 │ │ │ │ │ -1032 template │ │ │ │ │ -_1_0_3_4 static bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -1035 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1036 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1037 int numPatchCoords, │ │ │ │ │ -1038 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1039 PATCH_TABLE *patchTable, │ │ │ │ │ -1040 int fvarChannel, │ │ │ │ │ -1041 _T_b_b_E_v_a_l_u_a_t_o_r const *instance = NULL, │ │ │ │ │ -1042 void * deviceContext = NULL) { │ │ │ │ │ -1043 │ │ │ │ │ -1044 (void)instance; // unused │ │ │ │ │ -1045 (void)deviceContext; // unused │ │ │ │ │ -1046 │ │ │ │ │ -1047 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ -1048 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ -1049 numPatchCoords, │ │ │ │ │ -1050 (const _P_a_t_c_h_C_o_o_r_d*)patchCoords->BindCpuBuffer(), │ │ │ │ │ -1051 patchTable->GetFVarPatchArrayBuffer(fvarChannel), │ │ │ │ │ -1052 patchTable->GetFVarPatchIndexBuffer(fvarChannel), │ │ │ │ │ -1053 patchTable->GetFVarPatchParamBuffer(fvarChannel)); │ │ │ │ │ -1054 } │ │ │ │ │ -1055 │ │ │ │ │ -1098 template │ │ │ │ │ -_1_1_0_0 static bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -1101 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1102 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1103 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -1104 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -1105 int numPatchCoords, │ │ │ │ │ -1106 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1107 PATCH_TABLE *patchTable, │ │ │ │ │ -1108 int fvarChannel, │ │ │ │ │ -1109 _T_b_b_E_v_a_l_u_a_t_o_r const *instance = NULL, │ │ │ │ │ -1110 void * deviceContext = NULL) { │ │ │ │ │ -1111 │ │ │ │ │ -1112 (void)instance; // unused │ │ │ │ │ -1113 (void)deviceContext; // unused │ │ │ │ │ -1114 │ │ │ │ │ -1115 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ -1116 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ -1117 duBuffer->BindCpuBuffer(), duDesc, │ │ │ │ │ -1118 dvBuffer->BindCpuBuffer(), dvDesc, │ │ │ │ │ -1119 numPatchCoords, │ │ │ │ │ -1120 (const _P_a_t_c_h_C_o_o_r_d*)patchCoords->BindCpuBuffer(), │ │ │ │ │ -1121 patchTable->GetFVarPatchArrayBuffer(fvarChannel), │ │ │ │ │ -1122 patchTable->GetFVarPatchIndexBuffer(fvarChannel), │ │ │ │ │ -1123 patchTable->GetFVarPatchParamBuffer(fvarChannel)); │ │ │ │ │ -1124 } │ │ │ │ │ -1125 │ │ │ │ │ -1186 template │ │ │ │ │ -_1_1_8_8 static bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -1189 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1190 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1191 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -1192 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -1193 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -1194 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -1195 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -1196 int numPatchCoords, │ │ │ │ │ -1197 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1198 PATCH_TABLE *patchTable, │ │ │ │ │ -1199 int fvarChannel, │ │ │ │ │ -1200 _T_b_b_E_v_a_l_u_a_t_o_r const *instance = NULL, │ │ │ │ │ -1201 void * deviceContext = NULL) { │ │ │ │ │ -1202 │ │ │ │ │ -1203 (void)instance; // unused │ │ │ │ │ -1204 (void)deviceContext; // unused │ │ │ │ │ -1205 │ │ │ │ │ -1206 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ -1207 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ -1208 duBuffer->BindCpuBuffer(), duDesc, │ │ │ │ │ -1209 dvBuffer->BindCpuBuffer(), dvDesc, │ │ │ │ │ -1210 duuBuffer->BindCpuBuffer(), duuDesc, │ │ │ │ │ -1211 duvBuffer->BindCpuBuffer(), duvDesc, │ │ │ │ │ -1212 dvvBuffer->BindCpuBuffer(), dvvDesc, │ │ │ │ │ -1213 numPatchCoords, │ │ │ │ │ -1214 (const _P_a_t_c_h_C_o_o_r_d*)patchCoords->BindCpuBuffer(), │ │ │ │ │ -1215 patchTable->GetFVarPatchArrayBuffer(fvarChannel), │ │ │ │ │ -1216 patchTable->GetFVarPatchIndexBuffer(fvarChannel), │ │ │ │ │ -1217 patchTable->GetFVarPatchParamBuffer(fvarChannel)); │ │ │ │ │ -1218 } │ │ │ │ │ -1219 │ │ │ │ │ -1225 │ │ │ │ │ -_1_2_2_7 static void _S_y_n_c_h_r_o_n_i_z_e(void *deviceContext = NULL); │ │ │ │ │ -1228 │ │ │ │ │ -_1_2_3_3 static void _S_e_t_N_u_m_T_h_r_e_a_d_s(int numThreads); │ │ │ │ │ -1234}; │ │ │ │ │ -1235 │ │ │ │ │ -1236 │ │ │ │ │ -1237} // end namespace Osd │ │ │ │ │ -1238 │ │ │ │ │ -1239} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ -1240using namespace OPENSUBDIV_VERSION; │ │ │ │ │ -1241 │ │ │ │ │ -1242} // end namespace OpenSubdiv │ │ │ │ │ -1243 │ │ │ │ │ -1244 │ │ │ │ │ -1245#endif // OPENSUBDIV3_OSD_TBB_EVALUATOR_H │ │ │ │ │ +37struct PatchArray; │ │ │ │ │ +38struct PatchCoord; │ │ │ │ │ +39struct PatchParam; │ │ │ │ │ +40struct BufferDescriptor; │ │ │ │ │ +41 │ │ │ │ │ +42void │ │ │ │ │ +_4_3_T_b_b_E_v_a_l_S_t_e_n_c_i_l_s(float const * src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +44 float * dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +45 int const * sizes, │ │ │ │ │ +46 int const * offsets, │ │ │ │ │ +47 int const * indices, │ │ │ │ │ +48 float const * weights, │ │ │ │ │ +49 int start, int end); │ │ │ │ │ +50 │ │ │ │ │ +51void │ │ │ │ │ +_5_2_T_b_b_E_v_a_l_S_t_e_n_c_i_l_s(float const * src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +53 float * dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +54 float * dstDu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDuDesc, │ │ │ │ │ +55 float * dstDv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDvDesc, │ │ │ │ │ +56 int const * sizes, │ │ │ │ │ +57 int const * offsets, │ │ │ │ │ +58 int const * indices, │ │ │ │ │ +59 float const * weights, │ │ │ │ │ +60 float const * duWeights, │ │ │ │ │ +61 float const * dvWeights, │ │ │ │ │ +62 int start, int end); │ │ │ │ │ +63 │ │ │ │ │ +64void │ │ │ │ │ +_6_5_T_b_b_E_v_a_l_S_t_e_n_c_i_l_s(float const * src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +66 float * dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +67 float * dstDu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDuDesc, │ │ │ │ │ +68 float * dstDv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDvDesc, │ │ │ │ │ +69 float * dstDuu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDuuDesc, │ │ │ │ │ +70 float * dstDuv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDuvDesc, │ │ │ │ │ +71 float * dstDvv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDvvDesc, │ │ │ │ │ +72 int const * sizes, │ │ │ │ │ +73 int const * offsets, │ │ │ │ │ +74 int const * indices, │ │ │ │ │ +75 float const * weights, │ │ │ │ │ +76 float const * duWeights, │ │ │ │ │ +77 float const * dvWeights, │ │ │ │ │ +78 float const * duuWeights, │ │ │ │ │ +79 float const * duvWeights, │ │ │ │ │ +80 float const * dvvWeights, │ │ │ │ │ +81 int start, int end); │ │ │ │ │ +82 │ │ │ │ │ +83void │ │ │ │ │ +_8_4_T_b_b_E_v_a_l_P_a_t_c_h_e_s(float const *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +85 float *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +86 float *dstDu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDuDesc, │ │ │ │ │ +87 float *dstDv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDvDesc, │ │ │ │ │ +88 int numPatchCoords, │ │ │ │ │ +89 const _P_a_t_c_h_C_o_o_r_d *patchCoords, │ │ │ │ │ +90 const _P_a_t_c_h_A_r_r_a_y *patchArrayBuffer, │ │ │ │ │ +91 const int *patchIndexBuffer, │ │ │ │ │ +92 const _P_a_t_c_h_P_a_r_a_m *patchParamBuffer); │ │ │ │ │ +93 │ │ │ │ │ +94void │ │ │ │ │ +_9_5_T_b_b_E_v_a_l_P_a_t_c_h_e_s(float const *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +96 float *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +97 float *dstDu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDuDesc, │ │ │ │ │ +98 float *dstDv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDvDesc, │ │ │ │ │ +99 float *dstDuu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDuuDesc, │ │ │ │ │ +100 float *dstDuv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDuvDesc, │ │ │ │ │ +101 float *dstDvv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDvvDesc, │ │ │ │ │ +102 int numPatchCoords, │ │ │ │ │ +103 const _P_a_t_c_h_C_o_o_r_d *patchCoords, │ │ │ │ │ +104 const _P_a_t_c_h_A_r_r_a_y *patchArrayBuffer, │ │ │ │ │ +105 const int *patchIndexBuffer, │ │ │ │ │ +106 const _P_a_t_c_h_P_a_r_a_m *patchParamBuffer); │ │ │ │ │ +107 │ │ │ │ │ +108} // end namespace Osd │ │ │ │ │ +109 │ │ │ │ │ +110} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ +111using namespace OPENSUBDIV_VERSION; │ │ │ │ │ +112 │ │ │ │ │ +113} // end namespace OpenSubdiv │ │ │ │ │ +114 │ │ │ │ │ +115#endif // OPENSUBDIV3_OSD_TBB_KERNEL_H │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v │ │ │ │ │ DDeeffiinniittiioonn _l_i_m_i_t_s_._h_:_3_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ +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) │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +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) │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ BufferDescriptor is a struct which describes buffer elements in interleaved │ │ │ │ │ data buffers.... │ │ │ │ │ DDeeffiinniittiioonn _b_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r_._h_:_6_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r │ │ │ │ │ -DDeeffiinniittiioonn _t_b_b_E_v_a_l_u_a_t_o_r_._h_:_3_9 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ -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) │ │ │ │ │ -Generic static eval stencils function. This function has a same signature as │ │ │ │ │ -other device kernels hav... │ │ │ │ │ -DDeeffiinniittiioonn _t_b_b_E_v_a_l_u_a_t_o_r_._h_:_7_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _t_b_b_E_v_a_l_u_a_t_o_r_._h_:_4_5_4 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ -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) │ │ │ │ │ -Generic static eval stencils function with derivatives. This function has a │ │ │ │ │ -same signature as other d... │ │ │ │ │ -DDeeffiinniittiioonn _t_b_b_E_v_a_l_u_a_t_o_r_._h_:_3_0_3 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ -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) │ │ │ │ │ -Static eval stencils function which takes raw CPU pointers for input and │ │ │ │ │ -output. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _t_b_b_E_v_a_l_u_a_t_o_r_._h_:_8_8_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function with derivatives. This function has a same │ │ │ │ │ -signature as other device kern... │ │ │ │ │ -DDeeffiinniittiioonn _t_b_b_E_v_a_l_u_a_t_o_r_._h_:_6_0_7 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ -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) │ │ │ │ │ -Static eval stencils function with derivatives, which takes raw CPU pointers │ │ │ │ │ -for input and output. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ -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) │ │ │ │ │ -Static eval stencils function with derivatives, which takes raw CPU pointers │ │ │ │ │ -for input and output. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ -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) │ │ │ │ │ -Static limit eval function. It takes an array of PatchCoord and evaluate limit │ │ │ │ │ -values on given PatchT... │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_S_y_n_c_h_r_o_n_i_z_e │ │ │ │ │ -static void Synchronize(void *deviceContext=NULL) │ │ │ │ │ -synchronize all asynchronous computation invoked on this device. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _t_b_b_E_v_a_l_u_a_t_o_r_._h_:_9_7_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _t_b_b_E_v_a_l_u_a_t_o_r_._h_:_1_1_0_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function with derivatives. This function has a same │ │ │ │ │ -signature as other device kern... │ │ │ │ │ -DDeeffiinniittiioonn _t_b_b_E_v_a_l_u_a_t_o_r_._h_:_5_1_7 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _t_b_b_E_v_a_l_u_a_t_o_r_._h_:_1_0_3_4 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ -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) │ │ │ │ │ -Static limit eval function. It takes an array of PatchCoord and evaluate limit │ │ │ │ │ -values on given PatchT... │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_S_e_t_N_u_m_T_h_r_e_a_d_s │ │ │ │ │ -static void SetNumThreads(int numThreads) │ │ │ │ │ -Deprecated. Client code should initialize TBB. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ -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) │ │ │ │ │ -Static limit eval function. It takes an array of PatchCoord and evaluate limit │ │ │ │ │ -values on given PatchT... │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ -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) │ │ │ │ │ -Generic static eval stencils function with derivatives. This function has a │ │ │ │ │ -same signature as other d... │ │ │ │ │ -DDeeffiinniittiioonn _t_b_b_E_v_a_l_u_a_t_o_r_._h_:_1_6_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _t_b_b_E_v_a_l_u_a_t_o_r_._h_:_1_1_8_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_T_b_b_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _t_b_b_E_v_a_l_u_a_t_o_r_._h_:_8_2_3 │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_P_a_t_c_h_C_o_o_r_d │ │ │ │ │ Coordinates set on a patch table. │ │ │ │ │ DDeeffiinniittiioonn _t_y_p_e_s_._h_:_4_2 │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_P_a_t_c_h_A_r_r_a_y │ │ │ │ │ DDeeffiinniittiioonn _t_y_p_e_s_._h_:_6_6 │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_P_a_t_c_h_P_a_r_a_m │ │ │ │ │ DDeeffiinniittiioonn _t_y_p_e_s_._h_:_1_2_7 │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _o_s_d │ │ │ │ │ - * _t_b_b_E_v_a_l_u_a_t_o_r_._h │ │ │ │ │ + * _t_b_b_K_e_r_n_e_l_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00878.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/osd/ompEvaluator.h File Reference │ │ │ │ +OpenSubdiv: opensubdiv/osd/ompKernel.h File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -88,44 +88,45 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ -Classes | │ │ │ │ -Namespaces
│ │ │ │ -
ompEvaluator.h File Reference
│ │ │ │ +Namespaces | │ │ │ │ +Functions
│ │ │ │ +
ompKernel.h File Reference
│ │ │ │ │ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ -#include "../osd/bufferDescriptor.h"
│ │ │ │ -#include "../osd/types.h"
│ │ │ │ -#include <cstddef>
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -

│ │ │ │ -Classes

class  OmpEvaluator
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +

│ │ │ │ Namespaces

namespace  OpenSubdiv
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION::Osd
 
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │

│ │ │ │ +Functions

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)
 
void OmpEvalStencils (float const *src, BufferDescriptor const &srcDesc, float *dst, BufferDescriptor const &dstDesc, float *dstDu, BufferDescriptor const &dstDuDesc, float *dstDv, BufferDescriptor const &dstDvDesc, int const *sizes, int const *offsets, int const *indices, float const *weights, float const *duWeights, float const *dvWeights, int start, int end)
 
void OmpEvalStencils (float const *src, BufferDescriptor const &srcDesc, float *dst, BufferDescriptor const &dstDesc, float *dstDu, BufferDescriptor const &dstDuDesc, float *dstDv, BufferDescriptor const &dstDvDesc, float *dstDuu, BufferDescriptor const &dstDuuDesc, float *dstDuv, BufferDescriptor const &dstDuvDesc, float *dstDvv, BufferDescriptor 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)
 
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,25 +1,41 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ -_C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ -ompEvaluator.h File Reference │ │ │ │ │ +_N_a_m_e_s_p_a_c_e_s | _F_u_n_c_t_i_o_n_s │ │ │ │ │ +ompKernel.h File Reference │ │ │ │ │ #include "../version.h" │ │ │ │ │ -#include "_._._/_o_s_d_/_b_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r_._h" │ │ │ │ │ -#include "_._._/_o_s_d_/_t_y_p_e_s_._h" │ │ │ │ │ -#include │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ -CCllaasssseess │ │ │ │ │ -class   _O_m_p_E_v_a_l_u_a_t_o_r │ │ │ │ │ -  │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d │ │ │ │ │   │ │ │ │ │ +FFuunnccttiioonnss │ │ │ │ │ +void  _O_m_p_E_v_a_l_S_t_e_n_c_i_l_s (float const *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, float │ │ │ │ │ + *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, int const *sizes, int const │ │ │ │ │ + *offsets, int const *indices, float const *weights, int start, int end) │ │ │ │ │ +  │ │ │ │ │ +void  _O_m_p_E_v_a_l_S_t_e_n_c_i_l_s (float const *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, float │ │ │ │ │ + *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, float *dstDu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ + const &dstDuDesc, float *dstDv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDvDesc, int │ │ │ │ │ + const *sizes, int const *offsets, int const *indices, float const │ │ │ │ │ + *weights, float const *duWeights, float const *dvWeights, int start, int │ │ │ │ │ + end) │ │ │ │ │ +  │ │ │ │ │ +void  _O_m_p_E_v_a_l_S_t_e_n_c_i_l_s (float const *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, float │ │ │ │ │ + *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, float *dstDu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ + const &dstDuDesc, float *dstDv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDvDesc, float │ │ │ │ │ + *dstDuu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDuuDesc, float *dstDuv, │ │ │ │ │ + _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDuvDesc, float *dstDvv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r 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) │ │ │ │ │ +  │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _o_s_d │ │ │ │ │ - * _o_m_p_E_v_a_l_u_a_t_o_r_._h │ │ │ │ │ + * _o_m_p_K_e_r_n_e_l_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00878.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -1,3 +1,5 @@ │ │ │ │ │ var a00878 = [ │ │ │ │ │ - ["OmpEvaluator", "a01313.html", null] │ │ │ │ │ + ["OmpEvalStencils", "a00878.html#a44a05502feb5015035bc81b93cffb99c", null], │ │ │ │ │ + ["OmpEvalStencils", "a00878.html#a907dc53421460557871ddc35f77751f5", null], │ │ │ │ │ + ["OmpEvalStencils", "a00878.html#a870745ff3e883b32547d4db42b3be2bd", null] │ │ │ │ │ ]; │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00878_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/osd/ompEvaluator.h Source File │ │ │ │ +OpenSubdiv: opensubdiv/osd/ompKernel.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -92,19 +92,19 @@ │ │ │ │
No Matches
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
ompEvaluator.h
│ │ │ │ +
ompKernel.h
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1//
│ │ │ │ -
2// Copyright 2015 Pixar
│ │ │ │ +
2// Copyright 2013 Pixar
│ │ │ │
3//
│ │ │ │
4// Licensed under the Apache License, Version 2.0 (the "Apache License")
│ │ │ │
5// with the following modification; you may not use this file except in
│ │ │ │
6// compliance with the Apache License and the following modification to it:
│ │ │ │
7// Section 6. Trademarks. is deleted and replaced with:
│ │ │ │
8//
│ │ │ │
9// 6. Trademarks. This License does not grant permission to use the trade
│ │ │ │ @@ -119,528 +119,82 @@ │ │ │ │
18// Unless required by applicable law or agreed to in writing, software
│ │ │ │
19// distributed under the Apache License with the above modification is
│ │ │ │
20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
│ │ │ │
21// KIND, either express or implied. See the Apache License for the specific
│ │ │ │
22// language governing permissions and limitations under the Apache License.
│ │ │ │
23//
│ │ │ │
24
│ │ │ │ -
25#ifndef OPENSUBDIV3_OSD_OMP_EVALUATOR_H
│ │ │ │ -
26#define OPENSUBDIV3_OSD_OMP_EVALUATOR_H
│ │ │ │ +
25#ifndef OPENSUBDIV3_OSD_OMP_KERNEL_H
│ │ │ │ +
26#define OPENSUBDIV3_OSD_OMP_KERNEL_H
│ │ │ │
27
│ │ │ │
28#include "../version.h"
│ │ │ │ -
29#include "../osd/bufferDescriptor.h"
│ │ │ │ -
30#include "../osd/types.h"
│ │ │ │ -
31
│ │ │ │ -
32#include <cstddef>
│ │ │ │ -
33
│ │ │ │ -
34namespace OpenSubdiv {
│ │ │ │ -
35namespace OPENSUBDIV_VERSION {
│ │ │ │ +
29
│ │ │ │ +
30namespace OpenSubdiv {
│ │ │ │ +
31namespace OPENSUBDIV_VERSION {
│ │ │ │ +
32
│ │ │ │ +
33namespace Osd {
│ │ │ │ +
34
│ │ │ │ +
35struct BufferDescriptor;
│ │ │ │
36
│ │ │ │ -
37namespace Osd {
│ │ │ │ -
38
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
40public:
│ │ │ │ -
46
│ │ │ │ -
71 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ -
│ │ │ │ -
72 static bool EvalStencils(
│ │ │ │ -
73 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
74 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
75 STENCIL_TABLE const *stencilTable,
│ │ │ │ -
76 const OmpEvaluator *instance = NULL,
│ │ │ │ -
77 void * deviceContext = NULL) {
│ │ │ │ -
78
│ │ │ │ -
79 (void)instance; // unused
│ │ │ │ -
80 (void)deviceContext; // unused
│ │ │ │ -
81
│ │ │ │ -
82 if (stencilTable->GetNumStencils() == 0)
│ │ │ │ -
83 return false;
│ │ │ │ +
37void
│ │ │ │ +
38OmpEvalStencils(float const * src, BufferDescriptor const &srcDesc,
│ │ │ │ +
39 float * dst, BufferDescriptor const &dstDesc,
│ │ │ │ +
40 int const * sizes,
│ │ │ │ +
41 int const * offsets,
│ │ │ │ +
42 int const * indices,
│ │ │ │ +
43 float const * weights,
│ │ │ │ +
44 int start, int end);
│ │ │ │ +
45
│ │ │ │ +
46void
│ │ │ │ +
47OmpEvalStencils(float const * src, BufferDescriptor const &srcDesc,
│ │ │ │ +
48 float * dst, BufferDescriptor const &dstDesc,
│ │ │ │ +
49 float * dstDu, BufferDescriptor const &dstDuDesc,
│ │ │ │ +
50 float * dstDv, BufferDescriptor const &dstDvDesc,
│ │ │ │ +
51 int const * sizes,
│ │ │ │ +
52 int const * offsets,
│ │ │ │ +
53 int const * indices,
│ │ │ │ +
54 float const * weights,
│ │ │ │ +
55 float const * duWeights,
│ │ │ │ +
56 float const * dvWeights,
│ │ │ │ +
57 int start, int end);
│ │ │ │ +
58
│ │ │ │ +
59void
│ │ │ │ +
60OmpEvalStencils(float const * src, BufferDescriptor const &srcDesc,
│ │ │ │ +
61 float * dst, BufferDescriptor const &dstDesc,
│ │ │ │ +
62 float * dstDu, BufferDescriptor const &dstDuDesc,
│ │ │ │ +
63 float * dstDv, BufferDescriptor const &dstDvDesc,
│ │ │ │ +
64 float * dstDuu, BufferDescriptor const &dstDuuDesc,
│ │ │ │ +
65 float * dstDuv, BufferDescriptor const &dstDuvDesc,
│ │ │ │ +
66 float * dstDvv, BufferDescriptor const &dstDvvDesc,
│ │ │ │ +
67 int const * sizes,
│ │ │ │ +
68 int const * offsets,
│ │ │ │ +
69 int const * indices,
│ │ │ │ +
70 float const * weights,
│ │ │ │ +
71 float const * duWeights,
│ │ │ │ +
72 float const * dvWeights,
│ │ │ │ +
73 float const * duuWeights,
│ │ │ │ +
74 float const * duvWeights,
│ │ │ │ +
75 float const * dvvWeights,
│ │ │ │ +
76 int start, int end);
│ │ │ │ +
77
│ │ │ │ +
78} // end namespace Osd
│ │ │ │ +
79
│ │ │ │ +
80} // end namespace OPENSUBDIV_VERSION
│ │ │ │ +
81using namespace OPENSUBDIV_VERSION;
│ │ │ │ +
82
│ │ │ │ +
83} // end namespace OpenSubdiv
│ │ │ │
84
│ │ │ │ -
85 return EvalStencils(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ -
86 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ -
87 &stencilTable->GetSizes()[0],
│ │ │ │ -
88 &stencilTable->GetOffsets()[0],
│ │ │ │ -
89 &stencilTable->GetControlIndices()[0],
│ │ │ │ -
90 &stencilTable->GetWeights()[0],
│ │ │ │ -
91 /*start = */ 0,
│ │ │ │ -
92 /*end = */ stencilTable->GetNumStencils());
│ │ │ │ -
93 }
│ │ │ │ -
│ │ │ │ -
94
│ │ │ │ -
121 static bool EvalStencils(
│ │ │ │ -
122 const float *src, BufferDescriptor const &srcDesc,
│ │ │ │ -
123 float *dst, BufferDescriptor const &dstDesc,
│ │ │ │ -
124 const int * sizes,
│ │ │ │ -
125 const int * offsets,
│ │ │ │ -
126 const int * indices,
│ │ │ │ -
127 const float * weights,
│ │ │ │ -
128 int start, int end);
│ │ │ │ -
129
│ │ │ │ -
167 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ -
│ │ │ │ -
168 static bool EvalStencils(
│ │ │ │ -
169 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
170 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
171 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
172 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
173 STENCIL_TABLE const *stencilTable,
│ │ │ │ -
174 const OmpEvaluator *instance = NULL,
│ │ │ │ -
175 void * deviceContext = NULL) {
│ │ │ │ -
176
│ │ │ │ -
177 (void)instance; // unused
│ │ │ │ -
178 (void)deviceContext; // unused
│ │ │ │ -
179
│ │ │ │ -
180 return EvalStencils(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ -
181 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ -
182 duBuffer->BindCpuBuffer(), duDesc,
│ │ │ │ -
183 dvBuffer->BindCpuBuffer(), dvDesc,
│ │ │ │ -
184 &stencilTable->GetSizes()[0],
│ │ │ │ -
185 &stencilTable->GetOffsets()[0],
│ │ │ │ -
186 &stencilTable->GetControlIndices()[0],
│ │ │ │ -
187 &stencilTable->GetWeights()[0],
│ │ │ │ -
188 &stencilTable->GetDuWeights()[0],
│ │ │ │ -
189 &stencilTable->GetDvWeights()[0],
│ │ │ │ -
190 /*start = */ 0,
│ │ │ │ -
191 /*end = */ stencilTable->GetNumStencils());
│ │ │ │ -
192 }
│ │ │ │ -
│ │ │ │ -
193
│ │ │ │ -
234 static bool EvalStencils(
│ │ │ │ -
235 const float *src, BufferDescriptor const &srcDesc,
│ │ │ │ -
236 float *dst, BufferDescriptor const &dstDesc,
│ │ │ │ -
237 float *du, BufferDescriptor const &duDesc,
│ │ │ │ -
238 float *dv, BufferDescriptor const &dvDesc,
│ │ │ │ -
239 const int * sizes,
│ │ │ │ -
240 const int * offsets,
│ │ │ │ -
241 const int * indices,
│ │ │ │ -
242 const float * weights,
│ │ │ │ -
243 const float * duWeights,
│ │ │ │ -
244 const float * dvWeights,
│ │ │ │ -
245 int start, int end);
│ │ │ │ -
246
│ │ │ │ -
302 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ -
│ │ │ │ -
303 static bool EvalStencils(
│ │ │ │ -
304 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
305 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
306 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
307 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
308 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ -
309 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ -
310 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ -
311 STENCIL_TABLE const *stencilTable,
│ │ │ │ -
312 const OmpEvaluator *instance = NULL,
│ │ │ │ -
313 void * deviceContext = NULL) {
│ │ │ │ -
314
│ │ │ │ -
315 (void)instance; // unused
│ │ │ │ -
316 (void)deviceContext; // unused
│ │ │ │ -
317
│ │ │ │ -
318 return EvalStencils(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ -
319 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ -
320 duBuffer->BindCpuBuffer(), duDesc,
│ │ │ │ -
321 dvBuffer->BindCpuBuffer(), dvDesc,
│ │ │ │ -
322 duuBuffer->BindCpuBuffer(), duuDesc,
│ │ │ │ -
323 duvBuffer->BindCpuBuffer(), duvDesc,
│ │ │ │ -
324 dvvBuffer->BindCpuBuffer(), dvvDesc,
│ │ │ │ -
325 &stencilTable->GetSizes()[0],
│ │ │ │ -
326 &stencilTable->GetOffsets()[0],
│ │ │ │ -
327 &stencilTable->GetControlIndices()[0],
│ │ │ │ -
328 &stencilTable->GetWeights()[0],
│ │ │ │ -
329 &stencilTable->GetDuWeights()[0],
│ │ │ │ -
330 &stencilTable->GetDvWeights()[0],
│ │ │ │ -
331 &stencilTable->GetDuuWeights()[0],
│ │ │ │ -
332 &stencilTable->GetDuvWeights()[0],
│ │ │ │ -
333 &stencilTable->GetDvvWeights()[0],
│ │ │ │ -
334 /*start = */ 0,
│ │ │ │ -
335 /*end = */ stencilTable->GetNumStencils());
│ │ │ │ -
336 }
│ │ │ │ -
│ │ │ │ -
337
│ │ │ │ -
399 static bool EvalStencils(
│ │ │ │ -
400 const float *src, BufferDescriptor const &srcDesc,
│ │ │ │ -
401 float *dst, BufferDescriptor const &dstDesc,
│ │ │ │ -
402 float *du, BufferDescriptor const &duDesc,
│ │ │ │ -
403 float *dv, BufferDescriptor const &dvDesc,
│ │ │ │ -
404 float *duu, BufferDescriptor const &duuDesc,
│ │ │ │ -
405 float *duv, BufferDescriptor const &duvDesc,
│ │ │ │ -
406 float *dvv, BufferDescriptor const &dvvDesc,
│ │ │ │ -
407 const int * sizes,
│ │ │ │ -
408 const int * offsets,
│ │ │ │ -
409 const int * indices,
│ │ │ │ -
410 const float * weights,
│ │ │ │ -
411 const float * duWeights,
│ │ │ │ -
412 const float * dvWeights,
│ │ │ │ -
413 const float * duuWeights,
│ │ │ │ -
414 const float * duvWeights,
│ │ │ │ -
415 const float * dvvWeights,
│ │ │ │ -
416 int start, int end);
│ │ │ │ -
417
│ │ │ │ -
423
│ │ │ │ -
452 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
453 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ -
454 static bool EvalPatches(
│ │ │ │ -
455 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
456 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
457 int numPatchCoords,
│ │ │ │ -
458 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
459 PATCH_TABLE *patchTable,
│ │ │ │ -
460 OmpEvaluator const *instance = NULL,
│ │ │ │ -
461 void * deviceContext = NULL) {
│ │ │ │ -
462
│ │ │ │ -
463 (void)instance; // unused
│ │ │ │ -
464 (void)deviceContext; // unused
│ │ │ │ -
465
│ │ │ │ -
466 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ -
467 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ -
468 numPatchCoords,
│ │ │ │ -
469 (const PatchCoord*)patchCoords->BindCpuBuffer(),
│ │ │ │ -
470 patchTable->GetPatchArrayBuffer(),
│ │ │ │ -
471 patchTable->GetPatchIndexBuffer(),
│ │ │ │ -
472 patchTable->GetPatchParamBuffer());
│ │ │ │ -
473 }
│ │ │ │ -
│ │ │ │ -
474
│ │ │ │ -
515 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
516 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ -
517 static bool EvalPatches(
│ │ │ │ -
518 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
519 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
520 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
521 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
522 int numPatchCoords,
│ │ │ │ -
523 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
524 PATCH_TABLE *patchTable,
│ │ │ │ -
525 OmpEvaluator const *instance = NULL,
│ │ │ │ -
526 void * deviceContext = NULL) {
│ │ │ │ -
527
│ │ │ │ -
528 (void)instance; // unused
│ │ │ │ -
529 (void)deviceContext; // unused
│ │ │ │ -
530
│ │ │ │ -
531 // XXX: PatchCoords is somewhat abusing vertex primvar buffer interop.
│ │ │ │ -
532 // ideally all buffer classes should have templated by datatype
│ │ │ │ -
533 // so that downcast isn't needed there.
│ │ │ │ -
534 // (e.g. Osd::CpuBuffer<PatchCoord> )
│ │ │ │ -
535 //
│ │ │ │ -
536 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ -
537 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ -
538 duBuffer->BindCpuBuffer(), duDesc,
│ │ │ │ -
539 dvBuffer->BindCpuBuffer(), dvDesc,
│ │ │ │ -
540 numPatchCoords,
│ │ │ │ -
541 (const PatchCoord*)patchCoords->BindCpuBuffer(),
│ │ │ │ -
542 patchTable->GetPatchArrayBuffer(),
│ │ │ │ -
543 patchTable->GetPatchIndexBuffer(),
│ │ │ │ -
544 patchTable->GetPatchParamBuffer());
│ │ │ │ -
545 }
│ │ │ │ -
│ │ │ │ -
546
│ │ │ │ -
605 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
606 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ -
607 static bool EvalPatches(
│ │ │ │ -
608 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
609 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
610 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
611 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
612 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ -
613 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ -
614 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ -
615 int numPatchCoords,
│ │ │ │ -
616 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
617 PATCH_TABLE *patchTable,
│ │ │ │ -
618 OmpEvaluator const *instance = NULL,
│ │ │ │ -
619 void * deviceContext = NULL) {
│ │ │ │ -
620
│ │ │ │ -
621 (void)instance; // unused
│ │ │ │ -
622 (void)deviceContext; // unused
│ │ │ │ -
623
│ │ │ │ -
624 // XXX: PatchCoords is somewhat abusing vertex primvar buffer interop.
│ │ │ │ -
625 // ideally all buffer classes should have templated by datatype
│ │ │ │ -
626 // so that downcast isn't needed there.
│ │ │ │ -
627 // (e.g. Osd::CpuBuffer<PatchCoord> )
│ │ │ │ -
628 //
│ │ │ │ -
629 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ -
630 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ -
631 duBuffer->BindCpuBuffer(), duDesc,
│ │ │ │ -
632 dvBuffer->BindCpuBuffer(), dvDesc,
│ │ │ │ -
633 duuBuffer->BindCpuBuffer(), duuDesc,
│ │ │ │ -
634 duvBuffer->BindCpuBuffer(), duvDesc,
│ │ │ │ -
635 dvvBuffer->BindCpuBuffer(), dvvDesc,
│ │ │ │ -
636 numPatchCoords,
│ │ │ │ -
637 (const PatchCoord*)patchCoords->BindCpuBuffer(),
│ │ │ │ -
638 patchTable->GetPatchArrayBuffer(),
│ │ │ │ -
639 patchTable->GetPatchIndexBuffer(),
│ │ │ │ -
640 patchTable->GetPatchParamBuffer());
│ │ │ │ -
641 }
│ │ │ │ -
│ │ │ │ -
642
│ │ │ │ -
670 static bool EvalPatches(
│ │ │ │ -
671 const float *src, BufferDescriptor const &srcDesc,
│ │ │ │ -
672 float *dst, BufferDescriptor const &dstDesc,
│ │ │ │ -
673 int numPatchCoords,
│ │ │ │ -
674 const PatchCoord *patchCoords,
│ │ │ │ -
675 const PatchArray *patchArrays,
│ │ │ │ -
676 const int *patchIndexBuffer,
│ │ │ │ -
677 const PatchParam *patchParamBuffer);
│ │ │ │ -
678
│ │ │ │ -
716 static bool EvalPatches(
│ │ │ │ -
717 const float *src, BufferDescriptor const &srcDesc,
│ │ │ │ -
718 float *dst, BufferDescriptor const &dstDesc,
│ │ │ │ -
719 float *du, BufferDescriptor const &duDesc,
│ │ │ │ -
720 float *dv, BufferDescriptor const &dvDesc,
│ │ │ │ -
721 int numPatchCoords,
│ │ │ │ -
722 PatchCoord const *patchCoords,
│ │ │ │ -
723 PatchArray const *patchArrays,
│ │ │ │ -
724 const int *patchIndexBuffer,
│ │ │ │ -
725 PatchParam const *patchParamBuffer);
│ │ │ │ -
726
│ │ │ │ -
779 static bool EvalPatches(
│ │ │ │ -
780 const float *src, BufferDescriptor const &srcDesc,
│ │ │ │ -
781 float *dst, BufferDescriptor const &dstDesc,
│ │ │ │ -
782 float *du, BufferDescriptor const &duDesc,
│ │ │ │ -
783 float *dv, BufferDescriptor const &dvDesc,
│ │ │ │ -
784 float *duu, BufferDescriptor const &duuDesc,
│ │ │ │ -
785 float *duv, BufferDescriptor const &duvDesc,
│ │ │ │ -
786 float *dvv, BufferDescriptor const &dvvDesc,
│ │ │ │ -
787 int numPatchCoords,
│ │ │ │ -
788 PatchCoord const *patchCoords,
│ │ │ │ -
789 PatchArray const *patchArrays,
│ │ │ │ -
790 const int *patchIndexBuffer,
│ │ │ │ -
791 PatchParam const *patchParamBuffer);
│ │ │ │ -
792
│ │ │ │ -
821 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
822 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
824 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
825 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
826 int numPatchCoords,
│ │ │ │ -
827 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
828 PATCH_TABLE *patchTable,
│ │ │ │ -
829 OmpEvaluator const *instance = NULL,
│ │ │ │ -
830 void * deviceContext = NULL) {
│ │ │ │ -
831
│ │ │ │ -
832 (void)instance; // unused
│ │ │ │ -
833 (void)deviceContext; // unused
│ │ │ │ -
834
│ │ │ │ -
835 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ -
836 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ -
837 numPatchCoords,
│ │ │ │ -
838 (const PatchCoord*)patchCoords->BindCpuBuffer(),
│ │ │ │ -
839 patchTable->GetVaryingPatchArrayBuffer(),
│ │ │ │ -
840 patchTable->GetVaryingPatchIndexBuffer(),
│ │ │ │ -
841 patchTable->GetPatchParamBuffer());
│ │ │ │ -
842 }
│ │ │ │ -
│ │ │ │ -
843
│ │ │ │ -
884 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
885 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
887 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
888 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
889 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
890 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
891 int numPatchCoords,
│ │ │ │ -
892 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
893 PATCH_TABLE *patchTable,
│ │ │ │ -
894 OmpEvaluator const *instance = NULL,
│ │ │ │ -
895 void * deviceContext = NULL) {
│ │ │ │ -
896
│ │ │ │ -
897 (void)instance; // unused
│ │ │ │ -
898 (void)deviceContext; // unused
│ │ │ │ -
899
│ │ │ │ -
900 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ -
901 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ -
902 duBuffer->BindCpuBuffer(), duDesc,
│ │ │ │ -
903 dvBuffer->BindCpuBuffer(), dvDesc,
│ │ │ │ -
904 numPatchCoords,
│ │ │ │ -
905 (const PatchCoord*)patchCoords->BindCpuBuffer(),
│ │ │ │ -
906 patchTable->GetVaryingPatchArrayBuffer(),
│ │ │ │ -
907 patchTable->GetVaryingPatchIndexBuffer(),
│ │ │ │ -
908 patchTable->GetPatchParamBuffer());
│ │ │ │ -
909 }
│ │ │ │ -
│ │ │ │ -
910
│ │ │ │ -
969 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
970 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
972 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
973 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
974 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
975 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
976 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ -
977 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ -
978 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ -
979 int numPatchCoords,
│ │ │ │ -
980 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
981 PATCH_TABLE *patchTable,
│ │ │ │ -
982 OmpEvaluator const *instance = NULL,
│ │ │ │ -
983 void * deviceContext = NULL) {
│ │ │ │ -
984
│ │ │ │ -
985 (void)instance; // unused
│ │ │ │ -
986 (void)deviceContext; // unused
│ │ │ │ -
987
│ │ │ │ -
988 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ -
989 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ -
990 duBuffer->BindCpuBuffer(), duDesc,
│ │ │ │ -
991 dvBuffer->BindCpuBuffer(), dvDesc,
│ │ │ │ -
992 duuBuffer->BindCpuBuffer(), duuDesc,
│ │ │ │ -
993 duvBuffer->BindCpuBuffer(), duvDesc,
│ │ │ │ -
994 dvvBuffer->BindCpuBuffer(), dvvDesc,
│ │ │ │ -
995 numPatchCoords,
│ │ │ │ -
996 (const PatchCoord*)patchCoords->BindCpuBuffer(),
│ │ │ │ -
997 patchTable->GetVaryingPatchArrayBuffer(),
│ │ │ │ -
998 patchTable->GetVaryingPatchIndexBuffer(),
│ │ │ │ -
999 patchTable->GetPatchParamBuffer());
│ │ │ │ -
1000 }
│ │ │ │ -
│ │ │ │ -
1001
│ │ │ │ -
1032 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1033 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1035 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1036 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1037 int numPatchCoords,
│ │ │ │ -
1038 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1039 PATCH_TABLE *patchTable,
│ │ │ │ -
1040 int fvarChannel,
│ │ │ │ -
1041 OmpEvaluator const *instance = NULL,
│ │ │ │ -
1042 void * deviceContext = NULL) {
│ │ │ │ -
1043
│ │ │ │ -
1044 (void)instance; // unused
│ │ │ │ -
1045 (void)deviceContext; // unused
│ │ │ │ -
1046
│ │ │ │ -
1047 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ -
1048 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ -
1049 numPatchCoords,
│ │ │ │ -
1050 (const PatchCoord*)patchCoords->BindCpuBuffer(),
│ │ │ │ -
1051 patchTable->GetFVarPatchArrayBuffer(fvarChannel),
│ │ │ │ -
1052 patchTable->GetFVarPatchIndexBuffer(fvarChannel),
│ │ │ │ -
1053 patchTable->GetFVarPatchParamBuffer(fvarChannel));
│ │ │ │ -
1054 }
│ │ │ │ -
│ │ │ │ -
1055
│ │ │ │ -
1098 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1099 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1101 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1102 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1103 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
1104 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
1105 int numPatchCoords,
│ │ │ │ -
1106 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1107 PATCH_TABLE *patchTable,
│ │ │ │ -
1108 int fvarChannel,
│ │ │ │ -
1109 OmpEvaluator const *instance = NULL,
│ │ │ │ -
1110 void * deviceContext = NULL) {
│ │ │ │ -
1111
│ │ │ │ -
1112 (void)instance; // unused
│ │ │ │ -
1113 (void)deviceContext; // unused
│ │ │ │ -
1114
│ │ │ │ -
1115 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ -
1116 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ -
1117 duBuffer->BindCpuBuffer(), duDesc,
│ │ │ │ -
1118 dvBuffer->BindCpuBuffer(), dvDesc,
│ │ │ │ -
1119 numPatchCoords,
│ │ │ │ -
1120 (const PatchCoord*)patchCoords->BindCpuBuffer(),
│ │ │ │ -
1121 patchTable->GetFVarPatchArrayBuffer(fvarChannel),
│ │ │ │ -
1122 patchTable->GetFVarPatchIndexBuffer(fvarChannel),
│ │ │ │ -
1123 patchTable->GetFVarPatchParamBuffer(fvarChannel));
│ │ │ │ -
1124 }
│ │ │ │ -
│ │ │ │ -
1125
│ │ │ │ -
1186 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ -
1187 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ -
│ │ │ │ - │ │ │ │ -
1189 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ -
1190 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ -
1191 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ -
1192 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ -
1193 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ -
1194 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ -
1195 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ -
1196 int numPatchCoords,
│ │ │ │ -
1197 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ -
1198 PATCH_TABLE *patchTable,
│ │ │ │ -
1199 int fvarChannel,
│ │ │ │ -
1200 OmpEvaluator const *instance = NULL,
│ │ │ │ -
1201 void * deviceContext = NULL) {
│ │ │ │ -
1202
│ │ │ │ -
1203 (void)instance; // unused
│ │ │ │ -
1204 (void)deviceContext; // unused
│ │ │ │ -
1205
│ │ │ │ -
1206 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ -
1207 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ -
1208 duBuffer->BindCpuBuffer(), duDesc,
│ │ │ │ -
1209 dvBuffer->BindCpuBuffer(), dvDesc,
│ │ │ │ -
1210 duuBuffer->BindCpuBuffer(), duuDesc,
│ │ │ │ -
1211 duvBuffer->BindCpuBuffer(), duvDesc,
│ │ │ │ -
1212 dvvBuffer->BindCpuBuffer(), dvvDesc,
│ │ │ │ -
1213 numPatchCoords,
│ │ │ │ -
1214 (const PatchCoord*)patchCoords->BindCpuBuffer(),
│ │ │ │ -
1215 patchTable->GetFVarPatchArrayBuffer(fvarChannel),
│ │ │ │ -
1216 patchTable->GetFVarPatchIndexBuffer(fvarChannel),
│ │ │ │ -
1217 patchTable->GetFVarPatchParamBuffer(fvarChannel));
│ │ │ │ -
1218 }
│ │ │ │ -
│ │ │ │ -
1219
│ │ │ │ -
1225
│ │ │ │ -
1226 static void Synchronize(void *deviceContext = NULL);
│ │ │ │ -
1227
│ │ │ │ -
1229 static void SetNumThreads(int numThreads);
│ │ │ │ -
1230};
│ │ │ │ -
│ │ │ │ -
1231
│ │ │ │ -
1232
│ │ │ │ -
1233} // end namespace Osd
│ │ │ │ -
1234
│ │ │ │ -
1235} // end namespace OPENSUBDIV_VERSION
│ │ │ │ -
1236using namespace OPENSUBDIV_VERSION;
│ │ │ │ -
1237
│ │ │ │ -
1238} // end namespace OpenSubdiv
│ │ │ │ -
1239
│ │ │ │ -
1240
│ │ │ │ -
1241#endif // OPENSUBDIV3_OSD_OMP_EVALUATOR_H
│ │ │ │ +
85#endif // OPENSUBDIV3_OSD_OMP_KERNEL_H
│ │ │ │ │ │ │ │ +
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)
│ │ │ │
BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....
│ │ │ │ - │ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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)
Static eval stencils function which takes raw CPU pointers for input and output.
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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)
Generic static eval stencils function with derivatives. This function has a same signature as other d...
│ │ │ │ -
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)
Static eval stencils function with derivatives, which takes raw CPU pointers for input and output.
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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)
Static eval stencils function with derivatives, which takes raw CPU pointers for input and output.
│ │ │ │ -
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)
Generic static eval stencils function. This function has a same signature as other device kernels hav...
│ │ │ │ -
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)
Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...
│ │ │ │ -
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)
Generic limit eval function with derivatives. This function has a same signature as other device kern...
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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)
Generic limit eval function with derivatives. This function has a same signature as other device kern...
│ │ │ │ -
static void Synchronize(void *deviceContext=NULL)
│ │ │ │ -
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)
Generic static eval stencils function with derivatives. This function has a same signature as other d...
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
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)
Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...
│ │ │ │ -
static void SetNumThreads(int numThreads)
Deprecated. Client code should initialize OpenMP.
│ │ │ │ -
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)
Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...
│ │ │ │ -
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ -
Coordinates set on a patch table.
Definition types.h:42
│ │ │ │ - │ │ │ │ - │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ -ompEvaluator.h │ │ │ │ │ +ompKernel.h │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// │ │ │ │ │ -2// Copyright 2015 Pixar │ │ │ │ │ +2// Copyright 2013 Pixar │ │ │ │ │ 3// │ │ │ │ │ 4// Licensed under the Apache License, Version 2.0 (the "Apache License") │ │ │ │ │ 5// with the following modification; you may not use this file except in │ │ │ │ │ 6// compliance with the Apache License and the following modification to it: │ │ │ │ │ 7// Section 6. Trademarks. is deleted and replaced with: │ │ │ │ │ 8// │ │ │ │ │ 9// 6. Trademarks. This License does not grant permission to use the trade │ │ │ │ │ @@ -24,656 +24,82 @@ │ │ │ │ │ 18// Unless required by applicable law or agreed to in writing, software │ │ │ │ │ 19// distributed under the Apache License with the above modification is │ │ │ │ │ 20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY │ │ │ │ │ 21// KIND, either express or implied. See the Apache License for the specific │ │ │ │ │ 22// language governing permissions and limitations under the Apache License. │ │ │ │ │ 23// │ │ │ │ │ 24 │ │ │ │ │ -25#ifndef OPENSUBDIV3_OSD_OMP_EVALUATOR_H │ │ │ │ │ -26#define OPENSUBDIV3_OSD_OMP_EVALUATOR_H │ │ │ │ │ +25#ifndef OPENSUBDIV3_OSD_OMP_KERNEL_H │ │ │ │ │ +26#define OPENSUBDIV3_OSD_OMP_KERNEL_H │ │ │ │ │ 27 │ │ │ │ │ 28#include "../version.h" │ │ │ │ │ -29#include "../osd/bufferDescriptor.h" │ │ │ │ │ -30#include "../osd/types.h" │ │ │ │ │ -31 │ │ │ │ │ -32#include │ │ │ │ │ -33 │ │ │ │ │ -34namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ -35namespace OPENSUBDIV_VERSION { │ │ │ │ │ +29 │ │ │ │ │ +30namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ +31namespace OPENSUBDIV_VERSION { │ │ │ │ │ +32 │ │ │ │ │ +33namespace Osd { │ │ │ │ │ +34 │ │ │ │ │ +35struct BufferDescriptor; │ │ │ │ │ 36 │ │ │ │ │ -37namespace Osd { │ │ │ │ │ -38 │ │ │ │ │ -_3_9class _O_m_p_E_v_a_l_u_a_t_o_r { │ │ │ │ │ -40public: │ │ │ │ │ -46 │ │ │ │ │ -71 template │ │ │ │ │ -_7_2 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ -73 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -74 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -75 STENCIL_TABLE const *stencilTable, │ │ │ │ │ -76 const _O_m_p_E_v_a_l_u_a_t_o_r *instance = NULL, │ │ │ │ │ -77 void * deviceContext = NULL) { │ │ │ │ │ -78 │ │ │ │ │ -79 (void)instance; // unused │ │ │ │ │ -80 (void)deviceContext; // unused │ │ │ │ │ -81 │ │ │ │ │ -82 if (stencilTable->GetNumStencils() == 0) │ │ │ │ │ -83 return false; │ │ │ │ │ +37void │ │ │ │ │ +_3_8_O_m_p_E_v_a_l_S_t_e_n_c_i_l_s(float const * src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +39 float * dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +40 int const * sizes, │ │ │ │ │ +41 int const * offsets, │ │ │ │ │ +42 int const * indices, │ │ │ │ │ +43 float const * weights, │ │ │ │ │ +44 int start, int end); │ │ │ │ │ +45 │ │ │ │ │ +46void │ │ │ │ │ +_4_7_O_m_p_E_v_a_l_S_t_e_n_c_i_l_s(float const * src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +48 float * dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +49 float * dstDu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDuDesc, │ │ │ │ │ +50 float * dstDv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDvDesc, │ │ │ │ │ +51 int const * sizes, │ │ │ │ │ +52 int const * offsets, │ │ │ │ │ +53 int const * indices, │ │ │ │ │ +54 float const * weights, │ │ │ │ │ +55 float const * duWeights, │ │ │ │ │ +56 float const * dvWeights, │ │ │ │ │ +57 int start, int end); │ │ │ │ │ +58 │ │ │ │ │ +59void │ │ │ │ │ +_6_0_O_m_p_E_v_a_l_S_t_e_n_c_i_l_s(float const * src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +61 float * dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +62 float * dstDu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDuDesc, │ │ │ │ │ +63 float * dstDv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDvDesc, │ │ │ │ │ +64 float * dstDuu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDuuDesc, │ │ │ │ │ +65 float * dstDuv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDuvDesc, │ │ │ │ │ +66 float * dstDvv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDvvDesc, │ │ │ │ │ +67 int const * sizes, │ │ │ │ │ +68 int const * offsets, │ │ │ │ │ +69 int const * indices, │ │ │ │ │ +70 float const * weights, │ │ │ │ │ +71 float const * duWeights, │ │ │ │ │ +72 float const * dvWeights, │ │ │ │ │ +73 float const * duuWeights, │ │ │ │ │ +74 float const * duvWeights, │ │ │ │ │ +75 float const * dvvWeights, │ │ │ │ │ +76 int start, int end); │ │ │ │ │ +77 │ │ │ │ │ +78} // end namespace Osd │ │ │ │ │ +79 │ │ │ │ │ +80} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ +81using namespace OPENSUBDIV_VERSION; │ │ │ │ │ +82 │ │ │ │ │ +83} // end namespace OpenSubdiv │ │ │ │ │ 84 │ │ │ │ │ -85 return _E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ -86 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ -87 &stencilTable->GetSizes()[0], │ │ │ │ │ -88 &stencilTable->GetOffsets()[0], │ │ │ │ │ -89 &stencilTable->GetControlIndices()[0], │ │ │ │ │ -90 &stencilTable->GetWeights()[0], │ │ │ │ │ -91 /*start = */ 0, │ │ │ │ │ -92 /*end = */ stencilTable->GetNumStencils()); │ │ │ │ │ -93 } │ │ │ │ │ -94 │ │ │ │ │ -_1_2_1 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ -122 const float *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -123 float *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -124 const int * sizes, │ │ │ │ │ -125 const int * offsets, │ │ │ │ │ -126 const int * indices, │ │ │ │ │ -127 const float * weights, │ │ │ │ │ -128 int start, int end); │ │ │ │ │ -129 │ │ │ │ │ -167 template │ │ │ │ │ -_1_6_8 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ -169 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -170 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -171 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -172 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -173 STENCIL_TABLE const *stencilTable, │ │ │ │ │ -174 const _O_m_p_E_v_a_l_u_a_t_o_r *instance = NULL, │ │ │ │ │ -175 void * deviceContext = NULL) { │ │ │ │ │ -176 │ │ │ │ │ -177 (void)instance; // unused │ │ │ │ │ -178 (void)deviceContext; // unused │ │ │ │ │ -179 │ │ │ │ │ -180 return _E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ -181 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ -182 duBuffer->BindCpuBuffer(), duDesc, │ │ │ │ │ -183 dvBuffer->BindCpuBuffer(), dvDesc, │ │ │ │ │ -184 &stencilTable->GetSizes()[0], │ │ │ │ │ -185 &stencilTable->GetOffsets()[0], │ │ │ │ │ -186 &stencilTable->GetControlIndices()[0], │ │ │ │ │ -187 &stencilTable->GetWeights()[0], │ │ │ │ │ -188 &stencilTable->GetDuWeights()[0], │ │ │ │ │ -189 &stencilTable->GetDvWeights()[0], │ │ │ │ │ -190 /*start = */ 0, │ │ │ │ │ -191 /*end = */ stencilTable->GetNumStencils()); │ │ │ │ │ -192 } │ │ │ │ │ -193 │ │ │ │ │ -_2_3_4 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ -235 const float *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -236 float *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -237 float *du, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -238 float *dv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -239 const int * sizes, │ │ │ │ │ -240 const int * offsets, │ │ │ │ │ -241 const int * indices, │ │ │ │ │ -242 const float * weights, │ │ │ │ │ -243 const float * duWeights, │ │ │ │ │ -244 const float * dvWeights, │ │ │ │ │ -245 int start, int end); │ │ │ │ │ -246 │ │ │ │ │ -302 template │ │ │ │ │ -_3_0_3 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ -304 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -305 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -306 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -307 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -308 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -309 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -310 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -311 STENCIL_TABLE const *stencilTable, │ │ │ │ │ -312 const _O_m_p_E_v_a_l_u_a_t_o_r *instance = NULL, │ │ │ │ │ -313 void * deviceContext = NULL) { │ │ │ │ │ -314 │ │ │ │ │ -315 (void)instance; // unused │ │ │ │ │ -316 (void)deviceContext; // unused │ │ │ │ │ -317 │ │ │ │ │ -318 return _E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ -319 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ -320 duBuffer->BindCpuBuffer(), duDesc, │ │ │ │ │ -321 dvBuffer->BindCpuBuffer(), dvDesc, │ │ │ │ │ -322 duuBuffer->BindCpuBuffer(), duuDesc, │ │ │ │ │ -323 duvBuffer->BindCpuBuffer(), duvDesc, │ │ │ │ │ -324 dvvBuffer->BindCpuBuffer(), dvvDesc, │ │ │ │ │ -325 &stencilTable->GetSizes()[0], │ │ │ │ │ -326 &stencilTable->GetOffsets()[0], │ │ │ │ │ -327 &stencilTable->GetControlIndices()[0], │ │ │ │ │ -328 &stencilTable->GetWeights()[0], │ │ │ │ │ -329 &stencilTable->GetDuWeights()[0], │ │ │ │ │ -330 &stencilTable->GetDvWeights()[0], │ │ │ │ │ -331 &stencilTable->GetDuuWeights()[0], │ │ │ │ │ -332 &stencilTable->GetDuvWeights()[0], │ │ │ │ │ -333 &stencilTable->GetDvvWeights()[0], │ │ │ │ │ -334 /*start = */ 0, │ │ │ │ │ -335 /*end = */ stencilTable->GetNumStencils()); │ │ │ │ │ -336 } │ │ │ │ │ -337 │ │ │ │ │ -_3_9_9 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ -400 const float *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -401 float *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -402 float *du, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -403 float *dv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -404 float *duu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -405 float *duv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -406 float *dvv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -407 const int * sizes, │ │ │ │ │ -408 const int * offsets, │ │ │ │ │ -409 const int * indices, │ │ │ │ │ -410 const float * weights, │ │ │ │ │ -411 const float * duWeights, │ │ │ │ │ -412 const float * dvWeights, │ │ │ │ │ -413 const float * duuWeights, │ │ │ │ │ -414 const float * duvWeights, │ │ │ │ │ -415 const float * dvvWeights, │ │ │ │ │ -416 int start, int end); │ │ │ │ │ -417 │ │ │ │ │ -423 │ │ │ │ │ -452 template │ │ │ │ │ -_4_5_4 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ -455 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -456 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -457 int numPatchCoords, │ │ │ │ │ -458 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -459 PATCH_TABLE *patchTable, │ │ │ │ │ -460 _O_m_p_E_v_a_l_u_a_t_o_r const *instance = NULL, │ │ │ │ │ -461 void * deviceContext = NULL) { │ │ │ │ │ -462 │ │ │ │ │ -463 (void)instance; // unused │ │ │ │ │ -464 (void)deviceContext; // unused │ │ │ │ │ -465 │ │ │ │ │ -466 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ -467 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ -468 numPatchCoords, │ │ │ │ │ -469 (const _P_a_t_c_h_C_o_o_r_d*)patchCoords->BindCpuBuffer(), │ │ │ │ │ -470 patchTable->GetPatchArrayBuffer(), │ │ │ │ │ -471 patchTable->GetPatchIndexBuffer(), │ │ │ │ │ -472 patchTable->GetPatchParamBuffer()); │ │ │ │ │ -473 } │ │ │ │ │ -474 │ │ │ │ │ -515 template │ │ │ │ │ -_5_1_7 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ -518 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -519 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -520 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -521 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -522 int numPatchCoords, │ │ │ │ │ -523 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -524 PATCH_TABLE *patchTable, │ │ │ │ │ -525 _O_m_p_E_v_a_l_u_a_t_o_r const *instance = NULL, │ │ │ │ │ -526 void * deviceContext = NULL) { │ │ │ │ │ -527 │ │ │ │ │ -528 (void)instance; // unused │ │ │ │ │ -529 (void)deviceContext; // unused │ │ │ │ │ -530 │ │ │ │ │ -531 // XXX: PatchCoords is somewhat abusing vertex primvar buffer interop. │ │ │ │ │ -532 // ideally all buffer classes should have templated by datatype │ │ │ │ │ -533 // so that downcast isn't needed there. │ │ │ │ │ -534 // (e.g. Osd::CpuBuffer ) │ │ │ │ │ -535 // │ │ │ │ │ -536 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ -537 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ -538 duBuffer->BindCpuBuffer(), duDesc, │ │ │ │ │ -539 dvBuffer->BindCpuBuffer(), dvDesc, │ │ │ │ │ -540 numPatchCoords, │ │ │ │ │ -541 (const _P_a_t_c_h_C_o_o_r_d*)patchCoords->BindCpuBuffer(), │ │ │ │ │ -542 patchTable->GetPatchArrayBuffer(), │ │ │ │ │ -543 patchTable->GetPatchIndexBuffer(), │ │ │ │ │ -544 patchTable->GetPatchParamBuffer()); │ │ │ │ │ -545 } │ │ │ │ │ -546 │ │ │ │ │ -605 template │ │ │ │ │ -_6_0_7 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ -608 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -609 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -610 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -611 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -612 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -613 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -614 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -615 int numPatchCoords, │ │ │ │ │ -616 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -617 PATCH_TABLE *patchTable, │ │ │ │ │ -618 _O_m_p_E_v_a_l_u_a_t_o_r const *instance = NULL, │ │ │ │ │ -619 void * deviceContext = NULL) { │ │ │ │ │ -620 │ │ │ │ │ -621 (void)instance; // unused │ │ │ │ │ -622 (void)deviceContext; // unused │ │ │ │ │ -623 │ │ │ │ │ -624 // XXX: PatchCoords is somewhat abusing vertex primvar buffer interop. │ │ │ │ │ -625 // ideally all buffer classes should have templated by datatype │ │ │ │ │ -626 // so that downcast isn't needed there. │ │ │ │ │ -627 // (e.g. Osd::CpuBuffer ) │ │ │ │ │ -628 // │ │ │ │ │ -629 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ -630 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ -631 duBuffer->BindCpuBuffer(), duDesc, │ │ │ │ │ -632 dvBuffer->BindCpuBuffer(), dvDesc, │ │ │ │ │ -633 duuBuffer->BindCpuBuffer(), duuDesc, │ │ │ │ │ -634 duvBuffer->BindCpuBuffer(), duvDesc, │ │ │ │ │ -635 dvvBuffer->BindCpuBuffer(), dvvDesc, │ │ │ │ │ -636 numPatchCoords, │ │ │ │ │ -637 (const _P_a_t_c_h_C_o_o_r_d*)patchCoords->BindCpuBuffer(), │ │ │ │ │ -638 patchTable->GetPatchArrayBuffer(), │ │ │ │ │ -639 patchTable->GetPatchIndexBuffer(), │ │ │ │ │ -640 patchTable->GetPatchParamBuffer()); │ │ │ │ │ -641 } │ │ │ │ │ -642 │ │ │ │ │ -_6_7_0 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ -671 const float *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -672 float *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -673 int numPatchCoords, │ │ │ │ │ -674 const _P_a_t_c_h_C_o_o_r_d *patchCoords, │ │ │ │ │ -675 const _P_a_t_c_h_A_r_r_a_y *patchArrays, │ │ │ │ │ -676 const int *patchIndexBuffer, │ │ │ │ │ -677 const _P_a_t_c_h_P_a_r_a_m *patchParamBuffer); │ │ │ │ │ -678 │ │ │ │ │ -_7_1_6 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ -717 const float *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -718 float *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -719 float *du, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -720 float *dv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -721 int numPatchCoords, │ │ │ │ │ -722 _P_a_t_c_h_C_o_o_r_d const *patchCoords, │ │ │ │ │ -723 _P_a_t_c_h_A_r_r_a_y const *patchArrays, │ │ │ │ │ -724 const int *patchIndexBuffer, │ │ │ │ │ -725 _P_a_t_c_h_P_a_r_a_m const *patchParamBuffer); │ │ │ │ │ -726 │ │ │ │ │ -_7_7_9 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ -780 const float *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -781 float *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -782 float *du, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -783 float *dv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -784 float *duu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -785 float *duv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -786 float *dvv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -787 int numPatchCoords, │ │ │ │ │ -788 _P_a_t_c_h_C_o_o_r_d const *patchCoords, │ │ │ │ │ -789 _P_a_t_c_h_A_r_r_a_y const *patchArrays, │ │ │ │ │ -790 const int *patchIndexBuffer, │ │ │ │ │ -791 _P_a_t_c_h_P_a_r_a_m const *patchParamBuffer); │ │ │ │ │ -792 │ │ │ │ │ -821 template │ │ │ │ │ -_8_2_3 static bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -824 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -825 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -826 int numPatchCoords, │ │ │ │ │ -827 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -828 PATCH_TABLE *patchTable, │ │ │ │ │ -829 _O_m_p_E_v_a_l_u_a_t_o_r const *instance = NULL, │ │ │ │ │ -830 void * deviceContext = NULL) { │ │ │ │ │ -831 │ │ │ │ │ -832 (void)instance; // unused │ │ │ │ │ -833 (void)deviceContext; // unused │ │ │ │ │ -834 │ │ │ │ │ -835 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ -836 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ -837 numPatchCoords, │ │ │ │ │ -838 (const _P_a_t_c_h_C_o_o_r_d*)patchCoords->BindCpuBuffer(), │ │ │ │ │ -839 patchTable->GetVaryingPatchArrayBuffer(), │ │ │ │ │ -840 patchTable->GetVaryingPatchIndexBuffer(), │ │ │ │ │ -841 patchTable->GetPatchParamBuffer()); │ │ │ │ │ -842 } │ │ │ │ │ -843 │ │ │ │ │ -884 template │ │ │ │ │ -_8_8_6 static bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -887 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -888 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -889 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -890 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -891 int numPatchCoords, │ │ │ │ │ -892 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -893 PATCH_TABLE *patchTable, │ │ │ │ │ -894 _O_m_p_E_v_a_l_u_a_t_o_r const *instance = NULL, │ │ │ │ │ -895 void * deviceContext = NULL) { │ │ │ │ │ -896 │ │ │ │ │ -897 (void)instance; // unused │ │ │ │ │ -898 (void)deviceContext; // unused │ │ │ │ │ -899 │ │ │ │ │ -900 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ -901 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ -902 duBuffer->BindCpuBuffer(), duDesc, │ │ │ │ │ -903 dvBuffer->BindCpuBuffer(), dvDesc, │ │ │ │ │ -904 numPatchCoords, │ │ │ │ │ -905 (const _P_a_t_c_h_C_o_o_r_d*)patchCoords->BindCpuBuffer(), │ │ │ │ │ -906 patchTable->GetVaryingPatchArrayBuffer(), │ │ │ │ │ -907 patchTable->GetVaryingPatchIndexBuffer(), │ │ │ │ │ -908 patchTable->GetPatchParamBuffer()); │ │ │ │ │ -909 } │ │ │ │ │ -910 │ │ │ │ │ -969 template │ │ │ │ │ -_9_7_1 static bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ -972 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -973 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -974 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -975 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -976 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -977 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -978 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -979 int numPatchCoords, │ │ │ │ │ -980 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -981 PATCH_TABLE *patchTable, │ │ │ │ │ -982 _O_m_p_E_v_a_l_u_a_t_o_r const *instance = NULL, │ │ │ │ │ -983 void * deviceContext = NULL) { │ │ │ │ │ -984 │ │ │ │ │ -985 (void)instance; // unused │ │ │ │ │ -986 (void)deviceContext; // unused │ │ │ │ │ -987 │ │ │ │ │ -988 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ -989 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ -990 duBuffer->BindCpuBuffer(), duDesc, │ │ │ │ │ -991 dvBuffer->BindCpuBuffer(), dvDesc, │ │ │ │ │ -992 duuBuffer->BindCpuBuffer(), duuDesc, │ │ │ │ │ -993 duvBuffer->BindCpuBuffer(), duvDesc, │ │ │ │ │ -994 dvvBuffer->BindCpuBuffer(), dvvDesc, │ │ │ │ │ -995 numPatchCoords, │ │ │ │ │ -996 (const _P_a_t_c_h_C_o_o_r_d*)patchCoords->BindCpuBuffer(), │ │ │ │ │ -997 patchTable->GetVaryingPatchArrayBuffer(), │ │ │ │ │ -998 patchTable->GetVaryingPatchIndexBuffer(), │ │ │ │ │ -999 patchTable->GetPatchParamBuffer()); │ │ │ │ │ -1000 } │ │ │ │ │ -1001 │ │ │ │ │ -1032 template │ │ │ │ │ -_1_0_3_4 static bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -1035 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1036 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1037 int numPatchCoords, │ │ │ │ │ -1038 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1039 PATCH_TABLE *patchTable, │ │ │ │ │ -1040 int fvarChannel, │ │ │ │ │ -1041 _O_m_p_E_v_a_l_u_a_t_o_r const *instance = NULL, │ │ │ │ │ -1042 void * deviceContext = NULL) { │ │ │ │ │ -1043 │ │ │ │ │ -1044 (void)instance; // unused │ │ │ │ │ -1045 (void)deviceContext; // unused │ │ │ │ │ -1046 │ │ │ │ │ -1047 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ -1048 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ -1049 numPatchCoords, │ │ │ │ │ -1050 (const _P_a_t_c_h_C_o_o_r_d*)patchCoords->BindCpuBuffer(), │ │ │ │ │ -1051 patchTable->GetFVarPatchArrayBuffer(fvarChannel), │ │ │ │ │ -1052 patchTable->GetFVarPatchIndexBuffer(fvarChannel), │ │ │ │ │ -1053 patchTable->GetFVarPatchParamBuffer(fvarChannel)); │ │ │ │ │ -1054 } │ │ │ │ │ -1055 │ │ │ │ │ -1098 template │ │ │ │ │ -_1_1_0_0 static bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -1101 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1102 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1103 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -1104 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -1105 int numPatchCoords, │ │ │ │ │ -1106 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1107 PATCH_TABLE *patchTable, │ │ │ │ │ -1108 int fvarChannel, │ │ │ │ │ -1109 _O_m_p_E_v_a_l_u_a_t_o_r const *instance = NULL, │ │ │ │ │ -1110 void * deviceContext = NULL) { │ │ │ │ │ -1111 │ │ │ │ │ -1112 (void)instance; // unused │ │ │ │ │ -1113 (void)deviceContext; // unused │ │ │ │ │ -1114 │ │ │ │ │ -1115 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ -1116 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ -1117 duBuffer->BindCpuBuffer(), duDesc, │ │ │ │ │ -1118 dvBuffer->BindCpuBuffer(), dvDesc, │ │ │ │ │ -1119 numPatchCoords, │ │ │ │ │ -1120 (const _P_a_t_c_h_C_o_o_r_d*)patchCoords->BindCpuBuffer(), │ │ │ │ │ -1121 patchTable->GetFVarPatchArrayBuffer(fvarChannel), │ │ │ │ │ -1122 patchTable->GetFVarPatchIndexBuffer(fvarChannel), │ │ │ │ │ -1123 patchTable->GetFVarPatchParamBuffer(fvarChannel)); │ │ │ │ │ -1124 } │ │ │ │ │ -1125 │ │ │ │ │ -1186 template │ │ │ │ │ -_1_1_8_8 static bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ -1189 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -1190 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -1191 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ -1192 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ -1193 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ -1194 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ -1195 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ -1196 int numPatchCoords, │ │ │ │ │ -1197 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ -1198 PATCH_TABLE *patchTable, │ │ │ │ │ -1199 int fvarChannel, │ │ │ │ │ -1200 _O_m_p_E_v_a_l_u_a_t_o_r const *instance = NULL, │ │ │ │ │ -1201 void * deviceContext = NULL) { │ │ │ │ │ -1202 │ │ │ │ │ -1203 (void)instance; // unused │ │ │ │ │ -1204 (void)deviceContext; // unused │ │ │ │ │ -1205 │ │ │ │ │ -1206 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ -1207 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ -1208 duBuffer->BindCpuBuffer(), duDesc, │ │ │ │ │ -1209 dvBuffer->BindCpuBuffer(), dvDesc, │ │ │ │ │ -1210 duuBuffer->BindCpuBuffer(), duuDesc, │ │ │ │ │ -1211 duvBuffer->BindCpuBuffer(), duvDesc, │ │ │ │ │ -1212 dvvBuffer->BindCpuBuffer(), dvvDesc, │ │ │ │ │ -1213 numPatchCoords, │ │ │ │ │ -1214 (const _P_a_t_c_h_C_o_o_r_d*)patchCoords->BindCpuBuffer(), │ │ │ │ │ -1215 patchTable->GetFVarPatchArrayBuffer(fvarChannel), │ │ │ │ │ -1216 patchTable->GetFVarPatchIndexBuffer(fvarChannel), │ │ │ │ │ -1217 patchTable->GetFVarPatchParamBuffer(fvarChannel)); │ │ │ │ │ -1218 } │ │ │ │ │ -1219 │ │ │ │ │ -1225 │ │ │ │ │ -_1_2_2_6 static void _S_y_n_c_h_r_o_n_i_z_e(void *deviceContext = NULL); │ │ │ │ │ -1227 │ │ │ │ │ -_1_2_2_9 static void _S_e_t_N_u_m_T_h_r_e_a_d_s(int numThreads); │ │ │ │ │ -1230}; │ │ │ │ │ -1231 │ │ │ │ │ -1232 │ │ │ │ │ -1233} // end namespace Osd │ │ │ │ │ -1234 │ │ │ │ │ -1235} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ -1236using namespace OPENSUBDIV_VERSION; │ │ │ │ │ -1237 │ │ │ │ │ -1238} // end namespace OpenSubdiv │ │ │ │ │ -1239 │ │ │ │ │ -1240 │ │ │ │ │ -1241#endif // OPENSUBDIV3_OSD_OMP_EVALUATOR_H │ │ │ │ │ +85#endif // OPENSUBDIV3_OSD_OMP_KERNEL_H │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v │ │ │ │ │ DDeeffiinniittiioonn _l_i_m_i_t_s_._h_:_3_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +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) │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ BufferDescriptor is a struct which describes buffer elements in interleaved │ │ │ │ │ data buffers.... │ │ │ │ │ DDeeffiinniittiioonn _b_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r_._h_:_6_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r │ │ │ │ │ -DDeeffiinniittiioonn _o_m_p_E_v_a_l_u_a_t_o_r_._h_:_3_9 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _o_m_p_E_v_a_l_u_a_t_o_r_._h_:_1_0_3_4 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ -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) │ │ │ │ │ -Static eval stencils function which takes raw CPU pointers for input and │ │ │ │ │ -output. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _o_m_p_E_v_a_l_u_a_t_o_r_._h_:_9_7_1 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ -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) │ │ │ │ │ -Generic static eval stencils function with derivatives. This function has a │ │ │ │ │ -same signature as other d... │ │ │ │ │ -DDeeffiinniittiioonn _o_m_p_E_v_a_l_u_a_t_o_r_._h_:_1_6_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ -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) │ │ │ │ │ -Static eval stencils function with derivatives, which takes raw CPU pointers │ │ │ │ │ -for input and output. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _o_m_p_E_v_a_l_u_a_t_o_r_._h_:_8_2_3 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _o_m_p_E_v_a_l_u_a_t_o_r_._h_:_1_1_0_0 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ -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) │ │ │ │ │ -Static eval stencils function with derivatives, which takes raw CPU pointers │ │ │ │ │ -for input and output. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ -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) │ │ │ │ │ -Generic static eval stencils function. This function has a same signature as │ │ │ │ │ -other device kernels hav... │ │ │ │ │ -DDeeffiinniittiioonn _o_m_p_E_v_a_l_u_a_t_o_r_._h_:_7_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ -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) │ │ │ │ │ -Static limit eval function. It takes an array of PatchCoord and evaluate limit │ │ │ │ │ -values on given PatchT... │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function with derivatives. This function has a same │ │ │ │ │ -signature as other device kern... │ │ │ │ │ -DDeeffiinniittiioonn _o_m_p_E_v_a_l_u_a_t_o_r_._h_:_5_1_7 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _o_m_p_E_v_a_l_u_a_t_o_r_._h_:_8_8_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function with derivatives. This function has a same │ │ │ │ │ -signature as other device kern... │ │ │ │ │ -DDeeffiinniittiioonn _o_m_p_E_v_a_l_u_a_t_o_r_._h_:_6_0_7 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_S_y_n_c_h_r_o_n_i_z_e │ │ │ │ │ -static void Synchronize(void *deviceContext=NULL) │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ -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) │ │ │ │ │ -Generic static eval stencils function with derivatives. This function has a │ │ │ │ │ -same signature as other d... │ │ │ │ │ -DDeeffiinniittiioonn _o_m_p_E_v_a_l_u_a_t_o_r_._h_:_3_0_3 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _o_m_p_E_v_a_l_u_a_t_o_r_._h_:_4_5_4 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ -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) │ │ │ │ │ -Static limit eval function. It takes an array of PatchCoord and evaluate limit │ │ │ │ │ -values on given PatchT... │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_S_e_t_N_u_m_T_h_r_e_a_d_s │ │ │ │ │ -static void SetNumThreads(int numThreads) │ │ │ │ │ -Deprecated. Client code should initialize OpenMP. │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ -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) │ │ │ │ │ -Static limit eval function. It takes an array of PatchCoord and evaluate limit │ │ │ │ │ -values on given PatchT... │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ -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) │ │ │ │ │ -Generic limit eval function. This function has a same signature as other device │ │ │ │ │ -kernels have so that ... │ │ │ │ │ -DDeeffiinniittiioonn _o_m_p_E_v_a_l_u_a_t_o_r_._h_:_1_1_8_8 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_P_a_t_c_h_C_o_o_r_d │ │ │ │ │ -Coordinates set on a patch table. │ │ │ │ │ -DDeeffiinniittiioonn _t_y_p_e_s_._h_:_4_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_P_a_t_c_h_A_r_r_a_y │ │ │ │ │ -DDeeffiinniittiioonn _t_y_p_e_s_._h_:_6_6 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_P_a_t_c_h_P_a_r_a_m │ │ │ │ │ -DDeeffiinniittiioonn _t_y_p_e_s_._h_:_1_2_7 │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _o_s_d │ │ │ │ │ - * _o_m_p_E_v_a_l_u_a_t_o_r_._h │ │ │ │ │ + * _o_m_p_K_e_r_n_e_l_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00881.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/osd/ompKernel.h File Reference │ │ │ │ +OpenSubdiv: opensubdiv/osd/ompEvaluator.h File Reference │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -88,45 +88,44 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ -Namespaces | │ │ │ │ -Functions
│ │ │ │ -
ompKernel.h File Reference
│ │ │ │ +Classes | │ │ │ │ +Namespaces
│ │ │ │ +
ompEvaluator.h File Reference
│ │ │ │ │ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ +#include "../osd/bufferDescriptor.h"
│ │ │ │ +#include "../osd/types.h"
│ │ │ │ +#include <cstddef>
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +

│ │ │ │ +Classes

class  OmpEvaluator
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

│ │ │ │ Namespaces

namespace  OpenSubdiv
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION
 
namespace  OpenSubdiv::OPENSUBDIV_VERSION::Osd
 
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │

│ │ │ │ -Functions

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)
 
void OmpEvalStencils (float const *src, BufferDescriptor const &srcDesc, float *dst, BufferDescriptor const &dstDesc, float *dstDu, BufferDescriptor const &dstDuDesc, float *dstDv, BufferDescriptor const &dstDvDesc, int const *sizes, int const *offsets, int const *indices, float const *weights, float const *duWeights, float const *dvWeights, int start, int end)
 
void OmpEvalStencils (float const *src, BufferDescriptor const &srcDesc, float *dst, BufferDescriptor const &dstDesc, float *dstDu, BufferDescriptor const &dstDuDesc, float *dstDv, BufferDescriptor const &dstDvDesc, float *dstDuu, BufferDescriptor const &dstDuuDesc, float *dstDuv, BufferDescriptor const &dstDuvDesc, float *dstDvv, BufferDescriptor 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)
 
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,41 +1,25 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ -_N_a_m_e_s_p_a_c_e_s | _F_u_n_c_t_i_o_n_s │ │ │ │ │ -ompKernel.h File Reference │ │ │ │ │ +_C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s │ │ │ │ │ +ompEvaluator.h File Reference │ │ │ │ │ #include "../version.h" │ │ │ │ │ +#include "_._._/_o_s_d_/_b_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r_._h" │ │ │ │ │ +#include "_._._/_o_s_d_/_t_y_p_e_s_._h" │ │ │ │ │ +#include │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ +CCllaasssseess │ │ │ │ │ +class   _O_m_p_E_v_a_l_u_a_t_o_r │ │ │ │ │ +  │ │ │ │ │ NNaammeessppaacceess │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N │ │ │ │ │   │ │ │ │ │ namespace   _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d │ │ │ │ │   │ │ │ │ │ -FFuunnccttiioonnss │ │ │ │ │ -void  _O_m_p_E_v_a_l_S_t_e_n_c_i_l_s (float const *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, float │ │ │ │ │ - *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, int const *sizes, int const │ │ │ │ │ - *offsets, int const *indices, float const *weights, int start, int end) │ │ │ │ │ -  │ │ │ │ │ -void  _O_m_p_E_v_a_l_S_t_e_n_c_i_l_s (float const *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, float │ │ │ │ │ - *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, float *dstDu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ - const &dstDuDesc, float *dstDv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDvDesc, int │ │ │ │ │ - const *sizes, int const *offsets, int const *indices, float const │ │ │ │ │ - *weights, float const *duWeights, float const *dvWeights, int start, int │ │ │ │ │ - end) │ │ │ │ │ -  │ │ │ │ │ -void  _O_m_p_E_v_a_l_S_t_e_n_c_i_l_s (float const *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, float │ │ │ │ │ - *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, float *dstDu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ - const &dstDuDesc, float *dstDv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDvDesc, float │ │ │ │ │ - *dstDuu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDuuDesc, float *dstDuv, │ │ │ │ │ - _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDuvDesc, float *dstDvv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r 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) │ │ │ │ │ -  │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _o_s_d │ │ │ │ │ - * _o_m_p_K_e_r_n_e_l_._h │ │ │ │ │ + * _o_m_p_E_v_a_l_u_a_t_o_r_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00881.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -1,5 +1,3 @@ │ │ │ │ │ var a00881 = [ │ │ │ │ │ - ["OmpEvalStencils", "a00881.html#a44a05502feb5015035bc81b93cffb99c", null], │ │ │ │ │ - ["OmpEvalStencils", "a00881.html#a907dc53421460557871ddc35f77751f5", null], │ │ │ │ │ - ["OmpEvalStencils", "a00881.html#a870745ff3e883b32547d4db42b3be2bd", null] │ │ │ │ │ + ["OmpEvaluator", "a01313.html", null] │ │ │ │ │ ]; │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00881_source.html │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -OpenSubdiv: opensubdiv/osd/ompKernel.h Source File │ │ │ │ +OpenSubdiv: opensubdiv/osd/ompEvaluator.h Source File │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -92,19 +92,19 @@ │ │ │ │
No Matches
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ -
ompKernel.h
│ │ │ │ +
ompEvaluator.h
│ │ │ │
│ │ │ │
│ │ │ │ Go to the documentation of this file.
1//
│ │ │ │ -
2// Copyright 2013 Pixar
│ │ │ │ +
2// Copyright 2015 Pixar
│ │ │ │
3//
│ │ │ │
4// Licensed under the Apache License, Version 2.0 (the "Apache License")
│ │ │ │
5// with the following modification; you may not use this file except in
│ │ │ │
6// compliance with the Apache License and the following modification to it:
│ │ │ │
7// Section 6. Trademarks. is deleted and replaced with:
│ │ │ │
8//
│ │ │ │
9// 6. Trademarks. This License does not grant permission to use the trade
│ │ │ │ @@ -119,82 +119,528 @@ │ │ │ │
18// Unless required by applicable law or agreed to in writing, software
│ │ │ │
19// distributed under the Apache License with the above modification is
│ │ │ │
20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
│ │ │ │
21// KIND, either express or implied. See the Apache License for the specific
│ │ │ │
22// language governing permissions and limitations under the Apache License.
│ │ │ │
23//
│ │ │ │
24
│ │ │ │ -
25#ifndef OPENSUBDIV3_OSD_OMP_KERNEL_H
│ │ │ │ -
26#define OPENSUBDIV3_OSD_OMP_KERNEL_H
│ │ │ │ +
25#ifndef OPENSUBDIV3_OSD_OMP_EVALUATOR_H
│ │ │ │ +
26#define OPENSUBDIV3_OSD_OMP_EVALUATOR_H
│ │ │ │
27
│ │ │ │
28#include "../version.h"
│ │ │ │ -
29
│ │ │ │ -
30namespace OpenSubdiv {
│ │ │ │ -
31namespace OPENSUBDIV_VERSION {
│ │ │ │ -
32
│ │ │ │ -
33namespace Osd {
│ │ │ │ -
34
│ │ │ │ -
35struct BufferDescriptor;
│ │ │ │ +
29#include "../osd/bufferDescriptor.h"
│ │ │ │ +
30#include "../osd/types.h"
│ │ │ │ +
31
│ │ │ │ +
32#include <cstddef>
│ │ │ │ +
33
│ │ │ │ +
34namespace OpenSubdiv {
│ │ │ │ +
35namespace OPENSUBDIV_VERSION {
│ │ │ │
36
│ │ │ │ -
37void
│ │ │ │ -
38OmpEvalStencils(float const * src, BufferDescriptor const &srcDesc,
│ │ │ │ -
39 float * dst, BufferDescriptor const &dstDesc,
│ │ │ │ -
40 int const * sizes,
│ │ │ │ -
41 int const * offsets,
│ │ │ │ -
42 int const * indices,
│ │ │ │ -
43 float const * weights,
│ │ │ │ -
44 int start, int end);
│ │ │ │ -
45
│ │ │ │ -
46void
│ │ │ │ -
47OmpEvalStencils(float const * src, BufferDescriptor const &srcDesc,
│ │ │ │ -
48 float * dst, BufferDescriptor const &dstDesc,
│ │ │ │ -
49 float * dstDu, BufferDescriptor const &dstDuDesc,
│ │ │ │ -
50 float * dstDv, BufferDescriptor const &dstDvDesc,
│ │ │ │ -
51 int const * sizes,
│ │ │ │ -
52 int const * offsets,
│ │ │ │ -
53 int const * indices,
│ │ │ │ -
54 float const * weights,
│ │ │ │ -
55 float const * duWeights,
│ │ │ │ -
56 float const * dvWeights,
│ │ │ │ -
57 int start, int end);
│ │ │ │ -
58
│ │ │ │ -
59void
│ │ │ │ -
60OmpEvalStencils(float const * src, BufferDescriptor const &srcDesc,
│ │ │ │ -
61 float * dst, BufferDescriptor const &dstDesc,
│ │ │ │ -
62 float * dstDu, BufferDescriptor const &dstDuDesc,
│ │ │ │ -
63 float * dstDv, BufferDescriptor const &dstDvDesc,
│ │ │ │ -
64 float * dstDuu, BufferDescriptor const &dstDuuDesc,
│ │ │ │ -
65 float * dstDuv, BufferDescriptor const &dstDuvDesc,
│ │ │ │ -
66 float * dstDvv, BufferDescriptor const &dstDvvDesc,
│ │ │ │ -
67 int const * sizes,
│ │ │ │ -
68 int const * offsets,
│ │ │ │ -
69 int const * indices,
│ │ │ │ -
70 float const * weights,
│ │ │ │ -
71 float const * duWeights,
│ │ │ │ -
72 float const * dvWeights,
│ │ │ │ -
73 float const * duuWeights,
│ │ │ │ -
74 float const * duvWeights,
│ │ │ │ -
75 float const * dvvWeights,
│ │ │ │ -
76 int start, int end);
│ │ │ │ -
77
│ │ │ │ -
78} // end namespace Osd
│ │ │ │ -
79
│ │ │ │ -
80} // end namespace OPENSUBDIV_VERSION
│ │ │ │ -
81using namespace OPENSUBDIV_VERSION;
│ │ │ │ -
82
│ │ │ │ -
83} // end namespace OpenSubdiv
│ │ │ │ +
37namespace Osd {
│ │ │ │ +
38
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
40public:
│ │ │ │ +
46
│ │ │ │ +
71 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ +
│ │ │ │ +
72 static bool EvalStencils(
│ │ │ │ +
73 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
74 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
75 STENCIL_TABLE const *stencilTable,
│ │ │ │ +
76 const OmpEvaluator *instance = NULL,
│ │ │ │ +
77 void * deviceContext = NULL) {
│ │ │ │ +
78
│ │ │ │ +
79 (void)instance; // unused
│ │ │ │ +
80 (void)deviceContext; // unused
│ │ │ │ +
81
│ │ │ │ +
82 if (stencilTable->GetNumStencils() == 0)
│ │ │ │ +
83 return false;
│ │ │ │
84
│ │ │ │ -
85#endif // OPENSUBDIV3_OSD_OMP_KERNEL_H
│ │ │ │ +
85 return EvalStencils(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ +
86 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ +
87 &stencilTable->GetSizes()[0],
│ │ │ │ +
88 &stencilTable->GetOffsets()[0],
│ │ │ │ +
89 &stencilTable->GetControlIndices()[0],
│ │ │ │ +
90 &stencilTable->GetWeights()[0],
│ │ │ │ +
91 /*start = */ 0,
│ │ │ │ +
92 /*end = */ stencilTable->GetNumStencils());
│ │ │ │ +
93 }
│ │ │ │ +
│ │ │ │ +
94
│ │ │ │ +
121 static bool EvalStencils(
│ │ │ │ +
122 const float *src, BufferDescriptor const &srcDesc,
│ │ │ │ +
123 float *dst, BufferDescriptor const &dstDesc,
│ │ │ │ +
124 const int * sizes,
│ │ │ │ +
125 const int * offsets,
│ │ │ │ +
126 const int * indices,
│ │ │ │ +
127 const float * weights,
│ │ │ │ +
128 int start, int end);
│ │ │ │ +
129
│ │ │ │ +
167 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ +
│ │ │ │ +
168 static bool EvalStencils(
│ │ │ │ +
169 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
170 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
171 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
172 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
173 STENCIL_TABLE const *stencilTable,
│ │ │ │ +
174 const OmpEvaluator *instance = NULL,
│ │ │ │ +
175 void * deviceContext = NULL) {
│ │ │ │ +
176
│ │ │ │ +
177 (void)instance; // unused
│ │ │ │ +
178 (void)deviceContext; // unused
│ │ │ │ +
179
│ │ │ │ +
180 return EvalStencils(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ +
181 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ +
182 duBuffer->BindCpuBuffer(), duDesc,
│ │ │ │ +
183 dvBuffer->BindCpuBuffer(), dvDesc,
│ │ │ │ +
184 &stencilTable->GetSizes()[0],
│ │ │ │ +
185 &stencilTable->GetOffsets()[0],
│ │ │ │ +
186 &stencilTable->GetControlIndices()[0],
│ │ │ │ +
187 &stencilTable->GetWeights()[0],
│ │ │ │ +
188 &stencilTable->GetDuWeights()[0],
│ │ │ │ +
189 &stencilTable->GetDvWeights()[0],
│ │ │ │ +
190 /*start = */ 0,
│ │ │ │ +
191 /*end = */ stencilTable->GetNumStencils());
│ │ │ │ +
192 }
│ │ │ │ +
│ │ │ │ +
193
│ │ │ │ +
234 static bool EvalStencils(
│ │ │ │ +
235 const float *src, BufferDescriptor const &srcDesc,
│ │ │ │ +
236 float *dst, BufferDescriptor const &dstDesc,
│ │ │ │ +
237 float *du, BufferDescriptor const &duDesc,
│ │ │ │ +
238 float *dv, BufferDescriptor const &dvDesc,
│ │ │ │ +
239 const int * sizes,
│ │ │ │ +
240 const int * offsets,
│ │ │ │ +
241 const int * indices,
│ │ │ │ +
242 const float * weights,
│ │ │ │ +
243 const float * duWeights,
│ │ │ │ +
244 const float * dvWeights,
│ │ │ │ +
245 int start, int end);
│ │ │ │ +
246
│ │ │ │ +
302 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
│ │ │ │ +
│ │ │ │ +
303 static bool EvalStencils(
│ │ │ │ +
304 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
305 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
306 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
307 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
308 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ +
309 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ +
310 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ +
311 STENCIL_TABLE const *stencilTable,
│ │ │ │ +
312 const OmpEvaluator *instance = NULL,
│ │ │ │ +
313 void * deviceContext = NULL) {
│ │ │ │ +
314
│ │ │ │ +
315 (void)instance; // unused
│ │ │ │ +
316 (void)deviceContext; // unused
│ │ │ │ +
317
│ │ │ │ +
318 return EvalStencils(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ +
319 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ +
320 duBuffer->BindCpuBuffer(), duDesc,
│ │ │ │ +
321 dvBuffer->BindCpuBuffer(), dvDesc,
│ │ │ │ +
322 duuBuffer->BindCpuBuffer(), duuDesc,
│ │ │ │ +
323 duvBuffer->BindCpuBuffer(), duvDesc,
│ │ │ │ +
324 dvvBuffer->BindCpuBuffer(), dvvDesc,
│ │ │ │ +
325 &stencilTable->GetSizes()[0],
│ │ │ │ +
326 &stencilTable->GetOffsets()[0],
│ │ │ │ +
327 &stencilTable->GetControlIndices()[0],
│ │ │ │ +
328 &stencilTable->GetWeights()[0],
│ │ │ │ +
329 &stencilTable->GetDuWeights()[0],
│ │ │ │ +
330 &stencilTable->GetDvWeights()[0],
│ │ │ │ +
331 &stencilTable->GetDuuWeights()[0],
│ │ │ │ +
332 &stencilTable->GetDuvWeights()[0],
│ │ │ │ +
333 &stencilTable->GetDvvWeights()[0],
│ │ │ │ +
334 /*start = */ 0,
│ │ │ │ +
335 /*end = */ stencilTable->GetNumStencils());
│ │ │ │ +
336 }
│ │ │ │ +
│ │ │ │ +
337
│ │ │ │ +
399 static bool EvalStencils(
│ │ │ │ +
400 const float *src, BufferDescriptor const &srcDesc,
│ │ │ │ +
401 float *dst, BufferDescriptor const &dstDesc,
│ │ │ │ +
402 float *du, BufferDescriptor const &duDesc,
│ │ │ │ +
403 float *dv, BufferDescriptor const &dvDesc,
│ │ │ │ +
404 float *duu, BufferDescriptor const &duuDesc,
│ │ │ │ +
405 float *duv, BufferDescriptor const &duvDesc,
│ │ │ │ +
406 float *dvv, BufferDescriptor const &dvvDesc,
│ │ │ │ +
407 const int * sizes,
│ │ │ │ +
408 const int * offsets,
│ │ │ │ +
409 const int * indices,
│ │ │ │ +
410 const float * weights,
│ │ │ │ +
411 const float * duWeights,
│ │ │ │ +
412 const float * dvWeights,
│ │ │ │ +
413 const float * duuWeights,
│ │ │ │ +
414 const float * duvWeights,
│ │ │ │ +
415 const float * dvvWeights,
│ │ │ │ +
416 int start, int end);
│ │ │ │ +
417
│ │ │ │ +
423
│ │ │ │ +
452 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
453 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ +
454 static bool EvalPatches(
│ │ │ │ +
455 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
456 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
457 int numPatchCoords,
│ │ │ │ +
458 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
459 PATCH_TABLE *patchTable,
│ │ │ │ +
460 OmpEvaluator const *instance = NULL,
│ │ │ │ +
461 void * deviceContext = NULL) {
│ │ │ │ +
462
│ │ │ │ +
463 (void)instance; // unused
│ │ │ │ +
464 (void)deviceContext; // unused
│ │ │ │ +
465
│ │ │ │ +
466 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ +
467 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ +
468 numPatchCoords,
│ │ │ │ +
469 (const PatchCoord*)patchCoords->BindCpuBuffer(),
│ │ │ │ +
470 patchTable->GetPatchArrayBuffer(),
│ │ │ │ +
471 patchTable->GetPatchIndexBuffer(),
│ │ │ │ +
472 patchTable->GetPatchParamBuffer());
│ │ │ │ +
473 }
│ │ │ │ +
│ │ │ │ +
474
│ │ │ │ +
515 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
516 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ +
517 static bool EvalPatches(
│ │ │ │ +
518 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
519 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
520 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
521 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
522 int numPatchCoords,
│ │ │ │ +
523 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
524 PATCH_TABLE *patchTable,
│ │ │ │ +
525 OmpEvaluator const *instance = NULL,
│ │ │ │ +
526 void * deviceContext = NULL) {
│ │ │ │ +
527
│ │ │ │ +
528 (void)instance; // unused
│ │ │ │ +
529 (void)deviceContext; // unused
│ │ │ │ +
530
│ │ │ │ +
531 // XXX: PatchCoords is somewhat abusing vertex primvar buffer interop.
│ │ │ │ +
532 // ideally all buffer classes should have templated by datatype
│ │ │ │ +
533 // so that downcast isn't needed there.
│ │ │ │ +
534 // (e.g. Osd::CpuBuffer<PatchCoord> )
│ │ │ │ +
535 //
│ │ │ │ +
536 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ +
537 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ +
538 duBuffer->BindCpuBuffer(), duDesc,
│ │ │ │ +
539 dvBuffer->BindCpuBuffer(), dvDesc,
│ │ │ │ +
540 numPatchCoords,
│ │ │ │ +
541 (const PatchCoord*)patchCoords->BindCpuBuffer(),
│ │ │ │ +
542 patchTable->GetPatchArrayBuffer(),
│ │ │ │ +
543 patchTable->GetPatchIndexBuffer(),
│ │ │ │ +
544 patchTable->GetPatchParamBuffer());
│ │ │ │ +
545 }
│ │ │ │ +
│ │ │ │ +
546
│ │ │ │ +
605 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
606 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ +
607 static bool EvalPatches(
│ │ │ │ +
608 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
609 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
610 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
611 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
612 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ +
613 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ +
614 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ +
615 int numPatchCoords,
│ │ │ │ +
616 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
617 PATCH_TABLE *patchTable,
│ │ │ │ +
618 OmpEvaluator const *instance = NULL,
│ │ │ │ +
619 void * deviceContext = NULL) {
│ │ │ │ +
620
│ │ │ │ +
621 (void)instance; // unused
│ │ │ │ +
622 (void)deviceContext; // unused
│ │ │ │ +
623
│ │ │ │ +
624 // XXX: PatchCoords is somewhat abusing vertex primvar buffer interop.
│ │ │ │ +
625 // ideally all buffer classes should have templated by datatype
│ │ │ │ +
626 // so that downcast isn't needed there.
│ │ │ │ +
627 // (e.g. Osd::CpuBuffer<PatchCoord> )
│ │ │ │ +
628 //
│ │ │ │ +
629 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ +
630 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ +
631 duBuffer->BindCpuBuffer(), duDesc,
│ │ │ │ +
632 dvBuffer->BindCpuBuffer(), dvDesc,
│ │ │ │ +
633 duuBuffer->BindCpuBuffer(), duuDesc,
│ │ │ │ +
634 duvBuffer->BindCpuBuffer(), duvDesc,
│ │ │ │ +
635 dvvBuffer->BindCpuBuffer(), dvvDesc,
│ │ │ │ +
636 numPatchCoords,
│ │ │ │ +
637 (const PatchCoord*)patchCoords->BindCpuBuffer(),
│ │ │ │ +
638 patchTable->GetPatchArrayBuffer(),
│ │ │ │ +
639 patchTable->GetPatchIndexBuffer(),
│ │ │ │ +
640 patchTable->GetPatchParamBuffer());
│ │ │ │ +
641 }
│ │ │ │ +
│ │ │ │ +
642
│ │ │ │ +
670 static bool EvalPatches(
│ │ │ │ +
671 const float *src, BufferDescriptor const &srcDesc,
│ │ │ │ +
672 float *dst, BufferDescriptor const &dstDesc,
│ │ │ │ +
673 int numPatchCoords,
│ │ │ │ +
674 const PatchCoord *patchCoords,
│ │ │ │ +
675 const PatchArray *patchArrays,
│ │ │ │ +
676 const int *patchIndexBuffer,
│ │ │ │ +
677 const PatchParam *patchParamBuffer);
│ │ │ │ +
678
│ │ │ │ +
716 static bool EvalPatches(
│ │ │ │ +
717 const float *src, BufferDescriptor const &srcDesc,
│ │ │ │ +
718 float *dst, BufferDescriptor const &dstDesc,
│ │ │ │ +
719 float *du, BufferDescriptor const &duDesc,
│ │ │ │ +
720 float *dv, BufferDescriptor const &dvDesc,
│ │ │ │ +
721 int numPatchCoords,
│ │ │ │ +
722 PatchCoord const *patchCoords,
│ │ │ │ +
723 PatchArray const *patchArrays,
│ │ │ │ +
724 const int *patchIndexBuffer,
│ │ │ │ +
725 PatchParam const *patchParamBuffer);
│ │ │ │ +
726
│ │ │ │ +
779 static bool EvalPatches(
│ │ │ │ +
780 const float *src, BufferDescriptor const &srcDesc,
│ │ │ │ +
781 float *dst, BufferDescriptor const &dstDesc,
│ │ │ │ +
782 float *du, BufferDescriptor const &duDesc,
│ │ │ │ +
783 float *dv, BufferDescriptor const &dvDesc,
│ │ │ │ +
784 float *duu, BufferDescriptor const &duuDesc,
│ │ │ │ +
785 float *duv, BufferDescriptor const &duvDesc,
│ │ │ │ +
786 float *dvv, BufferDescriptor const &dvvDesc,
│ │ │ │ +
787 int numPatchCoords,
│ │ │ │ +
788 PatchCoord const *patchCoords,
│ │ │ │ +
789 PatchArray const *patchArrays,
│ │ │ │ +
790 const int *patchIndexBuffer,
│ │ │ │ +
791 PatchParam const *patchParamBuffer);
│ │ │ │ +
792
│ │ │ │ +
821 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
822 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
824 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
825 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
826 int numPatchCoords,
│ │ │ │ +
827 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
828 PATCH_TABLE *patchTable,
│ │ │ │ +
829 OmpEvaluator const *instance = NULL,
│ │ │ │ +
830 void * deviceContext = NULL) {
│ │ │ │ +
831
│ │ │ │ +
832 (void)instance; // unused
│ │ │ │ +
833 (void)deviceContext; // unused
│ │ │ │ +
834
│ │ │ │ +
835 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ +
836 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ +
837 numPatchCoords,
│ │ │ │ +
838 (const PatchCoord*)patchCoords->BindCpuBuffer(),
│ │ │ │ +
839 patchTable->GetVaryingPatchArrayBuffer(),
│ │ │ │ +
840 patchTable->GetVaryingPatchIndexBuffer(),
│ │ │ │ +
841 patchTable->GetPatchParamBuffer());
│ │ │ │ +
842 }
│ │ │ │ +
│ │ │ │ +
843
│ │ │ │ +
884 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
885 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
887 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
888 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
889 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
890 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
891 int numPatchCoords,
│ │ │ │ +
892 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
893 PATCH_TABLE *patchTable,
│ │ │ │ +
894 OmpEvaluator const *instance = NULL,
│ │ │ │ +
895 void * deviceContext = NULL) {
│ │ │ │ +
896
│ │ │ │ +
897 (void)instance; // unused
│ │ │ │ +
898 (void)deviceContext; // unused
│ │ │ │ +
899
│ │ │ │ +
900 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ +
901 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ +
902 duBuffer->BindCpuBuffer(), duDesc,
│ │ │ │ +
903 dvBuffer->BindCpuBuffer(), dvDesc,
│ │ │ │ +
904 numPatchCoords,
│ │ │ │ +
905 (const PatchCoord*)patchCoords->BindCpuBuffer(),
│ │ │ │ +
906 patchTable->GetVaryingPatchArrayBuffer(),
│ │ │ │ +
907 patchTable->GetVaryingPatchIndexBuffer(),
│ │ │ │ +
908 patchTable->GetPatchParamBuffer());
│ │ │ │ +
909 }
│ │ │ │ +
│ │ │ │ +
910
│ │ │ │ +
969 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
970 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
972 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
973 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
974 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
975 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
976 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ +
977 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ +
978 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ +
979 int numPatchCoords,
│ │ │ │ +
980 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
981 PATCH_TABLE *patchTable,
│ │ │ │ +
982 OmpEvaluator const *instance = NULL,
│ │ │ │ +
983 void * deviceContext = NULL) {
│ │ │ │ +
984
│ │ │ │ +
985 (void)instance; // unused
│ │ │ │ +
986 (void)deviceContext; // unused
│ │ │ │ +
987
│ │ │ │ +
988 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ +
989 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ +
990 duBuffer->BindCpuBuffer(), duDesc,
│ │ │ │ +
991 dvBuffer->BindCpuBuffer(), dvDesc,
│ │ │ │ +
992 duuBuffer->BindCpuBuffer(), duuDesc,
│ │ │ │ +
993 duvBuffer->BindCpuBuffer(), duvDesc,
│ │ │ │ +
994 dvvBuffer->BindCpuBuffer(), dvvDesc,
│ │ │ │ +
995 numPatchCoords,
│ │ │ │ +
996 (const PatchCoord*)patchCoords->BindCpuBuffer(),
│ │ │ │ +
997 patchTable->GetVaryingPatchArrayBuffer(),
│ │ │ │ +
998 patchTable->GetVaryingPatchIndexBuffer(),
│ │ │ │ +
999 patchTable->GetPatchParamBuffer());
│ │ │ │ +
1000 }
│ │ │ │ +
│ │ │ │ +
1001
│ │ │ │ +
1032 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1033 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1035 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1036 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1037 int numPatchCoords,
│ │ │ │ +
1038 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1039 PATCH_TABLE *patchTable,
│ │ │ │ +
1040 int fvarChannel,
│ │ │ │ +
1041 OmpEvaluator const *instance = NULL,
│ │ │ │ +
1042 void * deviceContext = NULL) {
│ │ │ │ +
1043
│ │ │ │ +
1044 (void)instance; // unused
│ │ │ │ +
1045 (void)deviceContext; // unused
│ │ │ │ +
1046
│ │ │ │ +
1047 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ +
1048 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ +
1049 numPatchCoords,
│ │ │ │ +
1050 (const PatchCoord*)patchCoords->BindCpuBuffer(),
│ │ │ │ +
1051 patchTable->GetFVarPatchArrayBuffer(fvarChannel),
│ │ │ │ +
1052 patchTable->GetFVarPatchIndexBuffer(fvarChannel),
│ │ │ │ +
1053 patchTable->GetFVarPatchParamBuffer(fvarChannel));
│ │ │ │ +
1054 }
│ │ │ │ +
│ │ │ │ +
1055
│ │ │ │ +
1098 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1099 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1101 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1102 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1103 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
1104 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
1105 int numPatchCoords,
│ │ │ │ +
1106 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1107 PATCH_TABLE *patchTable,
│ │ │ │ +
1108 int fvarChannel,
│ │ │ │ +
1109 OmpEvaluator const *instance = NULL,
│ │ │ │ +
1110 void * deviceContext = NULL) {
│ │ │ │ +
1111
│ │ │ │ +
1112 (void)instance; // unused
│ │ │ │ +
1113 (void)deviceContext; // unused
│ │ │ │ +
1114
│ │ │ │ +
1115 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ +
1116 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ +
1117 duBuffer->BindCpuBuffer(), duDesc,
│ │ │ │ +
1118 dvBuffer->BindCpuBuffer(), dvDesc,
│ │ │ │ +
1119 numPatchCoords,
│ │ │ │ +
1120 (const PatchCoord*)patchCoords->BindCpuBuffer(),
│ │ │ │ +
1121 patchTable->GetFVarPatchArrayBuffer(fvarChannel),
│ │ │ │ +
1122 patchTable->GetFVarPatchIndexBuffer(fvarChannel),
│ │ │ │ +
1123 patchTable->GetFVarPatchParamBuffer(fvarChannel));
│ │ │ │ +
1124 }
│ │ │ │ +
│ │ │ │ +
1125
│ │ │ │ +
1186 template <typename SRC_BUFFER, typename DST_BUFFER,
│ │ │ │ +
1187 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
│ │ │ │ +
│ │ │ │ + │ │ │ │ +
1189 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
│ │ │ │ +
1190 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
│ │ │ │ +
1191 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
│ │ │ │ +
1192 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
│ │ │ │ +
1193 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
│ │ │ │ +
1194 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
│ │ │ │ +
1195 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
│ │ │ │ +
1196 int numPatchCoords,
│ │ │ │ +
1197 PATCHCOORD_BUFFER *patchCoords,
│ │ │ │ +
1198 PATCH_TABLE *patchTable,
│ │ │ │ +
1199 int fvarChannel,
│ │ │ │ +
1200 OmpEvaluator const *instance = NULL,
│ │ │ │ +
1201 void * deviceContext = NULL) {
│ │ │ │ +
1202
│ │ │ │ +
1203 (void)instance; // unused
│ │ │ │ +
1204 (void)deviceContext; // unused
│ │ │ │ +
1205
│ │ │ │ +
1206 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
│ │ │ │ +
1207 dstBuffer->BindCpuBuffer(), dstDesc,
│ │ │ │ +
1208 duBuffer->BindCpuBuffer(), duDesc,
│ │ │ │ +
1209 dvBuffer->BindCpuBuffer(), dvDesc,
│ │ │ │ +
1210 duuBuffer->BindCpuBuffer(), duuDesc,
│ │ │ │ +
1211 duvBuffer->BindCpuBuffer(), duvDesc,
│ │ │ │ +
1212 dvvBuffer->BindCpuBuffer(), dvvDesc,
│ │ │ │ +
1213 numPatchCoords,
│ │ │ │ +
1214 (const PatchCoord*)patchCoords->BindCpuBuffer(),
│ │ │ │ +
1215 patchTable->GetFVarPatchArrayBuffer(fvarChannel),
│ │ │ │ +
1216 patchTable->GetFVarPatchIndexBuffer(fvarChannel),
│ │ │ │ +
1217 patchTable->GetFVarPatchParamBuffer(fvarChannel));
│ │ │ │ +
1218 }
│ │ │ │ +
│ │ │ │ +
1219
│ │ │ │ +
1225
│ │ │ │ +
1226 static void Synchronize(void *deviceContext = NULL);
│ │ │ │ +
1227
│ │ │ │ +
1229 static void SetNumThreads(int numThreads);
│ │ │ │ +
1230};
│ │ │ │ +
│ │ │ │ +
1231
│ │ │ │ +
1232
│ │ │ │ +
1233} // end namespace Osd
│ │ │ │ +
1234
│ │ │ │ +
1235} // end namespace OPENSUBDIV_VERSION
│ │ │ │ +
1236using namespace OPENSUBDIV_VERSION;
│ │ │ │ +
1237
│ │ │ │ +
1238} // end namespace OpenSubdiv
│ │ │ │ +
1239
│ │ │ │ +
1240
│ │ │ │ +
1241#endif // OPENSUBDIV3_OSD_OMP_EVALUATOR_H
│ │ │ │ │ │ │ │ -
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)
│ │ │ │
BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....
│ │ │ │ + │ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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)
Static eval stencils function which takes raw CPU pointers for input and output.
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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)
Generic static eval stencils function with derivatives. This function has a same signature as other d...
│ │ │ │ +
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)
Static eval stencils function with derivatives, which takes raw CPU pointers for input and output.
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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)
Static eval stencils function with derivatives, which takes raw CPU pointers for input and output.
│ │ │ │ +
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)
Generic static eval stencils function. This function has a same signature as other device kernels hav...
│ │ │ │ +
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)
Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...
│ │ │ │ +
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)
Generic limit eval function with derivatives. This function has a same signature as other device kern...
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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)
Generic limit eval function with derivatives. This function has a same signature as other device kern...
│ │ │ │ +
static void Synchronize(void *deviceContext=NULL)
│ │ │ │ +
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)
Generic static eval stencils function with derivatives. This function has a same signature as other d...
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
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)
Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...
│ │ │ │ +
static void SetNumThreads(int numThreads)
Deprecated. Client code should initialize OpenMP.
│ │ │ │ +
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)
Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...
│ │ │ │ +
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)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
│ │ │ │ +
Coordinates set on a patch table.
Definition types.h:42
│ │ │ │ + │ │ │ │ + │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1,15 +1,15 @@ │ │ │ │ │ [Logo] OpenSubdiv │ │ │ │ │ Loading... │ │ │ │ │ Searching... │ │ │ │ │ No Matches │ │ │ │ │ -ompKernel.h │ │ │ │ │ +ompEvaluator.h │ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_. │ │ │ │ │ 1// │ │ │ │ │ -2// Copyright 2013 Pixar │ │ │ │ │ +2// Copyright 2015 Pixar │ │ │ │ │ 3// │ │ │ │ │ 4// Licensed under the Apache License, Version 2.0 (the "Apache License") │ │ │ │ │ 5// with the following modification; you may not use this file except in │ │ │ │ │ 6// compliance with the Apache License and the following modification to it: │ │ │ │ │ 7// Section 6. Trademarks. is deleted and replaced with: │ │ │ │ │ 8// │ │ │ │ │ 9// 6. Trademarks. This License does not grant permission to use the trade │ │ │ │ │ @@ -24,82 +24,656 @@ │ │ │ │ │ 18// Unless required by applicable law or agreed to in writing, software │ │ │ │ │ 19// distributed under the Apache License with the above modification is │ │ │ │ │ 20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY │ │ │ │ │ 21// KIND, either express or implied. See the Apache License for the specific │ │ │ │ │ 22// language governing permissions and limitations under the Apache License. │ │ │ │ │ 23// │ │ │ │ │ 24 │ │ │ │ │ -25#ifndef OPENSUBDIV3_OSD_OMP_KERNEL_H │ │ │ │ │ -26#define OPENSUBDIV3_OSD_OMP_KERNEL_H │ │ │ │ │ +25#ifndef OPENSUBDIV3_OSD_OMP_EVALUATOR_H │ │ │ │ │ +26#define OPENSUBDIV3_OSD_OMP_EVALUATOR_H │ │ │ │ │ 27 │ │ │ │ │ 28#include "../version.h" │ │ │ │ │ -29 │ │ │ │ │ -30namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ -31namespace OPENSUBDIV_VERSION { │ │ │ │ │ -32 │ │ │ │ │ -33namespace Osd { │ │ │ │ │ -34 │ │ │ │ │ -35struct BufferDescriptor; │ │ │ │ │ +29#include "../osd/bufferDescriptor.h" │ │ │ │ │ +30#include "../osd/types.h" │ │ │ │ │ +31 │ │ │ │ │ +32#include │ │ │ │ │ +33 │ │ │ │ │ +34namespace _O_p_e_n_S_u_b_d_i_v { │ │ │ │ │ +35namespace OPENSUBDIV_VERSION { │ │ │ │ │ 36 │ │ │ │ │ -37void │ │ │ │ │ -_3_8_O_m_p_E_v_a_l_S_t_e_n_c_i_l_s(float const * src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -39 float * dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -40 int const * sizes, │ │ │ │ │ -41 int const * offsets, │ │ │ │ │ -42 int const * indices, │ │ │ │ │ -43 float const * weights, │ │ │ │ │ -44 int start, int end); │ │ │ │ │ -45 │ │ │ │ │ -46void │ │ │ │ │ -_4_7_O_m_p_E_v_a_l_S_t_e_n_c_i_l_s(float const * src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -48 float * dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -49 float * dstDu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDuDesc, │ │ │ │ │ -50 float * dstDv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDvDesc, │ │ │ │ │ -51 int const * sizes, │ │ │ │ │ -52 int const * offsets, │ │ │ │ │ -53 int const * indices, │ │ │ │ │ -54 float const * weights, │ │ │ │ │ -55 float const * duWeights, │ │ │ │ │ -56 float const * dvWeights, │ │ │ │ │ -57 int start, int end); │ │ │ │ │ -58 │ │ │ │ │ -59void │ │ │ │ │ -_6_0_O_m_p_E_v_a_l_S_t_e_n_c_i_l_s(float const * src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ -61 float * dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ -62 float * dstDu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDuDesc, │ │ │ │ │ -63 float * dstDv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDvDesc, │ │ │ │ │ -64 float * dstDuu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDuuDesc, │ │ │ │ │ -65 float * dstDuv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDuvDesc, │ │ │ │ │ -66 float * dstDvv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDvvDesc, │ │ │ │ │ -67 int const * sizes, │ │ │ │ │ -68 int const * offsets, │ │ │ │ │ -69 int const * indices, │ │ │ │ │ -70 float const * weights, │ │ │ │ │ -71 float const * duWeights, │ │ │ │ │ -72 float const * dvWeights, │ │ │ │ │ -73 float const * duuWeights, │ │ │ │ │ -74 float const * duvWeights, │ │ │ │ │ -75 float const * dvvWeights, │ │ │ │ │ -76 int start, int end); │ │ │ │ │ -77 │ │ │ │ │ -78} // end namespace Osd │ │ │ │ │ -79 │ │ │ │ │ -80} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ -81using namespace OPENSUBDIV_VERSION; │ │ │ │ │ -82 │ │ │ │ │ -83} // end namespace OpenSubdiv │ │ │ │ │ +37namespace Osd { │ │ │ │ │ +38 │ │ │ │ │ +_3_9class _O_m_p_E_v_a_l_u_a_t_o_r { │ │ │ │ │ +40public: │ │ │ │ │ +46 │ │ │ │ │ +71 template │ │ │ │ │ +_7_2 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ +73 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +74 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +75 STENCIL_TABLE const *stencilTable, │ │ │ │ │ +76 const _O_m_p_E_v_a_l_u_a_t_o_r *instance = NULL, │ │ │ │ │ +77 void * deviceContext = NULL) { │ │ │ │ │ +78 │ │ │ │ │ +79 (void)instance; // unused │ │ │ │ │ +80 (void)deviceContext; // unused │ │ │ │ │ +81 │ │ │ │ │ +82 if (stencilTable->GetNumStencils() == 0) │ │ │ │ │ +83 return false; │ │ │ │ │ 84 │ │ │ │ │ -85#endif // OPENSUBDIV3_OSD_OMP_KERNEL_H │ │ │ │ │ +85 return _E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ +86 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ +87 &stencilTable->GetSizes()[0], │ │ │ │ │ +88 &stencilTable->GetOffsets()[0], │ │ │ │ │ +89 &stencilTable->GetControlIndices()[0], │ │ │ │ │ +90 &stencilTable->GetWeights()[0], │ │ │ │ │ +91 /*start = */ 0, │ │ │ │ │ +92 /*end = */ stencilTable->GetNumStencils()); │ │ │ │ │ +93 } │ │ │ │ │ +94 │ │ │ │ │ +_1_2_1 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ +122 const float *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +123 float *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +124 const int * sizes, │ │ │ │ │ +125 const int * offsets, │ │ │ │ │ +126 const int * indices, │ │ │ │ │ +127 const float * weights, │ │ │ │ │ +128 int start, int end); │ │ │ │ │ +129 │ │ │ │ │ +167 template │ │ │ │ │ +_1_6_8 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ +169 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +170 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +171 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +172 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +173 STENCIL_TABLE const *stencilTable, │ │ │ │ │ +174 const _O_m_p_E_v_a_l_u_a_t_o_r *instance = NULL, │ │ │ │ │ +175 void * deviceContext = NULL) { │ │ │ │ │ +176 │ │ │ │ │ +177 (void)instance; // unused │ │ │ │ │ +178 (void)deviceContext; // unused │ │ │ │ │ +179 │ │ │ │ │ +180 return _E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ +181 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ +182 duBuffer->BindCpuBuffer(), duDesc, │ │ │ │ │ +183 dvBuffer->BindCpuBuffer(), dvDesc, │ │ │ │ │ +184 &stencilTable->GetSizes()[0], │ │ │ │ │ +185 &stencilTable->GetOffsets()[0], │ │ │ │ │ +186 &stencilTable->GetControlIndices()[0], │ │ │ │ │ +187 &stencilTable->GetWeights()[0], │ │ │ │ │ +188 &stencilTable->GetDuWeights()[0], │ │ │ │ │ +189 &stencilTable->GetDvWeights()[0], │ │ │ │ │ +190 /*start = */ 0, │ │ │ │ │ +191 /*end = */ stencilTable->GetNumStencils()); │ │ │ │ │ +192 } │ │ │ │ │ +193 │ │ │ │ │ +_2_3_4 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ +235 const float *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +236 float *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +237 float *du, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +238 float *dv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +239 const int * sizes, │ │ │ │ │ +240 const int * offsets, │ │ │ │ │ +241 const int * indices, │ │ │ │ │ +242 const float * weights, │ │ │ │ │ +243 const float * duWeights, │ │ │ │ │ +244 const float * dvWeights, │ │ │ │ │ +245 int start, int end); │ │ │ │ │ +246 │ │ │ │ │ +302 template │ │ │ │ │ +_3_0_3 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ +304 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +305 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +306 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +307 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +308 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +309 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +310 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +311 STENCIL_TABLE const *stencilTable, │ │ │ │ │ +312 const _O_m_p_E_v_a_l_u_a_t_o_r *instance = NULL, │ │ │ │ │ +313 void * deviceContext = NULL) { │ │ │ │ │ +314 │ │ │ │ │ +315 (void)instance; // unused │ │ │ │ │ +316 (void)deviceContext; // unused │ │ │ │ │ +317 │ │ │ │ │ +318 return _E_v_a_l_S_t_e_n_c_i_l_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ +319 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ +320 duBuffer->BindCpuBuffer(), duDesc, │ │ │ │ │ +321 dvBuffer->BindCpuBuffer(), dvDesc, │ │ │ │ │ +322 duuBuffer->BindCpuBuffer(), duuDesc, │ │ │ │ │ +323 duvBuffer->BindCpuBuffer(), duvDesc, │ │ │ │ │ +324 dvvBuffer->BindCpuBuffer(), dvvDesc, │ │ │ │ │ +325 &stencilTable->GetSizes()[0], │ │ │ │ │ +326 &stencilTable->GetOffsets()[0], │ │ │ │ │ +327 &stencilTable->GetControlIndices()[0], │ │ │ │ │ +328 &stencilTable->GetWeights()[0], │ │ │ │ │ +329 &stencilTable->GetDuWeights()[0], │ │ │ │ │ +330 &stencilTable->GetDvWeights()[0], │ │ │ │ │ +331 &stencilTable->GetDuuWeights()[0], │ │ │ │ │ +332 &stencilTable->GetDuvWeights()[0], │ │ │ │ │ +333 &stencilTable->GetDvvWeights()[0], │ │ │ │ │ +334 /*start = */ 0, │ │ │ │ │ +335 /*end = */ stencilTable->GetNumStencils()); │ │ │ │ │ +336 } │ │ │ │ │ +337 │ │ │ │ │ +_3_9_9 static bool _E_v_a_l_S_t_e_n_c_i_l_s( │ │ │ │ │ +400 const float *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +401 float *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +402 float *du, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +403 float *dv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +404 float *duu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +405 float *duv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +406 float *dvv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +407 const int * sizes, │ │ │ │ │ +408 const int * offsets, │ │ │ │ │ +409 const int * indices, │ │ │ │ │ +410 const float * weights, │ │ │ │ │ +411 const float * duWeights, │ │ │ │ │ +412 const float * dvWeights, │ │ │ │ │ +413 const float * duuWeights, │ │ │ │ │ +414 const float * duvWeights, │ │ │ │ │ +415 const float * dvvWeights, │ │ │ │ │ +416 int start, int end); │ │ │ │ │ +417 │ │ │ │ │ +423 │ │ │ │ │ +452 template │ │ │ │ │ +_4_5_4 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ +455 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +456 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +457 int numPatchCoords, │ │ │ │ │ +458 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +459 PATCH_TABLE *patchTable, │ │ │ │ │ +460 _O_m_p_E_v_a_l_u_a_t_o_r const *instance = NULL, │ │ │ │ │ +461 void * deviceContext = NULL) { │ │ │ │ │ +462 │ │ │ │ │ +463 (void)instance; // unused │ │ │ │ │ +464 (void)deviceContext; // unused │ │ │ │ │ +465 │ │ │ │ │ +466 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ +467 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ +468 numPatchCoords, │ │ │ │ │ +469 (const _P_a_t_c_h_C_o_o_r_d*)patchCoords->BindCpuBuffer(), │ │ │ │ │ +470 patchTable->GetPatchArrayBuffer(), │ │ │ │ │ +471 patchTable->GetPatchIndexBuffer(), │ │ │ │ │ +472 patchTable->GetPatchParamBuffer()); │ │ │ │ │ +473 } │ │ │ │ │ +474 │ │ │ │ │ +515 template │ │ │ │ │ +_5_1_7 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ +518 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +519 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +520 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +521 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +522 int numPatchCoords, │ │ │ │ │ +523 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +524 PATCH_TABLE *patchTable, │ │ │ │ │ +525 _O_m_p_E_v_a_l_u_a_t_o_r const *instance = NULL, │ │ │ │ │ +526 void * deviceContext = NULL) { │ │ │ │ │ +527 │ │ │ │ │ +528 (void)instance; // unused │ │ │ │ │ +529 (void)deviceContext; // unused │ │ │ │ │ +530 │ │ │ │ │ +531 // XXX: PatchCoords is somewhat abusing vertex primvar buffer interop. │ │ │ │ │ +532 // ideally all buffer classes should have templated by datatype │ │ │ │ │ +533 // so that downcast isn't needed there. │ │ │ │ │ +534 // (e.g. Osd::CpuBuffer ) │ │ │ │ │ +535 // │ │ │ │ │ +536 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ +537 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ +538 duBuffer->BindCpuBuffer(), duDesc, │ │ │ │ │ +539 dvBuffer->BindCpuBuffer(), dvDesc, │ │ │ │ │ +540 numPatchCoords, │ │ │ │ │ +541 (const _P_a_t_c_h_C_o_o_r_d*)patchCoords->BindCpuBuffer(), │ │ │ │ │ +542 patchTable->GetPatchArrayBuffer(), │ │ │ │ │ +543 patchTable->GetPatchIndexBuffer(), │ │ │ │ │ +544 patchTable->GetPatchParamBuffer()); │ │ │ │ │ +545 } │ │ │ │ │ +546 │ │ │ │ │ +605 template │ │ │ │ │ +_6_0_7 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ +608 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +609 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +610 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +611 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +612 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +613 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +614 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +615 int numPatchCoords, │ │ │ │ │ +616 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +617 PATCH_TABLE *patchTable, │ │ │ │ │ +618 _O_m_p_E_v_a_l_u_a_t_o_r const *instance = NULL, │ │ │ │ │ +619 void * deviceContext = NULL) { │ │ │ │ │ +620 │ │ │ │ │ +621 (void)instance; // unused │ │ │ │ │ +622 (void)deviceContext; // unused │ │ │ │ │ +623 │ │ │ │ │ +624 // XXX: PatchCoords is somewhat abusing vertex primvar buffer interop. │ │ │ │ │ +625 // ideally all buffer classes should have templated by datatype │ │ │ │ │ +626 // so that downcast isn't needed there. │ │ │ │ │ +627 // (e.g. Osd::CpuBuffer ) │ │ │ │ │ +628 // │ │ │ │ │ +629 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ +630 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ +631 duBuffer->BindCpuBuffer(), duDesc, │ │ │ │ │ +632 dvBuffer->BindCpuBuffer(), dvDesc, │ │ │ │ │ +633 duuBuffer->BindCpuBuffer(), duuDesc, │ │ │ │ │ +634 duvBuffer->BindCpuBuffer(), duvDesc, │ │ │ │ │ +635 dvvBuffer->BindCpuBuffer(), dvvDesc, │ │ │ │ │ +636 numPatchCoords, │ │ │ │ │ +637 (const _P_a_t_c_h_C_o_o_r_d*)patchCoords->BindCpuBuffer(), │ │ │ │ │ +638 patchTable->GetPatchArrayBuffer(), │ │ │ │ │ +639 patchTable->GetPatchIndexBuffer(), │ │ │ │ │ +640 patchTable->GetPatchParamBuffer()); │ │ │ │ │ +641 } │ │ │ │ │ +642 │ │ │ │ │ +_6_7_0 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ +671 const float *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +672 float *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +673 int numPatchCoords, │ │ │ │ │ +674 const _P_a_t_c_h_C_o_o_r_d *patchCoords, │ │ │ │ │ +675 const _P_a_t_c_h_A_r_r_a_y *patchArrays, │ │ │ │ │ +676 const int *patchIndexBuffer, │ │ │ │ │ +677 const _P_a_t_c_h_P_a_r_a_m *patchParamBuffer); │ │ │ │ │ +678 │ │ │ │ │ +_7_1_6 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ +717 const float *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +718 float *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +719 float *du, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +720 float *dv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +721 int numPatchCoords, │ │ │ │ │ +722 _P_a_t_c_h_C_o_o_r_d const *patchCoords, │ │ │ │ │ +723 _P_a_t_c_h_A_r_r_a_y const *patchArrays, │ │ │ │ │ +724 const int *patchIndexBuffer, │ │ │ │ │ +725 _P_a_t_c_h_P_a_r_a_m const *patchParamBuffer); │ │ │ │ │ +726 │ │ │ │ │ +_7_7_9 static bool _E_v_a_l_P_a_t_c_h_e_s( │ │ │ │ │ +780 const float *src, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +781 float *dst, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +782 float *du, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +783 float *dv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +784 float *duu, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +785 float *duv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +786 float *dvv, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +787 int numPatchCoords, │ │ │ │ │ +788 _P_a_t_c_h_C_o_o_r_d const *patchCoords, │ │ │ │ │ +789 _P_a_t_c_h_A_r_r_a_y const *patchArrays, │ │ │ │ │ +790 const int *patchIndexBuffer, │ │ │ │ │ +791 _P_a_t_c_h_P_a_r_a_m const *patchParamBuffer); │ │ │ │ │ +792 │ │ │ │ │ +821 template │ │ │ │ │ +_8_2_3 static bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +824 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +825 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +826 int numPatchCoords, │ │ │ │ │ +827 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +828 PATCH_TABLE *patchTable, │ │ │ │ │ +829 _O_m_p_E_v_a_l_u_a_t_o_r const *instance = NULL, │ │ │ │ │ +830 void * deviceContext = NULL) { │ │ │ │ │ +831 │ │ │ │ │ +832 (void)instance; // unused │ │ │ │ │ +833 (void)deviceContext; // unused │ │ │ │ │ +834 │ │ │ │ │ +835 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ +836 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ +837 numPatchCoords, │ │ │ │ │ +838 (const _P_a_t_c_h_C_o_o_r_d*)patchCoords->BindCpuBuffer(), │ │ │ │ │ +839 patchTable->GetVaryingPatchArrayBuffer(), │ │ │ │ │ +840 patchTable->GetVaryingPatchIndexBuffer(), │ │ │ │ │ +841 patchTable->GetPatchParamBuffer()); │ │ │ │ │ +842 } │ │ │ │ │ +843 │ │ │ │ │ +884 template │ │ │ │ │ +_8_8_6 static bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +887 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +888 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +889 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +890 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +891 int numPatchCoords, │ │ │ │ │ +892 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +893 PATCH_TABLE *patchTable, │ │ │ │ │ +894 _O_m_p_E_v_a_l_u_a_t_o_r const *instance = NULL, │ │ │ │ │ +895 void * deviceContext = NULL) { │ │ │ │ │ +896 │ │ │ │ │ +897 (void)instance; // unused │ │ │ │ │ +898 (void)deviceContext; // unused │ │ │ │ │ +899 │ │ │ │ │ +900 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ +901 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ +902 duBuffer->BindCpuBuffer(), duDesc, │ │ │ │ │ +903 dvBuffer->BindCpuBuffer(), dvDesc, │ │ │ │ │ +904 numPatchCoords, │ │ │ │ │ +905 (const _P_a_t_c_h_C_o_o_r_d*)patchCoords->BindCpuBuffer(), │ │ │ │ │ +906 patchTable->GetVaryingPatchArrayBuffer(), │ │ │ │ │ +907 patchTable->GetVaryingPatchIndexBuffer(), │ │ │ │ │ +908 patchTable->GetPatchParamBuffer()); │ │ │ │ │ +909 } │ │ │ │ │ +910 │ │ │ │ │ +969 template │ │ │ │ │ +_9_7_1 static bool _E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g( │ │ │ │ │ +972 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +973 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +974 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +975 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +976 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +977 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +978 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +979 int numPatchCoords, │ │ │ │ │ +980 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +981 PATCH_TABLE *patchTable, │ │ │ │ │ +982 _O_m_p_E_v_a_l_u_a_t_o_r const *instance = NULL, │ │ │ │ │ +983 void * deviceContext = NULL) { │ │ │ │ │ +984 │ │ │ │ │ +985 (void)instance; // unused │ │ │ │ │ +986 (void)deviceContext; // unused │ │ │ │ │ +987 │ │ │ │ │ +988 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ +989 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ +990 duBuffer->BindCpuBuffer(), duDesc, │ │ │ │ │ +991 dvBuffer->BindCpuBuffer(), dvDesc, │ │ │ │ │ +992 duuBuffer->BindCpuBuffer(), duuDesc, │ │ │ │ │ +993 duvBuffer->BindCpuBuffer(), duvDesc, │ │ │ │ │ +994 dvvBuffer->BindCpuBuffer(), dvvDesc, │ │ │ │ │ +995 numPatchCoords, │ │ │ │ │ +996 (const _P_a_t_c_h_C_o_o_r_d*)patchCoords->BindCpuBuffer(), │ │ │ │ │ +997 patchTable->GetVaryingPatchArrayBuffer(), │ │ │ │ │ +998 patchTable->GetVaryingPatchIndexBuffer(), │ │ │ │ │ +999 patchTable->GetPatchParamBuffer()); │ │ │ │ │ +1000 } │ │ │ │ │ +1001 │ │ │ │ │ +1032 template │ │ │ │ │ +_1_0_3_4 static bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +1035 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1036 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1037 int numPatchCoords, │ │ │ │ │ +1038 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1039 PATCH_TABLE *patchTable, │ │ │ │ │ +1040 int fvarChannel, │ │ │ │ │ +1041 _O_m_p_E_v_a_l_u_a_t_o_r const *instance = NULL, │ │ │ │ │ +1042 void * deviceContext = NULL) { │ │ │ │ │ +1043 │ │ │ │ │ +1044 (void)instance; // unused │ │ │ │ │ +1045 (void)deviceContext; // unused │ │ │ │ │ +1046 │ │ │ │ │ +1047 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ +1048 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ +1049 numPatchCoords, │ │ │ │ │ +1050 (const _P_a_t_c_h_C_o_o_r_d*)patchCoords->BindCpuBuffer(), │ │ │ │ │ +1051 patchTable->GetFVarPatchArrayBuffer(fvarChannel), │ │ │ │ │ +1052 patchTable->GetFVarPatchIndexBuffer(fvarChannel), │ │ │ │ │ +1053 patchTable->GetFVarPatchParamBuffer(fvarChannel)); │ │ │ │ │ +1054 } │ │ │ │ │ +1055 │ │ │ │ │ +1098 template │ │ │ │ │ +_1_1_0_0 static bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +1101 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1102 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1103 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +1104 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +1105 int numPatchCoords, │ │ │ │ │ +1106 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1107 PATCH_TABLE *patchTable, │ │ │ │ │ +1108 int fvarChannel, │ │ │ │ │ +1109 _O_m_p_E_v_a_l_u_a_t_o_r const *instance = NULL, │ │ │ │ │ +1110 void * deviceContext = NULL) { │ │ │ │ │ +1111 │ │ │ │ │ +1112 (void)instance; // unused │ │ │ │ │ +1113 (void)deviceContext; // unused │ │ │ │ │ +1114 │ │ │ │ │ +1115 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ +1116 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ +1117 duBuffer->BindCpuBuffer(), duDesc, │ │ │ │ │ +1118 dvBuffer->BindCpuBuffer(), dvDesc, │ │ │ │ │ +1119 numPatchCoords, │ │ │ │ │ +1120 (const _P_a_t_c_h_C_o_o_r_d*)patchCoords->BindCpuBuffer(), │ │ │ │ │ +1121 patchTable->GetFVarPatchArrayBuffer(fvarChannel), │ │ │ │ │ +1122 patchTable->GetFVarPatchIndexBuffer(fvarChannel), │ │ │ │ │ +1123 patchTable->GetFVarPatchParamBuffer(fvarChannel)); │ │ │ │ │ +1124 } │ │ │ │ │ +1125 │ │ │ │ │ +1186 template │ │ │ │ │ +_1_1_8_8 static bool _E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g( │ │ │ │ │ +1189 SRC_BUFFER *srcBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &srcDesc, │ │ │ │ │ +1190 DST_BUFFER *dstBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dstDesc, │ │ │ │ │ +1191 DST_BUFFER *duBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duDesc, │ │ │ │ │ +1192 DST_BUFFER *dvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvDesc, │ │ │ │ │ +1193 DST_BUFFER *duuBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duuDesc, │ │ │ │ │ +1194 DST_BUFFER *duvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &duvDesc, │ │ │ │ │ +1195 DST_BUFFER *dvvBuffer, _B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r const &dvvDesc, │ │ │ │ │ +1196 int numPatchCoords, │ │ │ │ │ +1197 PATCHCOORD_BUFFER *patchCoords, │ │ │ │ │ +1198 PATCH_TABLE *patchTable, │ │ │ │ │ +1199 int fvarChannel, │ │ │ │ │ +1200 _O_m_p_E_v_a_l_u_a_t_o_r const *instance = NULL, │ │ │ │ │ +1201 void * deviceContext = NULL) { │ │ │ │ │ +1202 │ │ │ │ │ +1203 (void)instance; // unused │ │ │ │ │ +1204 (void)deviceContext; // unused │ │ │ │ │ +1205 │ │ │ │ │ +1206 return _E_v_a_l_P_a_t_c_h_e_s(srcBuffer->BindCpuBuffer(), srcDesc, │ │ │ │ │ +1207 dstBuffer->BindCpuBuffer(), dstDesc, │ │ │ │ │ +1208 duBuffer->BindCpuBuffer(), duDesc, │ │ │ │ │ +1209 dvBuffer->BindCpuBuffer(), dvDesc, │ │ │ │ │ +1210 duuBuffer->BindCpuBuffer(), duuDesc, │ │ │ │ │ +1211 duvBuffer->BindCpuBuffer(), duvDesc, │ │ │ │ │ +1212 dvvBuffer->BindCpuBuffer(), dvvDesc, │ │ │ │ │ +1213 numPatchCoords, │ │ │ │ │ +1214 (const _P_a_t_c_h_C_o_o_r_d*)patchCoords->BindCpuBuffer(), │ │ │ │ │ +1215 patchTable->GetFVarPatchArrayBuffer(fvarChannel), │ │ │ │ │ +1216 patchTable->GetFVarPatchIndexBuffer(fvarChannel), │ │ │ │ │ +1217 patchTable->GetFVarPatchParamBuffer(fvarChannel)); │ │ │ │ │ +1218 } │ │ │ │ │ +1219 │ │ │ │ │ +1225 │ │ │ │ │ +_1_2_2_6 static void _S_y_n_c_h_r_o_n_i_z_e(void *deviceContext = NULL); │ │ │ │ │ +1227 │ │ │ │ │ +_1_2_2_9 static void _S_e_t_N_u_m_T_h_r_e_a_d_s(int numThreads); │ │ │ │ │ +1230}; │ │ │ │ │ +1231 │ │ │ │ │ +1232 │ │ │ │ │ +1233} // end namespace Osd │ │ │ │ │ +1234 │ │ │ │ │ +1235} // end namespace OPENSUBDIV_VERSION │ │ │ │ │ +1236using namespace OPENSUBDIV_VERSION; │ │ │ │ │ +1237 │ │ │ │ │ +1238} // end namespace OpenSubdiv │ │ │ │ │ +1239 │ │ │ │ │ +1240 │ │ │ │ │ +1241#endif // OPENSUBDIV3_OSD_OMP_EVALUATOR_H │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v │ │ │ │ │ DDeeffiinniittiioonn _l_i_m_i_t_s_._h_:_3_2 │ │ │ │ │ -_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ -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) │ │ │ │ │ _O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_B_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r │ │ │ │ │ BufferDescriptor is a struct which describes buffer elements in interleaved │ │ │ │ │ data buffers.... │ │ │ │ │ DDeeffiinniittiioonn _b_u_f_f_e_r_D_e_s_c_r_i_p_t_o_r_._h_:_6_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r │ │ │ │ │ +DDeeffiinniittiioonn _o_m_p_E_v_a_l_u_a_t_o_r_._h_:_3_9 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _o_m_p_E_v_a_l_u_a_t_o_r_._h_:_1_0_3_4 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +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) │ │ │ │ │ +Static eval stencils function which takes raw CPU pointers for input and │ │ │ │ │ +output. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _o_m_p_E_v_a_l_u_a_t_o_r_._h_:_9_7_1 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +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) │ │ │ │ │ +Generic static eval stencils function with derivatives. This function has a │ │ │ │ │ +same signature as other d... │ │ │ │ │ +DDeeffiinniittiioonn _o_m_p_E_v_a_l_u_a_t_o_r_._h_:_1_6_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +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) │ │ │ │ │ +Static eval stencils function with derivatives, which takes raw CPU pointers │ │ │ │ │ +for input and output. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _o_m_p_E_v_a_l_u_a_t_o_r_._h_:_8_2_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _o_m_p_E_v_a_l_u_a_t_o_r_._h_:_1_1_0_0 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +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) │ │ │ │ │ +Static eval stencils function with derivatives, which takes raw CPU pointers │ │ │ │ │ +for input and output. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +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) │ │ │ │ │ +Generic static eval stencils function. This function has a same signature as │ │ │ │ │ +other device kernels hav... │ │ │ │ │ +DDeeffiinniittiioonn _o_m_p_E_v_a_l_u_a_t_o_r_._h_:_7_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ +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) │ │ │ │ │ +Static limit eval function. It takes an array of PatchCoord and evaluate limit │ │ │ │ │ +values on given PatchT... │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function with derivatives. This function has a same │ │ │ │ │ +signature as other device kern... │ │ │ │ │ +DDeeffiinniittiioonn _o_m_p_E_v_a_l_u_a_t_o_r_._h_:_5_1_7 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_V_a_r_y_i_n_g │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _o_m_p_E_v_a_l_u_a_t_o_r_._h_:_8_8_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function with derivatives. This function has a same │ │ │ │ │ +signature as other device kern... │ │ │ │ │ +DDeeffiinniittiioonn _o_m_p_E_v_a_l_u_a_t_o_r_._h_:_6_0_7 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_S_y_n_c_h_r_o_n_i_z_e │ │ │ │ │ +static void Synchronize(void *deviceContext=NULL) │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_S_t_e_n_c_i_l_s │ │ │ │ │ +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) │ │ │ │ │ +Generic static eval stencils function with derivatives. This function has a │ │ │ │ │ +same signature as other d... │ │ │ │ │ +DDeeffiinniittiioonn _o_m_p_E_v_a_l_u_a_t_o_r_._h_:_3_0_3 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _o_m_p_E_v_a_l_u_a_t_o_r_._h_:_4_5_4 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ +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) │ │ │ │ │ +Static limit eval function. It takes an array of PatchCoord and evaluate limit │ │ │ │ │ +values on given PatchT... │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_S_e_t_N_u_m_T_h_r_e_a_d_s │ │ │ │ │ +static void SetNumThreads(int numThreads) │ │ │ │ │ +Deprecated. Client code should initialize OpenMP. │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s │ │ │ │ │ +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) │ │ │ │ │ +Static limit eval function. It takes an array of PatchCoord and evaluate limit │ │ │ │ │ +values on given PatchT... │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_O_m_p_E_v_a_l_u_a_t_o_r_:_:_E_v_a_l_P_a_t_c_h_e_s_F_a_c_e_V_a_r_y_i_n_g │ │ │ │ │ +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) │ │ │ │ │ +Generic limit eval function. This function has a same signature as other device │ │ │ │ │ +kernels have so that ... │ │ │ │ │ +DDeeffiinniittiioonn _o_m_p_E_v_a_l_u_a_t_o_r_._h_:_1_1_8_8 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_P_a_t_c_h_C_o_o_r_d │ │ │ │ │ +Coordinates set on a patch table. │ │ │ │ │ +DDeeffiinniittiioonn _t_y_p_e_s_._h_:_4_2 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_P_a_t_c_h_A_r_r_a_y │ │ │ │ │ +DDeeffiinniittiioonn _t_y_p_e_s_._h_:_6_6 │ │ │ │ │ +_O_p_e_n_S_u_b_d_i_v_:_:_O_P_E_N_S_U_B_D_I_V___V_E_R_S_I_O_N_:_:_O_s_d_:_:_P_a_t_c_h_P_a_r_a_m │ │ │ │ │ +DDeeffiinniittiioonn _t_y_p_e_s_._h_:_1_2_7 │ │ │ │ │ * _o_p_e_n_s_u_b_d_i_v │ │ │ │ │ * _o_s_d │ │ │ │ │ - * _o_m_p_K_e_r_n_e_l_._h │ │ │ │ │ + * _o_m_p_E_v_a_l_u_a_t_o_r_._h │ │ │ │ │ * Generated on Mon Jun 17 2024 18:57:37 for OpenSubdiv by _[_d_o_x_y_g_e_n_]1.9.8 │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00887.html │ │ │ │ @@ -102,15 +102,15 @@ │ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ #include <bitset>
│ │ │ │ #include <cassert>
│ │ │ │ #include <cstring>
│ │ │ │ #include <vector>
│ │ │ │ #include "../far/topologyRefiner.h"
│ │ │ │ -#include "../far/patchTableFactory.h"
│ │ │ │ +#include "../far/patchTableFactory.h"
│ │ │ │ #include "../far/stencilTable.h"
│ │ │ │ #include "../far/stencilTableFactory.h"
│ │ │ │ #include "../osd/bufferDescriptor.h"
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00887_source.html │ │ │ │ @@ -895,24 +895,24 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
Far::StencilTable const * convertToCompatibleStencilTable< Far::StencilTable, Far::StencilTable, void >(Far::StencilTable const *table, void *)
Definition mesh.h:149
│ │ │ │
Far::LimitStencilTable const * convertToCompatibleStencilTable< Far::LimitStencilTable, Far::LimitStencilTable, void >(Far::LimitStencilTable const *table, void *)
Definition mesh.h:159
│ │ │ │
std::bitset< NUM_MESH_BITS > MeshBitset
Definition mesh.h:63
│ │ │ │
Far::StencilTable const * convertToCompatibleStencilTable< Far::StencilTable, Far::StencilTable, ID3D11DeviceContext >(Far::StencilTable const *table, ID3D11DeviceContext *)
Definition mesh.h:169
│ │ │ │ -
Container for arrays of parametric patches.
Definition patchTable.h:55
│ │ │ │ -
int GetMaxValence() const
Returns max vertex valence.
Definition patchTable.h:92
│ │ │ │ -
StencilTable const * GetLocalPointStencilTable() const
Returns the stencil table to compute local point vertex values.
Definition patchTable.h:778
│ │ │ │ -
StencilTable const * GetLocalPointVaryingStencilTable() const
Returns the stencil table to compute local point varying values.
Definition patchTable.h:783
│ │ │ │ +
Container for arrays of parametric patches.
Definition patchTable.h:55
│ │ │ │ +
int GetMaxValence() const
Returns max vertex valence.
Definition patchTable.h:92
│ │ │ │ +
StencilTable const * GetLocalPointStencilTable() const
Returns the stencil table to compute local point vertex values.
Definition patchTable.h:778
│ │ │ │ +
StencilTable const * GetLocalPointVaryingStencilTable() const
Returns the stencil table to compute local point varying values.
Definition patchTable.h:783
│ │ │ │
static PatchTable * Create(TopologyRefiner const &refiner, Options options=Options(), ConstIndexArray selectedFaces=ConstIndexArray())
Instantiates a PatchTable from a client-provided TopologyRefiner.
│ │ │ │ - │ │ │ │ -
@ ENDCAP_LEGACY_GREGORY
legacy option for 2.x style Gregory patches (Catmark only)
│ │ │ │ -
@ ENDCAP_GREGORY_BASIS
use Gregory patches (highest quality, recommended default)
│ │ │ │ -
@ ENDCAP_BILINEAR_BASIS
use linear patches (simple quads or tris)
│ │ │ │ -
@ ENDCAP_BSPLINE_BASIS
use BSpline-like patches (same patch type as regular)
│ │ │ │ + │ │ │ │ +
@ ENDCAP_LEGACY_GREGORY
legacy option for 2.x style Gregory patches (Catmark only)
│ │ │ │ +
@ ENDCAP_GREGORY_BASIS
use Gregory patches (highest quality, recommended default)
│ │ │ │ +
@ ENDCAP_BILINEAR_BASIS
use linear patches (simple quads or tris)
│ │ │ │ +
@ ENDCAP_BSPLINE_BASIS
use BSpline-like patches (same patch type as regular)
│ │ │ │ │ │ │ │
int GetNumControlVertices() const
Returns the number of control vertices indexed in the table.
│ │ │ │
int GetNumStencils() const
Returns the number of stencils in the table.
│ │ │ │
Stencil table class wrapping the template for compatibility.
│ │ │ │
Limit stencil table class wrapping the template for compatibility.
│ │ │ │
static StencilTable const * Create(TopologyRefiner const &refiner, Options options=Options())
│ │ │ │
static StencilTable const * AppendLocalPointStencilTable(TopologyRefiner const &refiner, StencilTable const *baseStencilTable, StencilTable const *localPointStencilTable, bool factorize=true)
│ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00893_source.html │ │ │ │ @@ -264,15 +264,15 @@ │ │ │ │
142
│ │ │ │
143} // end namespace OpenSubdiv
│ │ │ │
144
│ │ │ │
145#endif // OPENSUBDIV3_OSD_CPU_PATCH_TABLE_H
│ │ │ │ │ │ │ │
std::vector< PatchParam > PatchParamVector
Definition types.h:133
│ │ │ │
std::vector< PatchArray > PatchArrayVector
Definition types.h:132
│ │ │ │ -
Container for arrays of parametric patches.
Definition patchTable.h:55
│ │ │ │ +
Container for arrays of parametric patches.
Definition patchTable.h:55
│ │ │ │ │ │ │ │
const PatchArray * GetFVarPatchArrayBuffer(int fvarChannel=0) const
│ │ │ │ │ │ │ │ │ │ │ │
size_t GetFVarPatchParamSize(int fvarChannel=0) const
│ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00912.html │ │ │ │ @@ -294,15 +294,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
typedef MeshInterface<D3D11PatchTable> D3D11MeshInterface
│ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 38 of file d3d11Mesh.h.

│ │ │ │ +

Definition at line 38 of file d3d11Mesh.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GLMeshInterface

│ │ │ │ │ │ │ │
│ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a00941.html │ │ │ │ @@ -98,15 +98,15 @@ │ │ │ │
SurfaceFactory Class Reference
│ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

Base class providing initialization of a Surface for each face of a mesh. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <surfaceFactory.h>

│ │ │ │ +

#include <surfaceFactory.h>

│ │ │ │
│ │ │ │ Inheritance diagram for SurfaceFactory:
│ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ SurfaceFactoryMeshAdapter │ │ │ │ @@ -245,15 +245,15 @@ │ │ │ │

A subclass of SurfaceFactory is written to support a specific type of connected mesh. The public interface of SurfaceFactory is both inherited by and extended by the subclasses. Expected extensions to the interface include one or more constructors (i.e. given a specific instance of the subclass' mesh type) as well as other methods that may involve the mesh's data types (primvars) in their native form.

│ │ │ │

By inheriting the SurfaceFactoryMeshAdapter interface, SurfaceFactory requires its subclasses to implement the small suite of pure virtual methods to complete the factory's implementation for the subclass' mesh type. These methods provide the base factory with topological information about faces of that mesh – from which it creates instances of Surface defining their limit surface.

│ │ │ │

The SurfaceFactory inherits rather than contains SurfaceFactoryMeshAdapter as instances of SurfaceFactoryMeshAdapter serve no purpose on their own, and the interface between the two is designed with the specific needs of the SurfaceFactory. When customizing a subclass of SurfaceFactory for a particular mesh type, this inheritance also avoids the need to coordinate the subclass of SurfaceFactory with the separate subclass of SurfaceFactoryMeshAdapter.

│ │ │ │

It must be emphasized that a subclass of SurfaceFactory is written to support a specific type of "connected" mesh – not simply a container of data defining a mesh. The SurfaceFactoryMeshAdapter interface describes the complete topological neighborhood around a specific face, and without any connectivity between mesh components (e.g. given a vertex, what are its incident faces?), satisfying these methods will be impossible, or, at best, extremely inefficient.

│ │ │ │

Ultimately a subclass of SurfaceFactory is expected to be a lightweight interface to a connected mesh – lightweight in terms of both time and memory usage. It's construction is expected to be trivial, after which it can quickly and efficiently provide a Surface for one or more faces of a mesh for immediate evaluation. So construction of an instance of a subclass should involve no heavy pre-processing – the greater the overhead of a subclass constructor, the more it violates the intention of the base class as a lightweight interface.

│ │ │ │

Instances of SurfaceFactory are initialized with a set of Options that form part of the state of the factory and remain fixed for its lifetime. Such options are intended to ensure that the instances of Surface that it creates are consistent, as well as to enable/disable or otherwise manage caching for construction efficiency – either internally or between itself and other factories (advanced).

│ │ │ │ │ │ │ │ -

Definition at line 103 of file surfaceFactory.h.

│ │ │ │ +

Definition at line 103 of file surfaceFactory.h.

│ │ │ │

Constructor & Destructor Documentation

│ │ │ │ │ │ │ │

◆ ~SurfaceFactory()

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ @@ -372,15 +372,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

Construct a Surface for the default face-varying data.

│ │ │ │ │ │ │ │ -

Definition at line 551 of file surfaceFactory.h.

│ │ │ │ +

Definition at line 551 of file surfaceFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

◆ CreateFaceVaryingSurface() [2/2]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -414,15 +414,15 @@ │ │ │ │ inline
│ │ │ │
│ │ │ │ │ │ │ │

Construct a Surface for specified face-varying data.

│ │ │ │ │ │ │ │ -

Definition at line 543 of file surfaceFactory.h.

│ │ │ │ +

Definition at line 543 of file surfaceFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ CreateVaryingSurface()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -446,15 +446,15 @@ │ │ │ │ inline

│ │ │ │
│ │ │ │ │ │ │ │

Construct a Surface for varying data.

│ │ │ │ │ │ │ │ -

Definition at line 535 of file surfaceFactory.h.

│ │ │ │ +

Definition at line 535 of file surfaceFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ CreateVertexSurface()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -478,15 +478,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Construct a Surface for vertex data.

│ │ │ │ │ │ │ │ -

Definition at line 527 of file surfaceFactory.h.

│ │ │ │ +

Definition at line 527 of file surfaceFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ FaceHasLimitSurface()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -549,15 +549,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Return the set of subdivision options.

│ │ │ │ │ │ │ │ -

Definition at line 173 of file surfaceFactory.h.

│ │ │ │ +

Definition at line 173 of file surfaceFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetSchemeType()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -578,15 +578,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Return the subdivision scheme.

│ │ │ │ │ │ │ │ -

Definition at line 170 of file surfaceFactory.h.

│ │ │ │ +

Definition at line 170 of file surfaceFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ InitFaceVaryingSurface() [1/2]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -629,15 +629,15 @@ │ │ │ │ faceIndexIndex of face with limit surface of interest │ │ │ │ surfaceSurface to initialize for face-varying data │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
Returns
True if the face has a limit surface, the default face-varying ID was valid, and its Surface was successfully constructed
│ │ │ │ │ │ │ │ -

Definition at line 500 of file surfaceFactory.h.

│ │ │ │ +

Definition at line 500 of file surfaceFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ InitFaceVaryingSurface() [2/2]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -686,15 +686,15 @@ │ │ │ │ surfaceSurface to initialize for face-varying data │ │ │ │ fvarIDIdentifier of a specific set of face-varying data │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
Returns
True if the face has a limit surface, the given face-varying ID was valid, and its Surface was successfully constructed
│ │ │ │ │ │ │ │ -

Definition at line 494 of file surfaceFactory.h.

│ │ │ │ +

Definition at line 494 of file surfaceFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ InitSurfaces()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -766,15 +766,15 @@ │ │ │ │ fvarCountSize of array of face-varying Surfaces (optional) │ │ │ │ varSurfaceSurface to initialize for varying data (optional) │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
Returns
True if the face has a limit surface, any given face-varying IDs were valid, and all Surfaces were successfully constructed.
│ │ │ │ │ │ │ │ -

Definition at line 507 of file surfaceFactory.h.

│ │ │ │ +

Definition at line 507 of file surfaceFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ InitVaryingSurface()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -816,15 +816,15 @@ │ │ │ │ faceIndexIndex of face with limit surface of interest │ │ │ │ surfaceSurface to initialize for varying data │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
Returns
True if the face has a limit surface and it was successfully constructed
│ │ │ │ │ │ │ │ -

Definition at line 488 of file surfaceFactory.h.

│ │ │ │ +

Definition at line 488 of file surfaceFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ InitVertexSurface()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -866,15 +866,15 @@ │ │ │ │ faceIndexIndex of face with limit surface of interest │ │ │ │ surfaceSurface to initialize for vertex data │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
Returns
True if the face has a limit surface and it was successfully constructed
│ │ │ │ │ │ │ │ -

Definition at line 482 of file surfaceFactory.h.

│ │ │ │ +

Definition at line 482 of file surfaceFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ operator=()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -925,15 +925,15 @@ │ │ │ │
│ │ │ │ │ │ │ │

Subclass to identify an internal cache for use by base class.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │
The documentation for this class was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Simple set of options assigned to instances of SurfaceFactory. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <surfaceFactory.h>

│ │ │ │ +

#include <surfaceFactory.h>

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -139,15 +139,15 @@ │ │ │ │ │ │ │ │

│ │ │ │ Public Member Functions

 Options ()
 
OptionsSetDefaultFVarID (FVarID id)
 Assign the default face-varying ID (none assigned by default)
 
│ │ │ │

Detailed Description

│ │ │ │

Simple set of options assigned to instances of SurfaceFactory.

│ │ │ │

The Options class is a simple container specifying options for the construction of the SurfaceFactory to be applied during its lifetime.

│ │ │ │

These options currently include choices to identify a default face-varying ID, to control caching behavior (on or off, use of external vs internal cache), and to control the accuracy of the resulting limit surface representations.

│ │ │ │ │ │ │ │ -

Definition at line 116 of file surfaceFactory.h.

│ │ │ │ +

Definition at line 116 of file surfaceFactory.h.

│ │ │ │

Constructor & Destructor Documentation

│ │ │ │ │ │ │ │

◆ Options()

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ @@ -164,15 +164,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ inline
│ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 118 of file surfaceFactory.h.

│ │ │ │ +

Definition at line 118 of file surfaceFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │

Member Function Documentation

│ │ │ │ │ │ │ │

◆ EnableCaching()

│ │ │ │ │ │ │ │ @@ -195,15 +195,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Enable or disable caching (default is true):

│ │ │ │ │ │ │ │ -

Definition at line 457 of file surfaceFactory.h.

│ │ │ │ +

Definition at line 457 of file surfaceFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetApproxLevelSharp()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -224,15 +224,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Return maximum refinement level for sharp features.

│ │ │ │ │ │ │ │ -

Definition at line 147 of file surfaceFactory.h.

│ │ │ │ +

Definition at line 147 of file surfaceFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetApproxLevelSmooth()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -253,15 +253,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Return maximum refinement level for smooth features.

│ │ │ │ │ │ │ │ -

Definition at line 142 of file surfaceFactory.h.

│ │ │ │ +

Definition at line 142 of file surfaceFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetDefaultFVarID()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -282,15 +282,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Return the default face-varying ID.

│ │ │ │ │ │ │ │ -

Definition at line 125 of file surfaceFactory.h.

│ │ │ │ +

Definition at line 125 of file surfaceFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetExternalCache()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -311,15 +311,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Return any assigned external cache.

│ │ │ │ │ │ │ │ -

Definition at line 135 of file surfaceFactory.h.

│ │ │ │ +

Definition at line 135 of file surfaceFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ IsCachingEnabled()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -340,15 +340,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Return if caching is enable.

│ │ │ │ │ │ │ │ -

Definition at line 130 of file surfaceFactory.h.

│ │ │ │ +

Definition at line 130 of file surfaceFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ SetApproxLevelSharp()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -370,15 +370,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Assign maximum refinement level for sharp features.

│ │ │ │ │ │ │ │ -

Definition at line 472 of file surfaceFactory.h.

│ │ │ │ +

Definition at line 472 of file surfaceFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ SetApproxLevelSmooth()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -400,15 +400,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Assign maximum refinement level for smooth features.

│ │ │ │ │ │ │ │ -

Definition at line 467 of file surfaceFactory.h.

│ │ │ │ +

Definition at line 467 of file surfaceFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ SetDefaultFVarID()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -430,15 +430,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Assign the default face-varying ID (none assigned by default)

│ │ │ │ │ │ │ │ -

Definition at line 452 of file surfaceFactory.h.

│ │ │ │ +

Definition at line 452 of file surfaceFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ SetExternalCache()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -460,20 +460,20 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Assign an external cache to override the internal.

│ │ │ │ │ │ │ │ -

Definition at line 462 of file surfaceFactory.h.

│ │ │ │ +

Definition at line 462 of file surfaceFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │
The documentation for this class was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Abstract interface adapting SurfaceFactory to a connected mesh representation. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <surfaceFactoryMeshAdapter.h>

│ │ │ │ +

#include <surfaceFactoryMeshAdapter.h>

│ │ │ │
│ │ │ │ Inheritance diagram for SurfaceFactoryMeshAdapter:
│ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ SurfaceFactory │ │ │ │ @@ -171,15 +171,15 @@ │ │ │ │   │ │ │ │ virtual bool getFaceNeighborhoodFVarValueIndicesIfRegular (Index faceIndex, FVarID fvarID, Index fvarValueIndices[]) const │ │ │ │   │ │ │ │ │ │ │ │

Detailed Description

│ │ │ │

Abstract interface adapting SurfaceFactory to a connected mesh representation.

│ │ │ │ │ │ │ │ -

Definition at line 65 of file surfaceFactoryMeshAdapter.h.

│ │ │ │ +

Definition at line 65 of file surfaceFactoryMeshAdapter.h.

│ │ │ │

Member Typedef Documentation

│ │ │ │ │ │ │ │

◆ FVarID

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ @@ -189,15 +189,15 @@ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

Type used to identify and specify face-varying primvars.

│ │ │ │

A face-varying ID is used to specify face-varying primvars for evaluation so that they can be identified by the subclass for the mesh. It can be assigned as either a positive integer ID or pointer, with the subclass determining its interpretation.

│ │ │ │

Often only one face-varying primvar is of interest, so a default can be assigned to the factory to avoid repeated specification.

│ │ │ │ │ │ │ │ -

Definition at line 80 of file surfaceFactoryMeshAdapter.h.

│ │ │ │ +

Definition at line 80 of file surfaceFactoryMeshAdapter.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

◆ Index

│ │ │ │ │ │ │ │
│ │ │ │ @@ -207,15 +207,15 @@ │ │ │ │ typedef int Index │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Integer type representing a mesh index.

│ │ │ │ │ │ │ │ -

Definition at line 68 of file surfaceFactoryMeshAdapter.h.

│ │ │ │ +

Definition at line 68 of file surfaceFactoryMeshAdapter.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │

Member Function Documentation

│ │ │ │ │ │ │ │

◆ getFaceFVarValueIndices()

│ │ │ │ │ │ │ │ @@ -296,15 +296,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inlineprotectedvirtual │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 224 of file surfaceFactoryMeshAdapter.h.

│ │ │ │ +

Definition at line 224 of file surfaceFactoryMeshAdapter.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

◆ getFaceNeighborhoodVertexIndicesIfRegular()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -334,15 +334,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inlineprotectedvirtual │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 218 of file surfaceFactoryMeshAdapter.h.

│ │ │ │ +

Definition at line 218 of file surfaceFactoryMeshAdapter.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ getFaceSize()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -571,15 +571,15 @@ │ │ │ │
│ │ │ │ │ │ │ │

Describe the topology of incident faces around a face-vertex.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │
The documentation for this class was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Encapsulates a specific tessellation pattern of a Parameterization. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <tessellation.h>

│ │ │ │ +

#include <tessellation.h>

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  Options
 Options configure a Tessellation to specify the nature of both its results and the structure of the coordinate and facet index arrays that its methods will populate. More...
 
│ │ │ │ @@ -219,15 +219,15 @@ │ │ │ │ │ │ │ │
 
│ │ │ │

Detailed Description

│ │ │ │

Encapsulates a specific tessellation pattern of a Parameterization.

│ │ │ │

Tessellation is a simple class that encapsulates a specified tessellation pattern for a given Parameterization. Tessellation parameters are given on construction and are fixed for its lifetime.

│ │ │ │

Methods allow inspection of the pattern in terms of the 2D coordinates of the points comprising the pattern and the faces that connect them. The 2D coordinates are referred to both in the documentation and the interface as "coords" while the faces connecting them are referred to as "facets" (to distinguish from the faces of the mesh, to which a Tessellation is applied).

│ │ │ │ │ │ │ │ -

Definition at line 51 of file tessellation.h.

│ │ │ │ +

Definition at line 51 of file tessellation.h.

│ │ │ │

Constructor & Destructor Documentation

│ │ │ │ │ │ │ │

◆ Tessellation() [1/4]

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ @@ -445,15 +445,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

Retrieve the coordinates for the entire pattern.

│ │ │ │ │ │ │ │ -

Definition at line 372 of file tessellation.h.

│ │ │ │ +

Definition at line 372 of file tessellation.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

◆ GetCoordStride()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -474,15 +474,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Return the number of elements between each coordinate.

│ │ │ │ │ │ │ │ -

Definition at line 208 of file tessellation.h.

│ │ │ │ +

Definition at line 208 of file tessellation.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

◆ GetEdgeCoords()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -535,15 +535,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Return the size of the face.

│ │ │ │ │ │ │ │ -

Definition at line 182 of file tessellation.h.

│ │ │ │ +

Definition at line 182 of file tessellation.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetFacets()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -584,15 +584,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Return the number of indices assigned to each facet.

│ │ │ │ │ │ │ │ -

Definition at line 258 of file tessellation.h.

│ │ │ │ +

Definition at line 258 of file tessellation.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetFacetStride()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -613,15 +613,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Return the number of elements between each facet.

│ │ │ │ │ │ │ │ -

Definition at line 261 of file tessellation.h.

│ │ │ │ +

Definition at line 261 of file tessellation.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetInteriorCoords()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -664,15 +664,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Return the number of boundary coordinates.

│ │ │ │ │ │ │ │ -

Definition at line 211 of file tessellation.h.

│ │ │ │ +

Definition at line 211 of file tessellation.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetNumCoords()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -693,15 +693,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Return the number of coordinates in the entire pattern.

│ │ │ │ │ │ │ │ -

Definition at line 205 of file tessellation.h.

│ │ │ │ +

Definition at line 205 of file tessellation.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetNumEdgeCoords()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -723,15 +723,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Return the number of coordinates within a given edge (excluding those at its end vertices)

│ │ │ │ │ │ │ │ -

Definition at line 218 of file tessellation.h.

│ │ │ │ +

Definition at line 218 of file tessellation.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetNumFacets()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -752,15 +752,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Return the number of facets in the entire pattern.

│ │ │ │ │ │ │ │ -

Definition at line 255 of file tessellation.h.

│ │ │ │ +

Definition at line 255 of file tessellation.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetNumInteriorCoords()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -781,15 +781,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Return the number of interior coordinates.

│ │ │ │ │ │ │ │ -

Definition at line 214 of file tessellation.h.

│ │ │ │ +

Definition at line 214 of file tessellation.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetParameterization()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -810,15 +810,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Return the Parameterization.

│ │ │ │ │ │ │ │ -

Definition at line 179 of file tessellation.h.

│ │ │ │ +

Definition at line 179 of file tessellation.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetRates()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -872,15 +872,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Retrieve the coordinate for a given vertex of the face.

│ │ │ │ │ │ │ │ -

Definition at line 365 of file tessellation.h.

│ │ │ │ +

Definition at line 365 of file tessellation.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ IsUniform()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -901,15 +901,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Return if the pattern is uniform.

│ │ │ │ │ │ │ │ -

Definition at line 188 of file tessellation.h.

│ │ │ │ +

Definition at line 188 of file tessellation.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ IsValid()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -930,15 +930,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Return true if correctly initialized.

│ │ │ │ │ │ │ │ -

Definition at line 162 of file tessellation.h.

│ │ │ │ +

Definition at line 162 of file tessellation.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ operator=()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1063,15 +1063,15 @@ │ │ │ │
│ │ │ │ │ │ │ │

Reassign indices of boundary coordinates while offseting those of interior coordinates.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │
The documentation for this class was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Options configure a Tessellation to specify the nature of both its results and the structure of the coordinate and facet index arrays that its methods will populate. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <tessellation.h>

│ │ │ │ +

#include <tessellation.h>

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -132,15 +132,15 @@ │ │ │ │ │ │ │ │

│ │ │ │ Public Member Functions

 Options ()
 
OptionsPreserveQuads (bool on)
 Select preservation of quads for quad-based subdivision (requires 4-sided facets, default is off)
 
│ │ │ │

Detailed Description

│ │ │ │

Options configure a Tessellation to specify the nature of both its results and the structure of the coordinate and facet index arrays that its methods will populate.

│ │ │ │

The sizes and strides of the target arrays should be specified explicitly as they are not inferred by the presence of other options.

│ │ │ │

Modifiers of Options return a reference to itself to facilitate inline usage.

│ │ │ │ │ │ │ │ -

Definition at line 65 of file tessellation.h.

│ │ │ │ +

Definition at line 65 of file tessellation.h.

│ │ │ │

Constructor & Destructor Documentation

│ │ │ │ │ │ │ │

◆ Options()

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ @@ -157,15 +157,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ inline
│ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 67 of file tessellation.h.

│ │ │ │ +

Definition at line 67 of file tessellation.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │

Member Function Documentation

│ │ │ │ │ │ │ │

◆ GetCoordStride()

│ │ │ │ │ │ │ │ @@ -187,15 +187,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Return the stride between (u,v) pairs.

│ │ │ │ │ │ │ │ -

Definition at line 90 of file tessellation.h.

│ │ │ │ +

Definition at line 90 of file tessellation.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetFacetSize()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -214,15 +214,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 80 of file tessellation.h.

│ │ │ │ +

Definition at line 80 of file tessellation.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetFacetStride()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -243,15 +243,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Return the stride between facets.

│ │ │ │ │ │ │ │ -

Definition at line 85 of file tessellation.h.

│ │ │ │ +

Definition at line 85 of file tessellation.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ PreserveQuads() [1/2]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -272,15 +272,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Return if preservation of quads is set.

│ │ │ │ │ │ │ │ -

Definition at line 74 of file tessellation.h.

│ │ │ │ +

Definition at line 74 of file tessellation.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ PreserveQuads() [2/2]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -302,15 +302,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Select preservation of quads for quad-based subdivision (requires 4-sided facets, default is off)

│ │ │ │ │ │ │ │ -

Definition at line 343 of file tessellation.h.

│ │ │ │ +

Definition at line 343 of file tessellation.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ SetCoordStride()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -332,15 +332,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Assign the stride between (u,v) pairs (default is 2)

│ │ │ │ │ │ │ │ -

Definition at line 358 of file tessellation.h.

│ │ │ │ +

Definition at line 358 of file tessellation.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ SetFacetSize()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -362,15 +362,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Assign the number of indices per facet (must be 3 or 4, default is 3)

│ │ │ │ │ │ │ │ -

Definition at line 348 of file tessellation.h.

│ │ │ │ +

Definition at line 348 of file tessellation.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ SetFacetStride()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -392,20 +392,20 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Assign the stride between facets (default is facet size)

│ │ │ │ │ │ │ │ -

Definition at line 353 of file tessellation.h.

│ │ │ │ +

Definition at line 353 of file tessellation.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │
The documentation for this class was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Simple class used by subclasses of SurfaceFactory to describe a vertex. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <vertexDescriptor.h>

│ │ │ │ +

#include <vertexDescriptor.h>

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -178,15 +178,15 @@ │ │ │ │ │ │ │ │

│ │ │ │ Public Member Functions

Methods to begin and end specification

Partially constructed instances are populated using a set of methods between calls to Initialize() and Finalize(). Both return false to indicate failure due to invalid input, or the instance can be inspected after each to determine if valid.

│ │ │ │
bool Initialize (int numIncidentFaces)
 
│ │ │ │

Detailed Description

│ │ │ │

Simple class used by subclasses of SurfaceFactory to describe a vertex.

│ │ │ │

VertexDescriptor is a simple class used by SurfaceFactory and its subclasses to provide a complete topological description around the vertex of a face, i.e. its valence, the sizes of its incident faces, sharpness values, etc.

│ │ │ │

Instances are created and partially initialized by SurfaceFactory before being passed to its subclasses to be fully populated. So public construction is not available (or useful).

│ │ │ │ │ │ │ │ -

Definition at line 131 of file vertexDescriptor.h.

│ │ │ │ +

Definition at line 131 of file vertexDescriptor.h.

│ │ │ │

Member Function Documentation

│ │ │ │ │ │ │ │

◆ ClearEdgeSharpness()

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ @@ -205,15 +205,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

Remove any sharpness assigned to the incident edges.

│ │ │ │ │ │ │ │ -

Definition at line 398 of file vertexDescriptor.h.

│ │ │ │ +

Definition at line 398 of file vertexDescriptor.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

◆ ClearIncidentFaceSizes()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -234,15 +234,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Remove any assigned sizes of incident faces.

│ │ │ │ │ │ │ │ -

Definition at line 350 of file vertexDescriptor.h.

│ │ │ │ +

Definition at line 350 of file vertexDescriptor.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

◆ ClearVertexSharpness()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -263,15 +263,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Remove any sharpness assigned to the vertex.

│ │ │ │ │ │ │ │ -

Definition at line 377 of file vertexDescriptor.h.

│ │ │ │ +

Definition at line 377 of file vertexDescriptor.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ Finalize()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -328,15 +328,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Return the sharpness assigned to edges of an incident face.

│ │ │ │ │ │ │ │ -

Definition at line 436 of file vertexDescriptor.h.

│ │ │ │ +

Definition at line 436 of file vertexDescriptor.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetIncidentFaceSize()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -358,15 +358,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Return the size of an incident face.

│ │ │ │ │ │ │ │ -

Definition at line 362 of file vertexDescriptor.h.

│ │ │ │ +

Definition at line 362 of file vertexDescriptor.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetManifoldEdgeSharpness()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -388,15 +388,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Return the sharpness assigned to a manifold edge.

│ │ │ │ │ │ │ │ -

Definition at line 420 of file vertexDescriptor.h.

│ │ │ │ +

Definition at line 420 of file vertexDescriptor.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetVertexSharpness()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -417,15 +417,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Return the sharpness of the vertex.

│ │ │ │ │ │ │ │ -

Definition at line 386 of file vertexDescriptor.h.

│ │ │ │ +

Definition at line 386 of file vertexDescriptor.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ HasEdgeSharpness()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -446,15 +446,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Return if sharpness was assigned to the incident edges.

│ │ │ │ │ │ │ │ -

Definition at line 394 of file vertexDescriptor.h.

│ │ │ │ +

Definition at line 394 of file vertexDescriptor.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ HasIncidentFaceSizes()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -475,15 +475,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Return if the sizes of incident faces are assigned.

│ │ │ │ │ │ │ │ -

Definition at line 346 of file vertexDescriptor.h.

│ │ │ │ +

Definition at line 346 of file vertexDescriptor.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ HasVertexSharpness()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -504,15 +504,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Return if sharpness was assigned to the vertex.

│ │ │ │ │ │ │ │ -

Definition at line 373 of file vertexDescriptor.h.

│ │ │ │ +

Definition at line 373 of file vertexDescriptor.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ Initialize()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -553,15 +553,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Return if vertex neighborhood is on a boundary.

│ │ │ │ │ │ │ │ -

Definition at line 338 of file vertexDescriptor.h.

│ │ │ │ +

Definition at line 338 of file vertexDescriptor.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ IsManifold()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -582,15 +582,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Return if vertex neighborhood is manifold.

│ │ │ │ │ │ │ │ -

Definition at line 329 of file vertexDescriptor.h.

│ │ │ │ +

Definition at line 329 of file vertexDescriptor.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ IsValid()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -611,15 +611,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Return if instance is valid.

│ │ │ │ │ │ │ │ -

Definition at line 320 of file vertexDescriptor.h.

│ │ │ │ +

Definition at line 320 of file vertexDescriptor.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ SetBoundary()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -641,15 +641,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Declare the vertex neighborhood as being on a boundary.

│ │ │ │ │ │ │ │ -

Definition at line 334 of file vertexDescriptor.h.

│ │ │ │ +

Definition at line 334 of file vertexDescriptor.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ SetIncidentFaceEdgeSharpness()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -696,15 +696,15 @@ │ │ │ │ faceIndexIndex of the incident face │ │ │ │ leadingEdgeSharpSharpness to assign to the leading edge of the incident face, i.e. the edge of the face following the vertex. │ │ │ │ trailingEdgeSharpSharpness to assign to the trailing edge of the incident face, i.e. the edge of the face preceding the vertex. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 427 of file vertexDescriptor.h.

│ │ │ │ +

Definition at line 427 of file vertexDescriptor.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ SetIncidentFaceSize()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -736,15 +736,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Assign the size of an incident face.

│ │ │ │ │ │ │ │ -

Definition at line 355 of file vertexDescriptor.h.

│ │ │ │ +

Definition at line 355 of file vertexDescriptor.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ SetManifold()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -766,15 +766,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Declare the vertex neighborhood as manifold (ordered)

│ │ │ │ │ │ │ │ -

Definition at line 325 of file vertexDescriptor.h.

│ │ │ │ +

Definition at line 325 of file vertexDescriptor.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ SetManifoldEdgeSharpness()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -814,15 +814,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
edgeIndexIndex of the edge in the ordered sequence
edgeSharpnessSharpness to be assigned to the edge
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 403 of file vertexDescriptor.h.

│ │ │ │ +

Definition at line 403 of file vertexDescriptor.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ SetVertexSharpness()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -844,20 +844,20 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Assign sharpness to the vertex.

│ │ │ │ │ │ │ │ -

Definition at line 382 of file vertexDescriptor.h.

│ │ │ │ +

Definition at line 382 of file vertexDescriptor.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │
The documentation for this class was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Container for arrays of parametric patches. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <patchTable.h>

│ │ │ │ +

#include <patchTable.h>

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Classes

class  PatchHandle
 Handle that can be used as unique patch identifier within PatchTable. More...
 
│ │ │ │ @@ -420,15 +420,15 @@ │ │ │ │
│ │ │ │

Detailed Description

│ │ │ │

Container for arrays of parametric patches.

│ │ │ │

PatchTable contains topology and parametric information about the patches generated by the Refinement process. Patches in the table are sorted into arrays based on their PatchDescriptor Type.

│ │ │ │

Note : PatchTable can be accessed either using a PatchHandle or a combination of array and patch indices.

│ │ │ │

XXXX manuelk we should add a PatchIterator that can dereference into a PatchHandle for fast linear traversal of the table

│ │ │ │ │ │ │ │ -

Definition at line 55 of file patchTable.h.

│ │ │ │ +

Definition at line 55 of file patchTable.h.

│ │ │ │

Member Typedef Documentation

│ │ │ │ │ │ │ │

◆ ConstQuadOffsetsArray

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ @@ -436,15 +436,15 @@ │ │ │ │ │ │ │ │ │ │ │ │
typedef Vtr::ConstArray<unsigned int> ConstQuadOffsetsArray
│ │ │ │
│ │ │ │ │ │ │ │

Accessors for the gregory patch evaluation buffers. These methods will be deprecated.

│ │ │ │ │ │ │ │ -

Definition at line 259 of file patchTable.h.

│ │ │ │ +

Definition at line 259 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

◆ PatchVertsTable

│ │ │ │ │ │ │ │
│ │ │ │ @@ -452,15 +452,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
typedef std::vector<Index> PatchVertsTable
│ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 375 of file patchTable.h.

│ │ │ │ +

Definition at line 375 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

◆ QuadOffsetsTable

│ │ │ │ │ │ │ │
│ │ │ │ @@ -468,15 +468,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
typedef std::vector<unsigned int> QuadOffsetsTable
│ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 389 of file patchTable.h.

│ │ │ │ +

Definition at line 389 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ VertexValenceTable

│ │ │ │ │ │ │ │
│ │ │ │ @@ -484,15 +484,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
typedef std::vector<Index> VertexValenceTable
│ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 264 of file patchTable.h.

│ │ │ │ +

Definition at line 264 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Constructor & Destructor Documentation

│ │ │ │ │ │ │ │

◆ PatchTable() [1/2]

│ │ │ │ │ │ │ │ @@ -601,15 +601,15 @@ │ │ │ │ srcBuffer with primvar data for the base and refined vertex values │ │ │ │ dstDestination buffer for the computed local point vertex values │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

For more flexibility computing local vertex points, retrieval of the local point stencil table and use of its public methods is recommended or often required.

│ │ │ │ │ │ │ │ -

Definition at line 826 of file patchTable.h.

│ │ │ │ +

Definition at line 826 of file patchTable.h.

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

◆ ComputeLocalPointValuesFaceVarying()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -658,15 +658,15 @@ │ │ │ │ dstDestination buffer for the computed local point face-varying values │ │ │ │ channelface-varying channel │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

For more flexibility computing local face-varying points, retrieval of the local point face-varying stencil table and use of its public methods is recommended or often required.

│ │ │ │ │ │ │ │ -

Definition at line 844 of file patchTable.h.

│ │ │ │ +

Definition at line 844 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ ComputeLocalPointValuesVarying()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -708,15 +708,15 @@ │ │ │ │ srcBuffer with primvar data for the base and refined varying values │ │ │ │ dstDestination buffer for the computed local point varying values │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

For more flexibility computing local varying points, retrieval of the local point varying stencil table and use of its public methods is recommended or often required.

│ │ │ │ │ │ │ │ -

Definition at line 835 of file patchTable.h.

│ │ │ │ +

Definition at line 835 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvaluateBasis() [1/3]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -790,15 +790,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

An overloaded version to assist template parameter resolution when explicitly declaring unused array arguments as 0.

│ │ │ │ │ │ │ │ -

Definition at line 865 of file patchTable.h.

│ │ │ │ +

Definition at line 865 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvaluateBasis() [2/3]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -872,15 +872,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

An overloaded version to assist template parameter resolution when explicitly declaring unused array arguments as 0.

│ │ │ │ │ │ │ │ -

Definition at line 858 of file patchTable.h.

│ │ │ │ +

Definition at line 858 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvaluateBasis() [3/3]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1048,15 +1048,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

An overloaded version to assist template parameter resolution when explicitly declaring unused array arguments as 0.

│ │ │ │ │ │ │ │ -

Definition at line 895 of file patchTable.h.

│ │ │ │ +

Definition at line 895 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvaluateBasisFaceVarying() [2/3]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1136,15 +1136,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

An overloaded version to assist template parameter resolution when explicitly declaring unused array arguments as 0.

│ │ │ │ │ │ │ │ -

Definition at line 888 of file patchTable.h.

│ │ │ │ +

Definition at line 888 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvaluateBasisFaceVarying() [3/3]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1313,15 +1313,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

An overloaded version to assist template parameter resolution when explicitly declaring unused array arguments as 0.

│ │ │ │ │ │ │ │ -

Definition at line 880 of file patchTable.h.

│ │ │ │ +

Definition at line 880 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvaluateBasisVarying() [2/3]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1395,15 +1395,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

An overloaded version to assist template parameter resolution when explicitly declaring unused array arguments as 0.

│ │ │ │ │ │ │ │ -

Definition at line 873 of file patchTable.h.

│ │ │ │ +

Definition at line 873 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvaluateBasisVarying() [3/3]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1654,15 +1654,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 812 of file patchTable.h.

│ │ │ │ +

Definition at line 812 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetLocalPointFaceVaryingStencilTable() [2/3]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1684,15 +1684,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Returns the stencil table to compute local point face-varying values.

│ │ │ │ │ │ │ │ -

Definition at line 789 of file patchTable.h.

│ │ │ │ +

Definition at line 789 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetLocalPointFaceVaryingStencilTable() [3/3]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1735,15 +1735,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Returns the stencil table to compute local point vertex values.

│ │ │ │ │ │ │ │ -

Definition at line 778 of file patchTable.h.

│ │ │ │ +

Definition at line 778 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetLocalPointStencilTable() [2/3]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1785,15 +1785,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 800 of file patchTable.h.

│ │ │ │ +

Definition at line 800 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetLocalPointVaryingStencilTable() [1/3]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1814,15 +1814,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Returns the stencil table to compute local point varying values.

│ │ │ │ │ │ │ │ -

Definition at line 783 of file patchTable.h.

│ │ │ │ +

Definition at line 783 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetLocalPointVaryingStencilTable() [2/3]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1864,15 +1864,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 806 of file patchTable.h.

│ │ │ │ +

Definition at line 806 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetMaxValence()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1893,15 +1893,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Returns max vertex valence.

│ │ │ │ │ │ │ │ -

Definition at line 92 of file patchTable.h.

│ │ │ │ +

Definition at line 92 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetNumControlVertices()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1942,15 +1942,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Returns the total number of control vertex indices in the table.

│ │ │ │ │ │ │ │ -

Definition at line 84 of file patchTable.h.

│ │ │ │ +

Definition at line 84 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetNumFVarChannels()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2106,15 +2106,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Returns the total number of ptex faces in the mesh.

│ │ │ │ │ │ │ │ -

Definition at line 95 of file patchTable.h.

│ │ │ │ +

Definition at line 95 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetPatchArrayDescriptor()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2255,15 +2255,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Get the table of patch control vertices.

│ │ │ │ │ │ │ │ -

Definition at line 378 of file patchTable.h.

│ │ │ │ +

Definition at line 378 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetPatchDescriptor()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2568,15 +2568,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Returns the PatchParamTable (PatchParams order matches patch array sorting)

│ │ │ │ │ │ │ │ -

Definition at line 381 of file patchTable.h.

│ │ │ │ +

Definition at line 381 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetPatchQuadOffsets()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2717,15 +2717,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Returns the quad-offsets table.

│ │ │ │ │ │ │ │ -

Definition at line 392 of file patchTable.h.

│ │ │ │ +

Definition at line 392 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetSharpnessIndexTable()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2746,15 +2746,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Returns a sharpness index table for each patch (if exists)

│ │ │ │ │ │ │ │ -

Definition at line 384 of file patchTable.h.

│ │ │ │ +

Definition at line 384 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ getSharpnessIndices()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2801,15 +2801,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Returns sharpness values table.

│ │ │ │ │ │ │ │ -

Definition at line 387 of file patchTable.h.

│ │ │ │ +

Definition at line 387 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ getSharpnessValues()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2944,15 +2944,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Returns the 'VertexValences' table (vertex neighborhoods table)

│ │ │ │ │ │ │ │ -

Definition at line 267 of file patchTable.h.

│ │ │ │ +

Definition at line 267 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ IsFeatureAdaptive()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -3013,15 +3013,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 756 of file patchTable.h.

│ │ │ │ +

Definition at line 756 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ LocalPointFaceVaryingStencilPrecisionMatchesType() [3/3]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -3042,15 +3042,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 769 of file patchTable.h.

│ │ │ │ +

Definition at line 769 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ LocalPointStencilPrecisionMatchesType() [1/3]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -3092,15 +3092,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 748 of file patchTable.h.

│ │ │ │ +

Definition at line 748 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ LocalPointStencilPrecisionMatchesType() [3/3]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -3121,15 +3121,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 761 of file patchTable.h.

│ │ │ │ +

Definition at line 761 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ LocalPointVaryingStencilPrecisionMatchesType() [1/3]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -3171,15 +3171,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 752 of file patchTable.h.

│ │ │ │ +

Definition at line 752 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ LocalPointVaryingStencilPrecisionMatchesType() [3/3]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -3200,15 +3200,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 765 of file patchTable.h.

│ │ │ │ +

Definition at line 765 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ print()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -3244,20 +3244,20 @@ │ │ │ │ │ │ │ │ │ │ │ │ friend │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 531 of file patchTable.h.

│ │ │ │ +

Definition at line 531 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │
The documentation for this class was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Handle that can be used as unique patch identifier within PatchTable. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <patchTable.h>

│ │ │ │ +

#include <patchTable.h>

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -119,15 +119,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Public Attributes

Index arrayIndex
 
Index patchIndex
 
 
class PatchMap
 
│ │ │ │

Detailed Description

│ │ │ │

Handle that can be used as unique patch identifier within PatchTable.

│ │ │ │ │ │ │ │ -

Definition at line 60 of file patchTable.h.

│ │ │ │ +

Definition at line 60 of file patchTable.h.

│ │ │ │

Friends And Related Symbol Documentation

│ │ │ │ │ │ │ │

◆ PatchMap

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ @@ -141,15 +141,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ friend
│ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 65 of file patchTable.h.

│ │ │ │ +

Definition at line 65 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

◆ PatchTable

│ │ │ │ │ │ │ │
│ │ │ │ @@ -165,15 +165,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ friend │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 64 of file patchTable.h.

│ │ │ │ +

Definition at line 64 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │

Member Data Documentation

│ │ │ │ │ │ │ │

◆ arrayIndex

│ │ │ │ │ │ │ │ @@ -182,15 +182,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
Index arrayIndex
│ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 67 of file patchTable.h.

│ │ │ │ +

Definition at line 67 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ patchIndex

│ │ │ │ │ │ │ │
│ │ │ │ @@ -198,15 +198,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
Index patchIndex
│ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 68 of file patchTable.h.

│ │ │ │ +

Definition at line 68 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ vertIndex

│ │ │ │ │ │ │ │
│ │ │ │ @@ -214,20 +214,20 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
Index vertIndex
│ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 69 of file patchTable.h.

│ │ │ │ +

Definition at line 69 of file patchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │
The documentation for this class was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Factory for constructing a PatchTable from a TopologyRefiner. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <patchTableFactory.h>

│ │ │ │ +

#include <patchTableFactory.h>

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -124,29 +124,29 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Classes

struct  Options
 Public options for the PatchTable factory. More...
 
struct  PatchFaceTag
static PatchTableCreate (TopologyRefiner const &refiner, Options options=Options(), ConstIndexArray selectedFaces=ConstIndexArray())
 Instantiates a PatchTable from a client-provided TopologyRefiner.
 
│ │ │ │

Detailed Description

│ │ │ │

Factory for constructing a PatchTable from a TopologyRefiner.

│ │ │ │ │ │ │ │ -

Definition at line 40 of file patchTableFactory.h.

│ │ │ │ +

Definition at line 40 of file patchTableFactory.h.

│ │ │ │

Member Typedef Documentation

│ │ │ │ │ │ │ │

◆ PatchTagVector

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
typedef std::vector<PatchFaceTag> PatchTagVector
│ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 208 of file patchTableFactory.h.

│ │ │ │ +

Definition at line 208 of file patchTableFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │

Member Function Documentation

│ │ │ │ │ │ │ │

◆ Create()

│ │ │ │ │ │ │ │ @@ -200,15 +200,15 @@ │ │ │ │ │ │ │ │ │ │ │ │
Returns
A new instance of PatchTable
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │
The documentation for this class was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Public options for the PatchTable factory. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <patchTableFactory.h>

│ │ │ │ +

#include <patchTableFactory.h>

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Public Types

enum  EndCapType {
│ │ │ │   ENDCAP_NONE = 0 │ │ │ │ ,
│ │ │ │   ENDCAP_BILINEAR_BASIS │ │ │ │ @@ -208,15 +208,15 @@ │ │ │ │
int const * fvarChannelIndices
 List containing the indices of the channels selected for the factory.
 
│ │ │ │

Detailed Description

│ │ │ │

Public options for the PatchTable factory.

│ │ │ │ │ │ │ │ -

Definition at line 45 of file patchTableFactory.h.

│ │ │ │ +

Definition at line 45 of file patchTableFactory.h.

│ │ │ │

Member Enumeration Documentation

│ │ │ │ │ │ │ │

◆ EndCapType

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ @@ -237,15 +237,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
ENDCAP_GREGORY_BASIS 

use Gregory patches (highest quality, recommended default)

│ │ │ │
ENDCAP_LEGACY_GREGORY 

legacy option for 2.x style Gregory patches (Catmark only)

│ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 55 of file patchTableFactory.h.

│ │ │ │ +

Definition at line 55 of file patchTableFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │

Constructor & Destructor Documentation

│ │ │ │ │ │ │ │

◆ Options()

│ │ │ │ │ │ │ │ @@ -266,15 +266,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 63 of file patchTableFactory.h.

│ │ │ │ +

Definition at line 63 of file patchTableFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Member Function Documentation

│ │ │ │ │ │ │ │

◆ GetEndCapType()

│ │ │ │ │ │ │ │ @@ -296,15 +296,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Get endcap basis type.

│ │ │ │ │ │ │ │ -

Definition at line 85 of file patchTableFactory.h.

│ │ │ │ +

Definition at line 85 of file patchTableFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetRefineAdaptiveOptions()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -325,15 +325,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Determine adaptive refinement options to match assigned patch options.

│ │ │ │ │ │ │ │ -

Definition at line 100 of file patchTableFactory.h.

│ │ │ │ +

Definition at line 100 of file patchTableFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ SetEndCapType()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -355,15 +355,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Set endcap basis type.

│ │ │ │ │ │ │ │ -

Definition at line 88 of file patchTableFactory.h.

│ │ │ │ +

Definition at line 88 of file patchTableFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ SetFVarPatchPrecision() [1/2]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -403,15 +403,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 215 of file patchTableFactory.h.

│ │ │ │ +

Definition at line 215 of file patchTableFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ SetMaxIsolationLevel()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -433,15 +433,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Set maximum isolation level.

│ │ │ │ │ │ │ │ -

Definition at line 91 of file patchTableFactory.h.

│ │ │ │ +

Definition at line 91 of file patchTableFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ SetPatchPrecision() [1/2]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -481,15 +481,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 212 of file patchTableFactory.h.

│ │ │ │ +

Definition at line 212 of file patchTableFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Member Data Documentation

│ │ │ │ │ │ │ │

◆ endCapType

│ │ │ │ │ │ │ │ @@ -500,15 +500,15 @@ │ │ │ │ unsigned int endCapType │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

EndCapType.

│ │ │ │ │ │ │ │ -

Definition at line 120 of file patchTableFactory.h.

│ │ │ │ +

Definition at line 120 of file patchTableFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ fvarChannelIndices

│ │ │ │ │ │ │ │
│ │ │ │ @@ -518,15 +518,15 @@ │ │ │ │ int const* fvarChannelIndices │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

List containing the indices of the channels selected for the factory.

│ │ │ │ │ │ │ │ -

Definition at line 140 of file patchTableFactory.h.

│ │ │ │ +

Definition at line 140 of file patchTableFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ fvarPatchPrecisionDouble

│ │ │ │ │ │ │ │
│ │ │ │ @@ -536,15 +536,15 @@ │ │ │ │ unsigned int fvarPatchPrecisionDouble │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Generate double-precision stencils for face-varying patches.

│ │ │ │ │ │ │ │ -

Definition at line 133 of file patchTableFactory.h.

│ │ │ │ +

Definition at line 133 of file patchTableFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ generateAllLevels

│ │ │ │ │ │ │ │
│ │ │ │ @@ -554,15 +554,15 @@ │ │ │ │ unsigned int generateAllLevels │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Generate levels from 'firstLevel' to 'maxLevel' (Uniform mode only)

│ │ │ │ │ │ │ │ -

Definition at line 110 of file patchTableFactory.h.

│ │ │ │ +

Definition at line 110 of file patchTableFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ generateFVarLegacyLinearPatches

│ │ │ │ │ │ │ │
│ │ │ │ @@ -572,15 +572,15 @@ │ │ │ │ unsigned int generateFVarLegacyLinearPatches │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Generate all linear face-varying patches (legacy)

│ │ │ │ │ │ │ │ -

Definition at line 136 of file patchTableFactory.h.

│ │ │ │ +

Definition at line 136 of file patchTableFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ generateFVarTables

│ │ │ │ │ │ │ │
│ │ │ │ @@ -590,15 +590,15 @@ │ │ │ │ unsigned int generateFVarTables │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Generate face-varying patch tables.

│ │ │ │ │ │ │ │ -

Definition at line 129 of file patchTableFactory.h.

│ │ │ │ +

Definition at line 129 of file patchTableFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ generateLegacySharpCornerPatches

│ │ │ │ │ │ │ │
│ │ │ │ @@ -608,15 +608,15 @@ │ │ │ │ unsigned int generateLegacySharpCornerPatches │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Generate sharp regular patches at smooth corners (legacy)

│ │ │ │ │ │ │ │ -

Definition at line 137 of file patchTableFactory.h.

│ │ │ │ +

Definition at line 137 of file patchTableFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ generateVaryingLocalPoints

│ │ │ │ │ │ │ │
│ │ │ │ @@ -626,15 +626,15 @@ │ │ │ │ unsigned int generateVaryingLocalPoints │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Generate local points with varying patches.

│ │ │ │ │ │ │ │ -

Definition at line 126 of file patchTableFactory.h.

│ │ │ │ +

Definition at line 126 of file patchTableFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ generateVaryingTables

│ │ │ │ │ │ │ │
│ │ │ │ @@ -644,15 +644,15 @@ │ │ │ │ unsigned int generateVaryingTables │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Generate varying patch tables.

│ │ │ │ │ │ │ │ -

Definition at line 125 of file patchTableFactory.h.

│ │ │ │ +

Definition at line 125 of file patchTableFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ includeBaseLevelIndices

│ │ │ │ │ │ │ │
│ │ │ │ @@ -662,15 +662,15 @@ │ │ │ │ unsigned int includeBaseLevelIndices │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Include base level in patch point indices (Uniform mode only)

│ │ │ │ │ │ │ │ -

Definition at line 111 of file patchTableFactory.h.

│ │ │ │ +

Definition at line 111 of file patchTableFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ includeFVarBaseLevelIndices

│ │ │ │ │ │ │ │
│ │ │ │ @@ -680,15 +680,15 @@ │ │ │ │ unsigned int includeFVarBaseLevelIndices │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Include base level in face-varying patch point indices (Uniform mode only)

│ │ │ │ │ │ │ │ -

Definition at line 112 of file patchTableFactory.h.

│ │ │ │ +

Definition at line 112 of file patchTableFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ maxIsolationLevel

│ │ │ │ │ │ │ │
│ │ │ │ @@ -698,15 +698,15 @@ │ │ │ │ unsigned int maxIsolationLevel │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Cap adaptive feature isolation to the given level (max. 10)

│ │ │ │ │ │ │ │ -

Definition at line 117 of file patchTableFactory.h.

│ │ │ │ +

Definition at line 117 of file patchTableFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ numFVarChannels

│ │ │ │ │ │ │ │
│ │ │ │ @@ -716,15 +716,15 @@ │ │ │ │ int numFVarChannels │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Number of channel indices and interpolation modes passed.

│ │ │ │ │ │ │ │ -

Definition at line 139 of file patchTableFactory.h.

│ │ │ │ +

Definition at line 139 of file patchTableFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ patchPrecisionDouble

│ │ │ │ │ │ │ │
│ │ │ │ @@ -734,15 +734,15 @@ │ │ │ │ unsigned int patchPrecisionDouble │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Generate double-precision stencils for vertex patches.

│ │ │ │ │ │ │ │ -

Definition at line 132 of file patchTableFactory.h.

│ │ │ │ +

Definition at line 132 of file patchTableFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ shareEndCapPatchPoints

│ │ │ │ │ │ │ │
│ │ │ │ @@ -751,15 +751,15 @@ │ │ │ │ │ │ │ │ unsigned int shareEndCapPatchPoints │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │

Share endcap patch points among adjacent endcap patches. currently only work with GregoryBasis.

│ │ │ │ │ │ │ │ -

Definition at line 121 of file patchTableFactory.h.

│ │ │ │ +

Definition at line 121 of file patchTableFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ triangulateQuads

│ │ │ │ │ │ │ │
│ │ │ │ @@ -769,15 +769,15 @@ │ │ │ │ unsigned int triangulateQuads │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Triangulate 'QUADS' primitives (Uniform mode only)

│ │ │ │ │ │ │ │ -

Definition at line 113 of file patchTableFactory.h.

│ │ │ │ +

Definition at line 113 of file patchTableFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ useInfSharpPatch

│ │ │ │ │ │ │ │
│ │ │ │ @@ -787,15 +787,15 @@ │ │ │ │ unsigned int useInfSharpPatch │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Use infinitely-sharp patch.

│ │ │ │ │ │ │ │ -

Definition at line 116 of file patchTableFactory.h.

│ │ │ │ +

Definition at line 116 of file patchTableFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ useSingleCreasePatch

│ │ │ │ │ │ │ │
│ │ │ │ @@ -805,20 +805,20 @@ │ │ │ │ unsigned int useSingleCreasePatch │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Use single crease patch.

│ │ │ │ │ │ │ │ -

Definition at line 115 of file patchTableFactory.h.

│ │ │ │ +

Definition at line 115 of file patchTableFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Obsolete internal struct not intended for public use – due to be deprecated. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <patchTableFactory.h>

│ │ │ │ +

#include <patchTableFactory.h>

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -133,15 +133,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Public Member Functions

void clear ()
 
void assignBoundaryPropertiesFromEdgeMask (int boundaryEdgeMask)
 
 
unsigned int _isSingleCrease: 1
 
│ │ │ │

Detailed Description

│ │ │ │

Obsolete internal struct not intended for public use – due to be deprecated.

│ │ │ │ │ │ │ │ -

Definition at line 192 of file patchTableFactory.h.

│ │ │ │ +

Definition at line 192 of file patchTableFactory.h.

│ │ │ │

Member Function Documentation

│ │ │ │ │ │ │ │

◆ assignBoundaryPropertiesFromEdgeMask()

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ @@ -219,15 +219,15 @@ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
unsigned int _boundaryCount
│ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 199 of file patchTableFactory.h.

│ │ │ │ +

Definition at line 199 of file patchTableFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

◆ _boundaryIndex

│ │ │ │ │ │ │ │
│ │ │ │ @@ -235,15 +235,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
unsigned int _boundaryIndex
│ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 198 of file patchTableFactory.h.

│ │ │ │ +

Definition at line 198 of file patchTableFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

◆ _boundaryMask

│ │ │ │ │ │ │ │
│ │ │ │ @@ -251,15 +251,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
unsigned int _boundaryMask
│ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 197 of file patchTableFactory.h.

│ │ │ │ +

Definition at line 197 of file patchTableFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ _hasBoundaryEdge

│ │ │ │ │ │ │ │
│ │ │ │ @@ -267,15 +267,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
unsigned int _hasBoundaryEdge
│ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 200 of file patchTableFactory.h.

│ │ │ │ +

Definition at line 200 of file patchTableFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ _hasPatch

│ │ │ │ │ │ │ │
│ │ │ │ @@ -283,15 +283,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
unsigned int _hasPatch
│ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 194 of file patchTableFactory.h.

│ │ │ │ +

Definition at line 194 of file patchTableFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ _isRegular

│ │ │ │ │ │ │ │
│ │ │ │ @@ -299,15 +299,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
unsigned int _isRegular
│ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 195 of file patchTableFactory.h.

│ │ │ │ +

Definition at line 195 of file patchTableFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ _isSingleCrease

│ │ │ │ │ │ │ │
│ │ │ │ @@ -315,15 +315,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
unsigned int _isSingleCrease
│ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 201 of file patchTableFactory.h.

│ │ │ │ +

Definition at line 201 of file patchTableFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ _transitionMask

│ │ │ │ │ │ │ │
│ │ │ │ @@ -331,20 +331,20 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
unsigned int _transitionMask
│ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 196 of file patchTableFactory.h.

│ │ │ │ +

Definition at line 196 of file patchTableFactory.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │
The documentation for this struct was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

OpenCL stencil table. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <clEvaluator.h>

│ │ │ │ +

#include <clEvaluator.h>

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -143,15 +143,15 @@ │ │ │ │ │ │ │ │

│ │ │ │ Public Member Functions

 CLStencilTable (Far::StencilTable const *stencilTable, cl_context clContext)
 
 CLStencilTable (Far::LimitStencilTable const *limitStencilTable, cl_context clContext)
 
 
│ │ │ │

Detailed Description

│ │ │ │

OpenCL stencil table.

│ │ │ │

This class is an OpenCL buffer representation of Far::StencilTable.

│ │ │ │

CLCompute consumes this table to apply stencils

│ │ │ │ │ │ │ │ -

Definition at line 52 of file clEvaluator.h.

│ │ │ │ +

Definition at line 52 of file clEvaluator.h.

│ │ │ │

Constructor & Destructor Documentation

│ │ │ │ │ │ │ │

◆ CLStencilTable() [1/2]

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ @@ -255,15 +255,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ inlinestatic
│ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 61 of file clEvaluator.h.

│ │ │ │ +

Definition at line 61 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

◆ Create() [2/2]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -295,15 +295,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inlinestatic │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 55 of file clEvaluator.h.

│ │ │ │ +

Definition at line 55 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

◆ GetDuuWeightsBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -322,15 +322,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 80 of file clEvaluator.h.

│ │ │ │ +

Definition at line 80 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetDuvWeightsBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -349,15 +349,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 81 of file clEvaluator.h.

│ │ │ │ +

Definition at line 81 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetDuWeightsBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -376,15 +376,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 78 of file clEvaluator.h.

│ │ │ │ +

Definition at line 78 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetDvvWeightsBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -403,15 +403,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 82 of file clEvaluator.h.

│ │ │ │ +

Definition at line 82 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetDvWeightsBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -430,15 +430,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 79 of file clEvaluator.h.

│ │ │ │ +

Definition at line 79 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetIndicesBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -457,15 +457,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 76 of file clEvaluator.h.

│ │ │ │ +

Definition at line 76 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetNumStencils()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -484,15 +484,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 83 of file clEvaluator.h.

│ │ │ │ +

Definition at line 83 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetOffsetsBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -511,15 +511,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 75 of file clEvaluator.h.

│ │ │ │ +

Definition at line 75 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetSizesBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -538,15 +538,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 74 of file clEvaluator.h.

│ │ │ │ +

Definition at line 74 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetWeightsBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -565,20 +565,20 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 77 of file clEvaluator.h.

│ │ │ │ +

Definition at line 77 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │
The documentation for this class was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
CLEvaluator Class Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

#include <clEvaluator.h>

│ │ │ │ +

#include <clEvaluator.h>

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Public Types

typedef bool Instantiatable
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ @@ -245,29 +245,29 @@ │ │ │ │

 Wait the OpenCL kernels finish.
 
static void Synchronize (cl_command_queue queue)
 
│ │ │ │

Detailed Description

│ │ │ │
│ │ │ │ -

Definition at line 100 of file clEvaluator.h.

│ │ │ │ +

Definition at line 100 of file clEvaluator.h.

│ │ │ │

Member Typedef Documentation

│ │ │ │ │ │ │ │

◆ Instantiatable

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
typedef bool Instantiatable
│ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 102 of file clEvaluator.h.

│ │ │ │ +

Definition at line 102 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │

Constructor & Destructor Documentation

│ │ │ │ │ │ │ │

◆ CLEvaluator()

│ │ │ │ │ │ │ │ @@ -452,15 +452,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inlinestatic │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 145 of file clEvaluator.h.

│ │ │ │ +

Definition at line 145 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ Create() [2/4]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -530,15 +530,15 @@ │ │ │ │ inlinestatic │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Generic creator template.

│ │ │ │ │ │ │ │ -

Definition at line 131 of file clEvaluator.h.

│ │ │ │ +

Definition at line 131 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ Create() [3/4]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -592,15 +592,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inlinestatic │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 116 of file clEvaluator.h.

│ │ │ │ +

Definition at line 116 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ Create() [4/4]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -652,15 +652,15 @@ │ │ │ │ inlinestatic │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Generic creator template.

│ │ │ │ │ │ │ │ -

Definition at line 106 of file clEvaluator.h.

│ │ │ │ +

Definition at line 106 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatches() [1/8]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1101,15 +1101,15 @@ │ │ │ │ numStartEventsthe number of events in the array pointed to by startEvents. │ │ │ │ startEventspoints to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately. │ │ │ │ endEventpointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1125 of file clEvaluator.h.

│ │ │ │ +

Definition at line 1125 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatches() [4/8]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1276,15 +1276,15 @@ │ │ │ │ numStartEventsthe number of events in the array pointed to by startEvents. │ │ │ │ startEventspoints to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately. │ │ │ │ endEventpointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1379 of file clEvaluator.h.

│ │ │ │ +

Definition at line 1379 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatches() [5/8]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1423,15 +1423,15 @@ │ │ │ │ numStartEventsthe number of events in the array pointed to by startEvents. │ │ │ │ startEventspoints to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately. │ │ │ │ endEventpointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1003 of file clEvaluator.h.

│ │ │ │ +

Definition at line 1003 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatches() [6/8]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1556,15 +1556,15 @@ │ │ │ │ numStartEventsthe number of events in the array pointed to by startEvents. │ │ │ │ startEventspoints to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately. │ │ │ │ endEventpointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1288 of file clEvaluator.h.

│ │ │ │ +

Definition at line 1288 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatches() [7/8]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1678,15 +1678,15 @@ │ │ │ │ numStartEventsthe number of events in the array pointed to by startEvents. │ │ │ │ startEventspoints to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately. │ │ │ │ endEventpointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 902 of file clEvaluator.h.

│ │ │ │ +

Definition at line 902 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatches() [8/8]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1783,15 +1783,15 @@ │ │ │ │ numStartEventsthe number of events in the array pointed to by startEvents. │ │ │ │ startEventspoints to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately. │ │ │ │ endEventpointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1217 of file clEvaluator.h.

│ │ │ │ +

Definition at line 1217 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesFaceVarying() [1/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1979,15 +1979,15 @@ │ │ │ │ numStartEventsthe number of events in the array pointed to by startEvents. │ │ │ │ startEventspoints to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately. │ │ │ │ endEventpointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 2437 of file clEvaluator.h.

│ │ │ │ +

Definition at line 2437 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesFaceVarying() [2/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2161,15 +2161,15 @@ │ │ │ │ numStartEventsthe number of events in the array pointed to by startEvents. │ │ │ │ startEventspoints to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately. │ │ │ │ endEventpointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 2564 of file clEvaluator.h.

│ │ │ │ +

Definition at line 2564 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesFaceVarying() [3/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2315,15 +2315,15 @@ │ │ │ │ numStartEventsthe number of events in the array pointed to by startEvents. │ │ │ │ startEventspoints to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately. │ │ │ │ endEventpointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 2231 of file clEvaluator.h.

│ │ │ │ +

Definition at line 2231 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesFaceVarying() [4/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2455,15 +2455,15 @@ │ │ │ │ numStartEventsthe number of events in the array pointed to by startEvents. │ │ │ │ startEventspoints to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately. │ │ │ │ endEventpointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 2329 of file clEvaluator.h.

│ │ │ │ +

Definition at line 2329 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesFaceVarying() [5/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2581,15 +2581,15 @@ │ │ │ │ numStartEventsthe number of events in the array pointed to by startEvents. │ │ │ │ startEventspoints to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately. │ │ │ │ endEventpointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 2061 of file clEvaluator.h.

│ │ │ │ +

Definition at line 2061 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesFaceVarying() [6/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2693,15 +2693,15 @@ │ │ │ │ numStartEventsthe number of events in the array pointed to by startEvents. │ │ │ │ startEventspoints to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately. │ │ │ │ endEventpointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 2143 of file clEvaluator.h.

│ │ │ │ +

Definition at line 2143 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesVarying() [1/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2882,15 +2882,15 @@ │ │ │ │ numStartEventsthe number of events in the array pointed to by startEvents. │ │ │ │ startEventspoints to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately. │ │ │ │ endEventpointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1854 of file clEvaluator.h.

│ │ │ │ +

Definition at line 1854 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesVarying() [2/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -3057,15 +3057,15 @@ │ │ │ │ numStartEventsthe number of events in the array pointed to by startEvents. │ │ │ │ startEventspoints to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately. │ │ │ │ endEventpointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1978 of file clEvaluator.h.

│ │ │ │ +

Definition at line 1978 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesVarying() [3/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -3204,15 +3204,15 @@ │ │ │ │ numStartEventsthe number of events in the array pointed to by startEvents. │ │ │ │ startEventspoints to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately. │ │ │ │ endEventpointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1653 of file clEvaluator.h.

│ │ │ │ +

Definition at line 1653 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesVarying() [4/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -3337,15 +3337,15 @@ │ │ │ │ numStartEventsthe number of events in the array pointed to by startEvents. │ │ │ │ startEventspoints to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately. │ │ │ │ endEventpointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1749 of file clEvaluator.h.

│ │ │ │ +

Definition at line 1749 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesVarying() [5/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -3456,15 +3456,15 @@ │ │ │ │ numStartEventsthe number of events in the array pointed to by startEvents. │ │ │ │ startEventspoints to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately. │ │ │ │ endEventpointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1489 of file clEvaluator.h.

│ │ │ │ +

Definition at line 1489 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesVarying() [6/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -3561,15 +3561,15 @@ │ │ │ │ numStartEventsthe number of events in the array pointed to by startEvents. │ │ │ │ startEventspoints to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately. │ │ │ │ endEventpointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1568 of file clEvaluator.h.

│ │ │ │ +

Definition at line 1568 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalStencils() [1/9]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -4206,15 +4206,15 @@ │ │ │ │ numStartEventsthe number of events in the array pointed to by startEvents. │ │ │ │ startEventspoints to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately. │ │ │ │ endEventpointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 421 of file clEvaluator.h.

│ │ │ │ +

Definition at line 421 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalStencils() [5/9]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -4367,15 +4367,15 @@ │ │ │ │ numStartEventsthe number of events in the array pointed to by startEvents. │ │ │ │ startEventspoints to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately. │ │ │ │ endEventpointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 646 of file clEvaluator.h.

│ │ │ │ +

Definition at line 646 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalStencils() [6/9]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -4500,15 +4500,15 @@ │ │ │ │ numStartEventsthe number of events in the array pointed to by startEvents. │ │ │ │ startEventspoints to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately. │ │ │ │ endEventpointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 309 of file clEvaluator.h.

│ │ │ │ +

Definition at line 309 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalStencils() [7/9]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -4619,15 +4619,15 @@ │ │ │ │ numStartEventsthe number of events in the array pointed to by startEvents. │ │ │ │ startEventspoints to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately. │ │ │ │ endEventpointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 561 of file clEvaluator.h.

│ │ │ │ +

Definition at line 561 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalStencils() [8/9]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -4727,15 +4727,15 @@ │ │ │ │ numStartEventsthe number of events in the array pointed to by startEvents. │ │ │ │ startEventspoints to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately. │ │ │ │ endEventpointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 219 of file clEvaluator.h.

│ │ │ │ +

Definition at line 219 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalStencils() [9/9]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -4818,15 +4818,15 @@ │ │ │ │ numStartEventsthe number of events in the array pointed to by startEvents. │ │ │ │ startEventspoints to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately. │ │ │ │ endEventpointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 500 of file clEvaluator.h.

│ │ │ │ +

Definition at line 500 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ Synchronize() [1/2]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -4876,20 +4876,20 @@ │ │ │ │ inlinestatic │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Wait the OpenCL kernels finish.

│ │ │ │ │ │ │ │ -

Definition at line 2613 of file clEvaluator.h.

│ │ │ │ +

Definition at line 2613 of file clEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │
The documentation for this class was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

CL patch table. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <clPatchTable.h>

│ │ │ │ +

#include <clPatchTable.h>

│ │ │ │
│ │ │ │ Inheritance diagram for CLPatchTable:
│ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ @@ -181,15 +181,15 @@ │ │ │ │ │ │ │ │
 
│ │ │ │

Detailed Description

│ │ │ │

CL patch table.

│ │ │ │

This class is a CL buffer representation of Far::PatchTable.

│ │ │ │

CLEvaluator consumes this table to evaluate on the patches.

│ │ │ │ │ │ │ │ -

Definition at line 52 of file clPatchTable.h.

│ │ │ │ +

Definition at line 52 of file clPatchTable.h.

│ │ │ │

Constructor & Destructor Documentation

│ │ │ │ │ │ │ │

◆ ~CLPatchTable()

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ @@ -338,15 +338,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ inlinestatic
│ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 59 of file clPatchTable.h.

│ │ │ │ +

Definition at line 59 of file clPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

◆ GetFVarPatchArrayBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -368,15 +368,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Returns the CL memory of the array of Osd::PatchArray buffer.

│ │ │ │ │ │ │ │ -

Definition at line 86 of file clPatchTable.h.

│ │ │ │ +

Definition at line 86 of file clPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

◆ GetFVarPatchIndexBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -398,15 +398,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Returns the CL memory of the face-varying control vertices.

│ │ │ │ │ │ │ │ -

Definition at line 89 of file clPatchTable.h.

│ │ │ │ +

Definition at line 89 of file clPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetFVarPatchParamBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -428,15 +428,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Returns the CL memory of the array of Osd::PatchParam buffer.

│ │ │ │ │ │ │ │ -

Definition at line 92 of file clPatchTable.h.

│ │ │ │ +

Definition at line 92 of file clPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetNumFVarChannels()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -457,15 +457,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Returns the number of face-varying channel buffers.

│ │ │ │ │ │ │ │ -

Definition at line 83 of file clPatchTable.h.

│ │ │ │ +

Definition at line 83 of file clPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetPatchArrayBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -486,15 +486,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Returns the CL memory of the array of Osd::PatchArray buffer.

│ │ │ │ │ │ │ │ -

Definition at line 68 of file clPatchTable.h.

│ │ │ │ +

Definition at line 68 of file clPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetPatchIndexBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -515,15 +515,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Returns the CL memory of the patch control vertices.

│ │ │ │ │ │ │ │ -

Definition at line 71 of file clPatchTable.h.

│ │ │ │ +

Definition at line 71 of file clPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetPatchParamBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -544,15 +544,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Returns the CL memory of the array of Osd::PatchParam buffer.

│ │ │ │ │ │ │ │ -

Definition at line 74 of file clPatchTable.h.

│ │ │ │ +

Definition at line 74 of file clPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetVaryingPatchArrayBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -573,15 +573,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Returns the CL memory of the array of Osd::PatchArray buffer.

│ │ │ │ │ │ │ │ -

Definition at line 77 of file clPatchTable.h.

│ │ │ │ +

Definition at line 77 of file clPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetVaryingPatchIndexBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -602,15 +602,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Returns the CL memory of the varying control vertices.

│ │ │ │ │ │ │ │ -

Definition at line 80 of file clPatchTable.h.

│ │ │ │ +

Definition at line 80 of file clPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Member Data Documentation

│ │ │ │ │ │ │ │

◆ _fvarIndexBuffers

│ │ │ │ │ │ │ │ @@ -627,15 +627,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ protected │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 107 of file clPatchTable.h.

│ │ │ │ +

Definition at line 107 of file clPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ _fvarParamBuffers

│ │ │ │ │ │ │ │
│ │ │ │ @@ -651,15 +651,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ protected │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 108 of file clPatchTable.h.

│ │ │ │ +

Definition at line 108 of file clPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ _fvarPatchArrays

│ │ │ │ │ │ │ │
│ │ │ │ @@ -675,15 +675,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ protected │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 106 of file clPatchTable.h.

│ │ │ │ +

Definition at line 106 of file clPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ _indexBuffer

│ │ │ │ │ │ │ │
│ │ │ │ @@ -699,15 +699,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ protected │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 100 of file clPatchTable.h.

│ │ │ │ +

Definition at line 100 of file clPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ _patchArrays

│ │ │ │ │ │ │ │
│ │ │ │ @@ -723,15 +723,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ protected │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 99 of file clPatchTable.h.

│ │ │ │ +

Definition at line 99 of file clPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ _patchParamBuffer

│ │ │ │ │ │ │ │
│ │ │ │ @@ -747,15 +747,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ protected │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 101 of file clPatchTable.h.

│ │ │ │ +

Definition at line 101 of file clPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ _varyingIndexBuffer

│ │ │ │ │ │ │ │
│ │ │ │ @@ -771,15 +771,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ protected │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 104 of file clPatchTable.h.

│ │ │ │ +

Definition at line 104 of file clPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ _varyingPatchArrays

│ │ │ │ │ │ │ │
│ │ │ │ @@ -795,20 +795,20 @@ │ │ │ │ │ │ │ │ │ │ │ │ protected │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 103 of file clPatchTable.h.

│ │ │ │ +

Definition at line 103 of file clPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │
The documentation for this class was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Concrete vertex buffer class for OpenCL subdivision. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <clVertexBuffer.h>

│ │ │ │ +

#include <clVertexBuffer.h>

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -142,15 +142,15 @@ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Public Member Functions

 ~CLVertexBuffer ()
 Destructor.
 
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)
bool allocate (cl_context clContext)
 
│ │ │ │

Detailed Description

│ │ │ │

Concrete vertex buffer class for OpenCL subdivision.

│ │ │ │

CLVertexBuffer implements CLVertexBufferInterface. An instance of this buffer class can be passed to CLEvaluator

│ │ │ │ │ │ │ │ -

Definition at line 42 of file clVertexBuffer.h.

│ │ │ │ +

Definition at line 42 of file clVertexBuffer.h.

│ │ │ │

Constructor & Destructor Documentation

│ │ │ │ │ │ │ │

◆ ~CLVertexBuffer()

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ @@ -341,15 +341,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ inlinestatic
│ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 49 of file clVertexBuffer.h.

│ │ │ │ +

Definition at line 49 of file clVertexBuffer.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

◆ GetNumElements()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -508,20 +508,20 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 63 of file clVertexBuffer.h.

│ │ │ │ +

Definition at line 63 of file clVertexBuffer.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │
The documentation for this class was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Concrete vertex buffer class for Cpu subdivision and DirectX drawing. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <cpuD3D11VertexBuffer.h>

│ │ │ │ +

#include <cpuD3D11VertexBuffer.h>

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -143,15 +143,15 @@ │ │ │ │ │ │ │ │

│ │ │ │ Public Member Functions

virtual ~CpuD3D11VertexBuffer ()
 Destructor.
 
void UpdateData (const float *src, int startVertex, int numVertices, void *deviceContext=NULL)
 
│ │ │ │

Detailed Description

│ │ │ │

Concrete vertex buffer class for Cpu subdivision and DirectX drawing.

│ │ │ │

CpuD3D11VertexBuffer implements CpuVertexBufferInterface and D3D11VertexBufferInterface.

│ │ │ │

An instance of this buffer class can be passed to CpuEvaluator.

│ │ │ │ │ │ │ │ -

Definition at line 48 of file cpuD3D11VertexBuffer.h.

│ │ │ │ +

Definition at line 48 of file cpuD3D11VertexBuffer.h.

│ │ │ │

Constructor & Destructor Documentation

│ │ │ │ │ │ │ │

◆ ~CpuD3D11VertexBuffer()

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ @@ -302,15 +302,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

Returns the D3D11 buffer object (for Osd::Mesh interface)

│ │ │ │ │ │ │ │ -

Definition at line 75 of file cpuD3D11VertexBuffer.h.

│ │ │ │ +

Definition at line 75 of file cpuD3D11VertexBuffer.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

◆ Create()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -430,15 +430,15 @@ │ │ │ │ │ │ │ │
│ │ │ │

This method is meant to be used in client code in order to provide coarse vertices data to Osd.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │
The documentation for this class was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

D3D11 stencil table. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <d3d11ComputeEvaluator.h>

│ │ │ │ +

#include <d3d11ComputeEvaluator.h>

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -130,15 +130,15 @@ │ │ │ │ │ │ │ │

│ │ │ │ Public Member Functions

 D3D11StencilTable (Far::StencilTable const *stencilTable, ID3D11DeviceContext *deviceContext)
 
 ~D3D11StencilTable ()
 
 
│ │ │ │

Detailed Description

│ │ │ │

D3D11 stencil table.

│ │ │ │

This class is a D3D11 Shader Resource View representation of Far::StencilTable.

│ │ │ │

D3D11ComputeEvaluator consumes this table to apply stencils

│ │ │ │ │ │ │ │ -

Definition at line 56 of file d3d11ComputeEvaluator.h.

│ │ │ │ +

Definition at line 56 of file d3d11ComputeEvaluator.h.

│ │ │ │

Constructor & Destructor Documentation

│ │ │ │ │ │ │ │

◆ D3D11StencilTable()

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ @@ -214,15 +214,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ inlinestatic
│ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 59 of file d3d11ComputeEvaluator.h.

│ │ │ │ +

Definition at line 59 of file d3d11ComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

◆ Create() [2/2]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -252,15 +252,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inlinestatic │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 64 of file d3d11ComputeEvaluator.h.

│ │ │ │ +

Definition at line 64 of file d3d11ComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

◆ GetIndicesSRV()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -279,15 +279,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 77 of file d3d11ComputeEvaluator.h.

│ │ │ │ +

Definition at line 77 of file d3d11ComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetNumStencils()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -306,15 +306,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 79 of file d3d11ComputeEvaluator.h.

│ │ │ │ +

Definition at line 79 of file d3d11ComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetOffsetsSRV()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -333,15 +333,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 76 of file d3d11ComputeEvaluator.h.

│ │ │ │ +

Definition at line 76 of file d3d11ComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetSizesSRV()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -360,15 +360,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 75 of file d3d11ComputeEvaluator.h.

│ │ │ │ +

Definition at line 75 of file d3d11ComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetWeightsSRV()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -387,20 +387,20 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 78 of file d3d11ComputeEvaluator.h.

│ │ │ │ +

Definition at line 78 of file d3d11ComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │
The documentation for this class was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
D3D11ComputeEvaluator Class Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

#include <d3d11ComputeEvaluator.h>

│ │ │ │ +

#include <d3d11ComputeEvaluator.h>

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Public Types

typedef bool Instantiatable
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ @@ -136,29 +136,29 @@ │ │ │ │

 
static void Synchronize (ID3D11DeviceContext *deviceContext)
 Wait the dispatched kernel finishes.
 
│ │ │ │

Detailed Description

│ │ │ │
│ │ │ │ -

Definition at line 96 of file d3d11ComputeEvaluator.h.

│ │ │ │ +

Definition at line 96 of file d3d11ComputeEvaluator.h.

│ │ │ │

Member Typedef Documentation

│ │ │ │ │ │ │ │

◆ Instantiatable

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
typedef bool Instantiatable
│ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 98 of file d3d11ComputeEvaluator.h.

│ │ │ │ +

Definition at line 98 of file d3d11ComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │

Constructor & Destructor Documentation

│ │ │ │ │ │ │ │

◆ D3D11ComputeEvaluator()

│ │ │ │ │ │ │ │ @@ -519,15 +519,15 @@ │ │ │ │ stencilTablestencil table to be applied. The table must have SSBO interfaces. │ │ │ │ instancecached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem. │ │ │ │ deviceContextID3D11DeviceContext. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 148 of file d3d11ComputeEvaluator.h.

│ │ │ │ +

Definition at line 148 of file d3d11ComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalStencils() [3/3]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -584,15 +584,15 @@ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │

Dispatch the DX compute kernel on GPU asynchronously. returns false if the kernel hasn't been compiled yet.

│ │ │ │ │ │ │ │ -

Definition at line 181 of file d3d11ComputeEvaluator.h.

│ │ │ │ +

Definition at line 181 of file d3d11ComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ Synchronize()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -617,15 +617,15 @@ │ │ │ │
│ │ │ │ │ │ │ │

Wait the dispatched kernel finishes.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │
The documentation for this class was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
D3D11LegacyGregoryPatchTable Class Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

#include <d3d11LegacyGregoryPatchTable.h>

│ │ │ │ +

#include <d3d11LegacyGregoryPatchTable.h>

│ │ │ │
│ │ │ │ Inheritance diagram for D3D11LegacyGregoryPatchTable:
│ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ @@ -134,15 +134,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Protected Member Functions

 D3D11LegacyGregoryPatchTable ()
 
│ │ │ │

Detailed Description

│ │ │ │
│ │ │ │ -

Definition at line 43 of file d3d11LegacyGregoryPatchTable.h.

│ │ │ │ +

Definition at line 43 of file d3d11LegacyGregoryPatchTable.h.

│ │ │ │

Constructor & Destructor Documentation

│ │ │ │ │ │ │ │

◆ ~D3D11LegacyGregoryPatchTable()

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ @@ -215,15 +215,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ inlinestatic
│ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 49 of file d3d11LegacyGregoryPatchTable.h.

│ │ │ │ +

Definition at line 49 of file d3d11LegacyGregoryPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

◆ Create() [2/2]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -279,15 +279,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 74 of file d3d11LegacyGregoryPatchTable.h.

│ │ │ │ +

Definition at line 74 of file d3d11LegacyGregoryPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

◆ GetQuadOffsetsSRV()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -306,15 +306,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 70 of file d3d11LegacyGregoryPatchTable.h.

│ │ │ │ +

Definition at line 70 of file d3d11LegacyGregoryPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetVertexSRV()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -333,15 +333,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 62 of file d3d11LegacyGregoryPatchTable.h.

│ │ │ │ +

Definition at line 62 of file d3d11LegacyGregoryPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetVertexValenceSRV()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -360,15 +360,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 66 of file d3d11LegacyGregoryPatchTable.h.

│ │ │ │ +

Definition at line 66 of file d3d11LegacyGregoryPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ UpdateVertexBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -405,15 +405,15 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │
The documentation for this class was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

GL stencil table (Shader Storage buffer) │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <glComputeEvaluator.h>

│ │ │ │ +

#include <glComputeEvaluator.h>

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -141,15 +141,15 @@ │ │ │ │ │ │ │ │

│ │ │ │ Public Member Functions

 GLStencilTableSSBO (Far::StencilTable const *stencilTable)
 
 GLStencilTableSSBO (Far::LimitStencilTable const *limitStencilTable)
 
 
│ │ │ │

Detailed Description

│ │ │ │

GL stencil table (Shader Storage buffer)

│ │ │ │

This class is a GLSL SSBO representation of Far::StencilTable.

│ │ │ │

GLSLComputeKernel consumes this table to apply stencils

│ │ │ │ │ │ │ │ -

Definition at line 51 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 51 of file glComputeEvaluator.h.

│ │ │ │

Constructor & Destructor Documentation

│ │ │ │ │ │ │ │

◆ GLStencilTableSSBO() [1/2]

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ @@ -247,15 +247,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ inlinestatic
│ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 58 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 58 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

◆ Create() [2/2]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -285,15 +285,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inlinestatic │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 53 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 53 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

◆ GetDuuWeightsBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -312,15 +312,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 76 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 76 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetDuvWeightsBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -339,15 +339,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 77 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 77 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetDuWeightsBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -366,15 +366,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 74 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 74 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetDvvWeightsBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -393,15 +393,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 78 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 78 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetDvWeightsBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -420,15 +420,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 75 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 75 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetIndicesBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -447,15 +447,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 72 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 72 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetNumStencils()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -474,15 +474,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 79 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 79 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetOffsetsBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -501,15 +501,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 71 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 71 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetSizesBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -528,15 +528,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 70 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 70 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetWeightsBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -555,20 +555,20 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 73 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 73 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │
The documentation for this class was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
GLComputeEvaluator Class Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

#include <glComputeEvaluator.h>

│ │ │ │ +

#include <glComputeEvaluator.h>

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Public Types

typedef bool Instantiatable
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ @@ -233,29 +233,29 @@ │ │ │ │

 
static void Synchronize (void *deviceContext)
 Wait the dispatched kernel finishes.
 
│ │ │ │

Detailed Description

│ │ │ │
│ │ │ │ -

Definition at line 96 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 96 of file glComputeEvaluator.h.

│ │ │ │

Member Typedef Documentation

│ │ │ │ │ │ │ │

◆ Instantiatable

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
typedef bool Instantiatable
│ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 98 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 98 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │

Constructor & Destructor Documentation

│ │ │ │ │ │ │ │

◆ GLComputeEvaluator()

│ │ │ │ │ │ │ │ @@ -423,15 +423,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inlinestatic │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 111 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 111 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ Create() [2/2]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -479,15 +479,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inlinestatic │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 99 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 99 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatches() [1/8]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -857,15 +857,15 @@ │ │ │ │ numPatchCoordsnumber of patchCoords. │ │ │ │ patchCoordsarray of locations to be evaluated. │ │ │ │ patchTableGLPatchTable or equivalent │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1071 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 1071 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatches() [4/8]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1025,15 +1025,15 @@ │ │ │ │ patchTableGLPatchTable or equivalent │ │ │ │ instancecached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem. │ │ │ │ deviceContextnot used in the GLXFB evaluator │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 870 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 870 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatches() [5/8]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1137,15 +1137,15 @@ │ │ │ │ numPatchCoordsnumber of patchCoords. │ │ │ │ patchCoordsarray of locations to be evaluated. │ │ │ │ patchTableGLPatchTable or equivalent │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 997 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 997 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatches() [6/8]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1263,15 +1263,15 @@ │ │ │ │ patchTableGLPatchTable or equivalent │ │ │ │ instancecached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem. │ │ │ │ deviceContextnot used in the GLXFB evaluator │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 769 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 769 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatches() [7/8]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1347,15 +1347,15 @@ │ │ │ │ numPatchCoordsnumber of patchCoords. │ │ │ │ patchCoordsarray of locations to be evaluated. must have BindVBO() method returning an array of PatchCoord struct in VBO. │ │ │ │ patchTableGLPatchTable or equivalent │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 943 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 943 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatches() [8/8]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1448,15 +1448,15 @@ │ │ │ │ patchTableGLPatchTable or equivalent │ │ │ │ instancecached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem. │ │ │ │ deviceContextnot used in the GLXFB evaluator │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 691 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 691 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesFaceVarying() [1/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1623,15 +1623,15 @@ │ │ │ │ fvarChannelface-varying channel │ │ │ │ instancecached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem. │ │ │ │ deviceContextnot used in the GLXFB evaluator │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1903 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 1903 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesFaceVarying() [2/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1784,15 +1784,15 @@ │ │ │ │ patchCoordsarray of locations to be evaluated. must have BindVBO() method returning an array of PatchCoord struct in VBO. │ │ │ │ patchTableGLPatchTable or equivalent │ │ │ │ fvarChannelface-varying channel │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 2011 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 2011 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesFaceVarying() [3/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1917,15 +1917,15 @@ │ │ │ │ fvarChannelface-varying channel │ │ │ │ instancecached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem. │ │ │ │ deviceContextnot used in the GLXFB evaluator │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1736 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 1736 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesFaceVarying() [4/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2036,15 +2036,15 @@ │ │ │ │ patchCoordsarray of locations to be evaluated. must have BindVBO() method returning an array of PatchCoord struct in VBO. │ │ │ │ patchTableGLPatchTable or equivalent │ │ │ │ fvarChannelface-varying channel │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1816 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 1816 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesFaceVarying() [5/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2141,15 +2141,15 @@ │ │ │ │ fvarChannelface-varying channel │ │ │ │ instancecached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem. │ │ │ │ deviceContextnot used in the GLXFB evaluator │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1606 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 1606 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesFaceVarying() [6/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2232,15 +2232,15 @@ │ │ │ │ patchCoordsarray of locations to be evaluated. must have BindVBO() method returning an array of PatchCoord struct in VBO. │ │ │ │ patchTableGLPatchTable or equivalent │ │ │ │ fvarChannelface-varying channel │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1669 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 1669 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesVarying() [1/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2386,15 +2386,15 @@ │ │ │ │ numPatchCoordsnumber of patchCoords. │ │ │ │ patchCoordsarray of locations to be evaluated. must have BindVBO() method returning an array of PatchCoord struct in VBO. │ │ │ │ patchTableGLPatchTable or equivalent │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1544 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 1544 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesVarying() [2/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2554,15 +2554,15 @@ │ │ │ │ patchTableGLPatchTable or equivalent │ │ │ │ instancecached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem. │ │ │ │ deviceContextnot used in the GLXFB evaluator │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1439 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 1439 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesVarying() [3/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2666,15 +2666,15 @@ │ │ │ │ numPatchCoordsnumber of patchCoords. │ │ │ │ patchCoordsarray of locations to be evaluated. must have BindVBO() method returning an array of PatchCoord struct in VBO. │ │ │ │ patchTableGLPatchTable or equivalent │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1355 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 1355 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesVarying() [4/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2792,15 +2792,15 @@ │ │ │ │ patchTableGLPatchTable or equivalent │ │ │ │ instancecached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem. │ │ │ │ deviceContextnot used in the GLXFB evaluator │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1278 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 1278 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesVarying() [5/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2876,15 +2876,15 @@ │ │ │ │ numPatchCoordsnumber of patchCoords. │ │ │ │ patchCoordsarray of locations to be evaluated. must have BindVBO() method returning an array of PatchCoord struct in VBO. │ │ │ │ patchTableGLPatchTable or equivalent │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1214 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 1214 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesVarying() [6/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2974,15 +2974,15 @@ │ │ │ │ patchTableGLPatchTable or equivalent │ │ │ │ instancecached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem. │ │ │ │ deviceContextnot used in the GLXFB evaluator │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1154 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 1154 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalStencils() [1/8]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -3447,15 +3447,15 @@ │ │ │ │ dvvBufferOutput buffer 2nd derivative wrt v must have BindVBO() method returning a GL buffer object of destination data │ │ │ │ dvvDescvertex buffer descriptor for the dvvBuffer │ │ │ │ stencilTablestencil table to be applied. The table must have SSBO interfaces. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 502 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 502 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalStencils() [4/8]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -3601,15 +3601,15 @@ │ │ │ │ stencilTablestencil table to be applied. The table must have SSBO interfaces. │ │ │ │ instancecached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem. │ │ │ │ deviceContextnot used in the GLSL kernel │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 326 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 326 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalStencils() [5/8]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -3699,15 +3699,15 @@ │ │ │ │ dvBufferOutput buffer derivative wrt v must have BindVBO() method returning a GL buffer object of destination data │ │ │ │ dvDescvertex buffer descriptor for the dvBuffer │ │ │ │ stencilTablestencil table to be applied. The table must have SSBO interfaces. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 434 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 434 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalStencils() [6/8]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -3811,15 +3811,15 @@ │ │ │ │ stencilTablestencil table to be applied. The table must have SSBO interfaces. │ │ │ │ instancecached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem. │ │ │ │ deviceContextnot used in the GLSL kernel │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 236 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 236 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalStencils() [7/8]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -3881,15 +3881,15 @@ │ │ │ │ dstBufferOutput primvar buffer must have BindVBO() method returning a GL buffer object of destination data │ │ │ │ dstDescvertex buffer descriptor for the output buffer │ │ │ │ stencilTablestencil table to be applied. The table must have SSBO interfaces. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 386 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 386 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalStencils() [8/8]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -3968,15 +3968,15 @@ │ │ │ │ stencilTablestencil table to be applied. The table must have SSBO interfaces. │ │ │ │ instancecached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem. │ │ │ │ deviceContextnot used in the GLSL kernel │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 168 of file glComputeEvaluator.h.

│ │ │ │ +

Definition at line 168 of file glComputeEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ Synchronize()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -4001,15 +4001,15 @@ │ │ │ │
│ │ │ │ │ │ │ │

Wait the dispatched kernel finishes.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │
The documentation for this class was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
GLLegacyGregoryPatchTable Class Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

#include <glLegacyGregoryPatchTable.h>

│ │ │ │ +

#include <glLegacyGregoryPatchTable.h>

│ │ │ │
│ │ │ │ Inheritance diagram for GLLegacyGregoryPatchTable:
│ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ @@ -131,15 +131,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Protected Member Functions

 GLLegacyGregoryPatchTable ()
 
│ │ │ │

Detailed Description

│ │ │ │
│ │ │ │ -

Definition at line 39 of file glLegacyGregoryPatchTable.h.

│ │ │ │ +

Definition at line 39 of file glLegacyGregoryPatchTable.h.

│ │ │ │

Constructor & Destructor Documentation

│ │ │ │ │ │ │ │

◆ ~GLLegacyGregoryPatchTable()

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ @@ -226,15 +226,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ inline
│ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 60 of file glLegacyGregoryPatchTable.h.

│ │ │ │ +

Definition at line 60 of file glLegacyGregoryPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

◆ GetQuadOffsetsTextureBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -253,15 +253,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 56 of file glLegacyGregoryPatchTable.h.

│ │ │ │ +

Definition at line 56 of file glLegacyGregoryPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

◆ GetVertexTextureBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -280,15 +280,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 48 of file glLegacyGregoryPatchTable.h.

│ │ │ │ +

Definition at line 48 of file glLegacyGregoryPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetVertexValenceTextureBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -307,15 +307,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 52 of file glLegacyGregoryPatchTable.h.

│ │ │ │ +

Definition at line 52 of file glLegacyGregoryPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ UpdateVertexBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -330,15 +330,15 @@ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │
The documentation for this class was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
GLPatchTable Class Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

#include <glPatchTable.h>

│ │ │ │ +

#include <glPatchTable.h>

│ │ │ │
│ │ │ │ Inheritance diagram for GLPatchTable:
│ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ @@ -201,29 +201,29 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
std::vector< GLuint > _fvarParamBuffers
 
std::vector< GLuint > _fvarParamTextures
 
│ │ │ │

Detailed Description

│ │ │ │
│ │ │ │ -

Definition at line 45 of file glPatchTable.h.

│ │ │ │ +

Definition at line 45 of file glPatchTable.h.

│ │ │ │

Member Typedef Documentation

│ │ │ │ │ │ │ │

◆ VertexBufferBinding

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
typedef GLuint VertexBufferBinding
│ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 47 of file glPatchTable.h.

│ │ │ │ +

Definition at line 47 of file glPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │

Constructor & Destructor Documentation

│ │ │ │ │ │ │ │

◆ ~GLPatchTable()

│ │ │ │ │ │ │ │ @@ -351,15 +351,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Returns the patch arrays for face-varying index buffer data.

│ │ │ │ │ │ │ │ -

Definition at line 98 of file glPatchTable.h.

│ │ │ │ +

Definition at line 98 of file glPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetFVarPatchIndexBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -381,15 +381,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Returns the GL index buffer containing face-varying control vertices.

│ │ │ │ │ │ │ │ -

Definition at line 103 of file glPatchTable.h.

│ │ │ │ +

Definition at line 103 of file glPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetFVarPatchIndexTextureBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -411,15 +411,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Returns the GL texture buffer containing face-varying control vertices.

│ │ │ │ │ │ │ │ -

Definition at line 108 of file glPatchTable.h.

│ │ │ │ +

Definition at line 108 of file glPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetFVarPatchParamBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -441,15 +441,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Returns the GL index buffer containing face-varying patch params.

│ │ │ │ │ │ │ │ -

Definition at line 113 of file glPatchTable.h.

│ │ │ │ +

Definition at line 113 of file glPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetFVarPatchParamTextureBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -471,15 +471,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Returns the GL texture buffer containing face-varying patch params.

│ │ │ │ │ │ │ │ -

Definition at line 118 of file glPatchTable.h.

│ │ │ │ +

Definition at line 118 of file glPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetNumFVarChannels()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -500,15 +500,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Returns the number of face-varying channel buffers.

│ │ │ │ │ │ │ │ -

Definition at line 95 of file glPatchTable.h.

│ │ │ │ +

Definition at line 95 of file glPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetPatchArrays()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -529,15 +529,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Returns the patch arrays for vertex index buffer data.

│ │ │ │ │ │ │ │ -

Definition at line 55 of file glPatchTable.h.

│ │ │ │ +

Definition at line 55 of file glPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetPatchIndexBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -558,15 +558,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Returns the GL index buffer containing the patch control vertices.

│ │ │ │ │ │ │ │ -

Definition at line 60 of file glPatchTable.h.

│ │ │ │ +

Definition at line 60 of file glPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetPatchIndexTextureBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -587,15 +587,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Returns the GL texture buffer containing the patch control vertices.

│ │ │ │ │ │ │ │ -

Definition at line 70 of file glPatchTable.h.

│ │ │ │ +

Definition at line 70 of file glPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetPatchParamBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -616,15 +616,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Returns the GL index buffer containing the patch parameter.

│ │ │ │ │ │ │ │ -

Definition at line 65 of file glPatchTable.h.

│ │ │ │ +

Definition at line 65 of file glPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetPatchParamTextureBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -645,15 +645,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Returns the GL texture buffer containing the patch parameter.

│ │ │ │ │ │ │ │ -

Definition at line 75 of file glPatchTable.h.

│ │ │ │ +

Definition at line 75 of file glPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetVaryingPatchArrays()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -674,15 +674,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Returns the patch arrays for varying index buffer data.

│ │ │ │ │ │ │ │ -

Definition at line 80 of file glPatchTable.h.

│ │ │ │ +

Definition at line 80 of file glPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetVaryingPatchIndexBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -703,15 +703,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Returns the GL index buffer containing the varying control vertices.

│ │ │ │ │ │ │ │ -

Definition at line 85 of file glPatchTable.h.

│ │ │ │ +

Definition at line 85 of file glPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetVaryingPatchIndexTextureBuffer()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -732,15 +732,15 @@ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Returns the GL texture buffer containing the varying control vertices.

│ │ │ │ │ │ │ │ -

Definition at line 90 of file glPatchTable.h.

│ │ │ │ +

Definition at line 90 of file glPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Member Data Documentation

│ │ │ │ │ │ │ │

◆ _fvarIndexBuffers

│ │ │ │ │ │ │ │ @@ -757,15 +757,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ protected │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 141 of file glPatchTable.h.

│ │ │ │ +

Definition at line 141 of file glPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ _fvarIndexTextures

│ │ │ │ │ │ │ │
│ │ │ │ @@ -781,15 +781,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ protected │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 142 of file glPatchTable.h.

│ │ │ │ +

Definition at line 142 of file glPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ _fvarParamBuffers

│ │ │ │ │ │ │ │
│ │ │ │ @@ -805,15 +805,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ protected │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 144 of file glPatchTable.h.

│ │ │ │ +

Definition at line 144 of file glPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ _fvarParamTextures

│ │ │ │ │ │ │ │
│ │ │ │ @@ -829,15 +829,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ protected │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 145 of file glPatchTable.h.

│ │ │ │ +

Definition at line 145 of file glPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ _fvarPatchArrays

│ │ │ │ │ │ │ │
│ │ │ │ @@ -853,15 +853,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ protected │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 140 of file glPatchTable.h.

│ │ │ │ +

Definition at line 140 of file glPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ _patchArrays

│ │ │ │ │ │ │ │
│ │ │ │ @@ -877,15 +877,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ protected │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 128 of file glPatchTable.h.

│ │ │ │ +

Definition at line 128 of file glPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ _patchIndexBuffer

│ │ │ │ │ │ │ │
│ │ │ │ @@ -901,15 +901,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ protected │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 130 of file glPatchTable.h.

│ │ │ │ +

Definition at line 130 of file glPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ _patchIndexTexture

│ │ │ │ │ │ │ │
│ │ │ │ @@ -925,15 +925,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ protected │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 133 of file glPatchTable.h.

│ │ │ │ +

Definition at line 133 of file glPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ _patchParamBuffer

│ │ │ │ │ │ │ │
│ │ │ │ @@ -949,15 +949,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ protected │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 131 of file glPatchTable.h.

│ │ │ │ +

Definition at line 131 of file glPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ _patchParamTexture

│ │ │ │ │ │ │ │
│ │ │ │ @@ -973,15 +973,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ protected │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 134 of file glPatchTable.h.

│ │ │ │ +

Definition at line 134 of file glPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ _varyingIndexBuffer

│ │ │ │ │ │ │ │
│ │ │ │ @@ -997,15 +997,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ protected │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 137 of file glPatchTable.h.

│ │ │ │ +

Definition at line 137 of file glPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ _varyingIndexTexture

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1021,15 +1021,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ protected │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 138 of file glPatchTable.h.

│ │ │ │ +

Definition at line 138 of file glPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ _varyingPatchArrays

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1045,20 +1045,20 @@ │ │ │ │ │ │ │ │ │ │ │ │ protected │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 136 of file glPatchTable.h.

│ │ │ │ +

Definition at line 136 of file glPatchTable.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │
The documentation for this class was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

GL TextureBuffer stencil table. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <glXFBEvaluator.h>

│ │ │ │ +

#include <glXFBEvaluator.h>

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -141,15 +141,15 @@ │ │ │ │ │ │ │ │

│ │ │ │ Public Member Functions

 GLStencilTableTBO (Far::StencilTable const *stencilTable)
 
 GLStencilTableTBO (Far::LimitStencilTable const *limitStencilTable)
 
 
│ │ │ │

Detailed Description

│ │ │ │

GL TextureBuffer stencil table.

│ │ │ │

This class is a GL Texture Buffer representation of Far::StencilTable.

│ │ │ │

GLSLTransformFeedback consumes this table to apply stencils

│ │ │ │ │ │ │ │ -

Definition at line 52 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 52 of file glXFBEvaluator.h.

│ │ │ │

Constructor & Destructor Documentation

│ │ │ │ │ │ │ │

◆ GLStencilTableTBO() [1/2]

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ @@ -247,15 +247,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ inlinestatic
│ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 60 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 60 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

◆ Create() [2/2]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -285,15 +285,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inlinestatic │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 54 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 54 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

◆ GetDuuWeightsTexture()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -312,15 +312,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 78 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 78 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetDuvWeightsTexture()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -339,15 +339,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 79 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 79 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetDuWeightsTexture()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -366,15 +366,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 76 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 76 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetDvvWeightsTexture()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -393,15 +393,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 80 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 80 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetDvWeightsTexture()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -420,15 +420,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 77 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 77 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetIndicesTexture()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -447,15 +447,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 74 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 74 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetNumStencils()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -474,15 +474,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 81 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 81 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetOffsetsTexture()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -501,15 +501,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 73 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 73 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetSizesTexture()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -528,15 +528,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 72 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 72 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetWeightsTexture()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -555,20 +555,20 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 75 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 75 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │
The documentation for this class was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
GLXFBEvaluator Class Reference
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

#include <glXFBEvaluator.h>

│ │ │ │ +

#include <glXFBEvaluator.h>

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Public Types

typedef bool Instantiatable
 
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ @@ -247,29 +247,29 @@ │ │ │ │

 
static void Synchronize (void *kernel)
 Wait the dispatched kernel finishes.
 
│ │ │ │

Detailed Description

│ │ │ │
│ │ │ │ -

Definition at line 98 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 98 of file glXFBEvaluator.h.

│ │ │ │

Member Typedef Documentation

│ │ │ │ │ │ │ │

◆ Instantiatable

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
typedef bool Instantiatable
│ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 100 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 100 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │

Constructor & Destructor Documentation

│ │ │ │ │ │ │ │

◆ GLXFBEvaluator()

│ │ │ │ │ │ │ │ @@ -421,15 +421,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inlinestatic │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 126 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 126 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ Create() [2/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -495,15 +495,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inlinestatic │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 170 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 170 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ Create() [3/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -573,15 +573,15 @@ │ │ │ │ inlinestatic │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Generic creator template.

│ │ │ │ │ │ │ │ -

Definition at line 140 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 140 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ Create() [4/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -649,15 +649,15 @@ │ │ │ │ inlinestatic │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Specialization to allow creation without a device context.

│ │ │ │ │ │ │ │ -

Definition at line 157 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 157 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ Create() [5/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -709,15 +709,15 @@ │ │ │ │ inlinestatic │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Generic creator template.

│ │ │ │ │ │ │ │ -

Definition at line 104 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 104 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ Create() [6/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -767,15 +767,15 @@ │ │ │ │ inlinestatic │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Specialization to allow creation without a device context.

│ │ │ │ │ │ │ │ -

Definition at line 117 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 117 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatches() [1/8]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1145,15 +1145,15 @@ │ │ │ │ numPatchCoordsnumber of patchCoords. │ │ │ │ patchCoordsarray of locations to be evaluated. │ │ │ │ patchTableGLPatchTable or equivalent │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1144 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 1144 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatches() [4/8]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1313,15 +1313,15 @@ │ │ │ │ patchTableGLPatchTable or equivalent │ │ │ │ instancecached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem. │ │ │ │ deviceContextnot used in the GLXFB evaluator │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 943 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 943 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatches() [5/8]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1425,15 +1425,15 @@ │ │ │ │ numPatchCoordsnumber of patchCoords. │ │ │ │ patchCoordsarray of locations to be evaluated. │ │ │ │ patchTableGLPatchTable or equivalent │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1070 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 1070 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatches() [6/8]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1551,15 +1551,15 @@ │ │ │ │ patchTableGLPatchTable or equivalent │ │ │ │ instancecached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem. │ │ │ │ deviceContextnot used in the GLXFB evaluator │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 843 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 843 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatches() [7/8]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1635,15 +1635,15 @@ │ │ │ │ numPatchCoordsnumber of patchCoords. │ │ │ │ patchCoordsarray of locations to be evaluated. must have BindVBO() method returning an array of PatchCoord struct in VBO. │ │ │ │ patchTableGLPatchTable or equivalent │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1016 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 1016 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatches() [8/8]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1736,15 +1736,15 @@ │ │ │ │ patchTableGLPatchTable or equivalent │ │ │ │ instancecached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem. │ │ │ │ deviceContextnot used in the GLXFB evaluator │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 765 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 765 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesFaceVarying() [1/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1911,15 +1911,15 @@ │ │ │ │ fvarChannelface-varying channel │ │ │ │ instancecached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem. │ │ │ │ deviceContextnot used in the GLXFB evaluator │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1976 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 1976 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesFaceVarying() [2/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2072,15 +2072,15 @@ │ │ │ │ patchCoordsarray of locations to be evaluated. must have BindVBO() method returning an array of PatchCoord struct in VBO. │ │ │ │ patchTableGLPatchTable or equivalent │ │ │ │ fvarChannelface-varying channel │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 2084 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 2084 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesFaceVarying() [3/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2205,15 +2205,15 @@ │ │ │ │ fvarChannelface-varying channel │ │ │ │ instancecached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem. │ │ │ │ deviceContextnot used in the GLXFB evaluator │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1809 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 1809 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesFaceVarying() [4/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2324,15 +2324,15 @@ │ │ │ │ patchCoordsarray of locations to be evaluated. must have BindVBO() method returning an array of PatchCoord struct in VBO. │ │ │ │ patchTableGLPatchTable or equivalent │ │ │ │ fvarChannelface-varying channel │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1889 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 1889 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesFaceVarying() [5/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2429,15 +2429,15 @@ │ │ │ │ fvarChannelface-varying channel │ │ │ │ instancecached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem. │ │ │ │ deviceContextnot used in the GLXFB evaluator │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1679 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 1679 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesFaceVarying() [6/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2520,15 +2520,15 @@ │ │ │ │ patchCoordsarray of locations to be evaluated. must have BindVBO() method returning an array of PatchCoord struct in VBO. │ │ │ │ patchTableGLPatchTable or equivalent │ │ │ │ fvarChannelface-varying channel │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1742 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 1742 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesVarying() [1/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2674,15 +2674,15 @@ │ │ │ │ numPatchCoordsnumber of patchCoords. │ │ │ │ patchCoordsarray of locations to be evaluated. must have BindVBO() method returning an array of PatchCoord struct in VBO. │ │ │ │ patchTableGLPatchTable or equivalent │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1617 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 1617 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesVarying() [2/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2842,15 +2842,15 @@ │ │ │ │ patchTableGLPatchTable or equivalent │ │ │ │ instancecached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem. │ │ │ │ deviceContextnot used in the GLXFB evaluator │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1512 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 1512 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesVarying() [3/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2954,15 +2954,15 @@ │ │ │ │ numPatchCoordsnumber of patchCoords. │ │ │ │ patchCoordsarray of locations to be evaluated. must have BindVBO() method returning an array of PatchCoord struct in VBO. │ │ │ │ patchTableGLPatchTable or equivalent │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1428 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 1428 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesVarying() [4/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -3080,15 +3080,15 @@ │ │ │ │ patchTableGLPatchTable or equivalent │ │ │ │ instancecached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem. │ │ │ │ deviceContextnot used in the GLXFB evaluator │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1351 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 1351 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesVarying() [5/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -3164,15 +3164,15 @@ │ │ │ │ numPatchCoordsnumber of patchCoords. │ │ │ │ patchCoordsarray of locations to be evaluated. must have BindVBO() method returning an array of PatchCoord struct in VBO. │ │ │ │ patchTableGLPatchTable or equivalent │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1287 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 1287 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesVarying() [6/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -3262,15 +3262,15 @@ │ │ │ │ patchTableGLPatchTable or equivalent │ │ │ │ instancecached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem. │ │ │ │ deviceContextnot used in the GLXFB evaluator │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1227 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 1227 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalStencils() [1/8]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -3735,15 +3735,15 @@ │ │ │ │ dvvBufferOutput buffer 2nd derivative wrt v must have BindVBO() method returning a GL buffer object of destination data │ │ │ │ dvvDescvertex buffer descriptor for the dvvBuffer │ │ │ │ stencilTablestencil table to be applied. The table must have Texture Buffer Object interfaces. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 575 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 575 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalStencils() [4/8]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -3889,15 +3889,15 @@ │ │ │ │ stencilTablestencil table to be applied. The table must have Texture Buffer Object interfaces. │ │ │ │ instancecached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem. │ │ │ │ deviceContextnot used in the GLSLTransformFeedback kernel │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 396 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 396 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalStencils() [5/8]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -3987,15 +3987,15 @@ │ │ │ │ dvBufferOutput buffer derivative wrt v must have BindVBO() method returning a GL buffer object of destination data │ │ │ │ dvDescvertex buffer descriptor for the dvBuffer │ │ │ │ stencilTablestencil table to be applied. The table must have Texture Buffer Object interfaces. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 506 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 506 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalStencils() [6/8]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -4099,15 +4099,15 @@ │ │ │ │ stencilTablestencil table to be applied. The table must have Texture Buffer Object interfaces. │ │ │ │ instancecached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem. │ │ │ │ deviceContextnot used in the GLSLTransformFeedback kernel │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 306 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 306 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalStencils() [7/8]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -4169,15 +4169,15 @@ │ │ │ │ dstBufferOutput primvar buffer must have BindVBO() method returning a GL buffer object of destination data │ │ │ │ dstDescvertex buffer descriptor for the output buffer │ │ │ │ stencilTablestencil table to be applied. The table must have Texture Buffer Object interfaces. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 457 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 457 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalStencils() [8/8]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -4256,15 +4256,15 @@ │ │ │ │ stencilTablestencil table to be applied. The table must have Texture Buffer Object interfaces. │ │ │ │ instancecached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem. │ │ │ │ deviceContextnot used in the GLSLTransformFeedback kernel │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 238 of file glXFBEvaluator.h.

│ │ │ │ +

Definition at line 238 of file glXFBEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ Synchronize()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -4289,15 +4289,15 @@ │ │ │ │
│ │ │ │ │ │ │ │

Wait the dispatched kernel finishes.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │
The documentation for this class was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │

Provides shader source which can be used by client code. │ │ │ │ More...

│ │ │ │ │ │ │ │ -

#include <hlslPatchShaderSource.h>

│ │ │ │ +

#include <hlslPatchShaderSource.h>

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -122,15 +122,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Static Public Member Functions

static std::string GetPatchBasisShaderSource ()
 Returns shader source which can be used to evaluate position and first and second derivatives on piecewise parametric patches resulting from subdivision refinement.
 
static std::string GetPatchDrawingShaderSource ()
 
static std::string GetDomainShaderSource (Far::PatchDescriptor::Type type)
 
│ │ │ │

Detailed Description

│ │ │ │

Provides shader source which can be used by client code.

│ │ │ │ │ │ │ │ -

Definition at line 40 of file hlslPatchShaderSource.h.

│ │ │ │ +

Definition at line 40 of file hlslPatchShaderSource.h.

│ │ │ │

Member Function Documentation

│ │ │ │ │ │ │ │

◆ GetCommonShaderSource()

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ @@ -282,15 +282,15 @@ │ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │
The documentation for this class was generated from the following file: │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

#include <mtlCommon.h>

│ │ │ │ +

#include <mtlCommon.h>

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Public Attributes

id< MTLDevice > device = nullptr
 
id< MTLCommandQueue > commandQueue = nullptr
 
│ │ │ │

Detailed Description

│ │ │ │
│ │ │ │ -

Definition at line 40 of file mtlCommon.h.

│ │ │ │ +

Definition at line 40 of file mtlCommon.h.

│ │ │ │

Member Data Documentation

│ │ │ │ │ │ │ │

◆ commandQueue

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
id<MTLCommandQueue> commandQueue = nullptr
│ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 43 of file mtlCommon.h.

│ │ │ │ +

Definition at line 43 of file mtlCommon.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

◆ device

│ │ │ │ │ │ │ │
│ │ │ │ @@ -135,20 +135,20 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
id<MTLDevice> device = nullptr
│ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 42 of file mtlCommon.h.

│ │ │ │ +

Definition at line 42 of file mtlCommon.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │
The documentation for this class was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

#include <ompEvaluator.h>

│ │ │ │ +

#include <ompEvaluator.h>

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -172,15 +172,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Static Public Member Functions

template<typename SRC_BUFFER , typename DST_BUFFER , typename STENCIL_TABLE >
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)
 Generic static eval stencils function. This function has a same signature as other device kernels have so that it can be called in the same way from OsdMesh template interface.
 
 
static void SetNumThreads (int numThreads)
 Deprecated. Client code should initialize OpenMP.
 
│ │ │ │

Detailed Description

│ │ │ │
│ │ │ │ -

Definition at line 39 of file ompEvaluator.h.

│ │ │ │ +

Definition at line 39 of file ompEvaluator.h.

│ │ │ │

Member Function Documentation

│ │ │ │ │ │ │ │

◆ EvalPatches() [1/6]

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ @@ -718,15 +718,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
patchTableCpuPatchTable or equivalent XXX: currently Far::PatchTable can't be used due to interface mismatch
instancenot used in the omp evaluator
deviceContextnot used in the omp evaluator
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 607 of file ompEvaluator.h.

│ │ │ │ +

Definition at line 607 of file ompEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

◆ EvalPatches() [5/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -844,15 +844,15 @@ │ │ │ │ patchTableCpuPatchTable or equivalent XXX: currently Far::PatchTable can't be used due to interface mismatch │ │ │ │ instancenot used in the omp evaluator │ │ │ │ deviceContextnot used in the omp evaluator │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 517 of file ompEvaluator.h.

│ │ │ │ +

Definition at line 517 of file ompEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

◆ EvalPatches() [6/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -945,15 +945,15 @@ │ │ │ │ patchTableCpuPatchTable or equivalent XXX: currently Far::PatchTable can't be used due to interface mismatch │ │ │ │ instancenot used in the omp evaluator │ │ │ │ deviceContextnot used in the omp evaluator │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 454 of file ompEvaluator.h.

│ │ │ │ +

Definition at line 454 of file ompEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesFaceVarying() [1/3]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1120,15 +1120,15 @@ │ │ │ │ fvarChannelface-varying channel │ │ │ │ instancenot used in the omp evaluator │ │ │ │ deviceContextnot used in the omp evaluator │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1188 of file ompEvaluator.h.

│ │ │ │ +

Definition at line 1188 of file ompEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesFaceVarying() [2/3]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1253,15 +1253,15 @@ │ │ │ │ fvarChannelface-varying channel │ │ │ │ instancenot used in the omp evaluator │ │ │ │ deviceContextnot used in the omp evaluator │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1100 of file ompEvaluator.h.

│ │ │ │ +

Definition at line 1100 of file ompEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesFaceVarying() [3/3]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1358,15 +1358,15 @@ │ │ │ │ fvarChannelface-varying channel │ │ │ │ instancenot used in the omp evaluator │ │ │ │ deviceContextnot used in the omp evaluator │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1034 of file ompEvaluator.h.

│ │ │ │ +

Definition at line 1034 of file ompEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesVarying() [1/3]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1526,15 +1526,15 @@ │ │ │ │ patchTableCpuPatchTable or equivalent XXX: currently Far::PatchTable can't be used due to interface mismatch │ │ │ │ instancenot used in the omp evaluator │ │ │ │ deviceContextnot used in the omp evaluator │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 971 of file ompEvaluator.h.

│ │ │ │ +

Definition at line 971 of file ompEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesVarying() [2/3]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1652,15 +1652,15 @@ │ │ │ │ patchTableCpuPatchTable or equivalent XXX: currently Far::PatchTable can't be used due to interface mismatch │ │ │ │ instancenot used in the omp evaluator │ │ │ │ deviceContextnot used in the omp evaluator │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 886 of file ompEvaluator.h.

│ │ │ │ +

Definition at line 886 of file ompEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesVarying() [3/3]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1750,15 +1750,15 @@ │ │ │ │ patchTableCpuPatchTable or equivalent XXX: currently Far::PatchTable can't be used due to interface mismatch │ │ │ │ instancenot used in the omp evaluator │ │ │ │ deviceContextnot used in the omp evaluator │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 823 of file ompEvaluator.h.

│ │ │ │ +

Definition at line 823 of file ompEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalStencils() [1/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2354,15 +2354,15 @@ │ │ │ │ stencilTableFar::StencilTable or equivalent │ │ │ │ instancenot used in the omp kernel (declared as a typed pointer to prevent undesirable template resolution) │ │ │ │ deviceContextnot used in the omp kernel │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 303 of file ompEvaluator.h.

│ │ │ │ +

Definition at line 303 of file ompEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalStencils() [5/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2466,15 +2466,15 @@ │ │ │ │ stencilTableFar::StencilTable or equivalent │ │ │ │ instancenot used in the omp kernel (declared as a typed pointer to prevent undesirable template resolution) │ │ │ │ deviceContextnot used in the omp kernel │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 168 of file ompEvaluator.h.

│ │ │ │ +

Definition at line 168 of file ompEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalStencils() [6/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2553,15 +2553,15 @@ │ │ │ │ stencilTableFar::StencilTable or equivalent │ │ │ │ instancenot used in the omp kernel (declared as a typed pointer to prevent undesirable template resolution) │ │ │ │ deviceContextnot used in the omp kernel │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 72 of file ompEvaluator.h.

│ │ │ │ +

Definition at line 72 of file ompEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ SetNumThreads()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2615,15 +2615,15 @@ │ │ │ │
│ │ │ │

Other methods

│ │ │ │
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │
The documentation for this class was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

#include <tbbEvaluator.h>

│ │ │ │ +

#include <tbbEvaluator.h>

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -173,15 +173,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Static Public Member Functions

template<typename SRC_BUFFER , typename DST_BUFFER , typename STENCIL_TABLE >
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)
 Generic static eval stencils function. This function has a same signature as other device kernels have so that it can be called in the same way from OsdMesh template interface.
 
 
static void SetNumThreads (int numThreads)
 Deprecated. Client code should initialize TBB.
 
│ │ │ │

Detailed Description

│ │ │ │
│ │ │ │ -

Definition at line 39 of file tbbEvaluator.h.

│ │ │ │ +

Definition at line 39 of file tbbEvaluator.h.

│ │ │ │

Member Function Documentation

│ │ │ │ │ │ │ │

◆ EvalPatches() [1/6]

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │ @@ -719,15 +719,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
patchTableCpuPatchTable or equivalent XXX: currently Far::PatchTable can't be used due to interface mismatch
instancenot used in the cpu evaluator
deviceContextnot used in the cpu evaluator
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 607 of file tbbEvaluator.h.

│ │ │ │ +

Definition at line 607 of file tbbEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

◆ EvalPatches() [5/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -845,15 +845,15 @@ │ │ │ │ patchTableCpuPatchTable or equivalent XXX: currently Far::PatchTable can't be used due to interface mismatch │ │ │ │ instancenot used in the cpu evaluator │ │ │ │ deviceContextnot used in the cpu evaluator │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 517 of file tbbEvaluator.h.

│ │ │ │ +

Definition at line 517 of file tbbEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │ │ │

◆ EvalPatches() [6/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -946,15 +946,15 @@ │ │ │ │ patchTableCpuPatchTable or equivalent XXX: currently Far::PatchTable can't be used due to interface mismatch │ │ │ │ instancenot used in the cpu evaluator │ │ │ │ deviceContextnot used in the cpu evaluator │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 454 of file tbbEvaluator.h.

│ │ │ │ +

Definition at line 454 of file tbbEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesFaceVarying() [1/3]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1121,15 +1121,15 @@ │ │ │ │ fvarChannelface-varying channel │ │ │ │ instancenot used in the cpu evaluator │ │ │ │ deviceContextnot used in the cpu evaluator │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1188 of file tbbEvaluator.h.

│ │ │ │ +

Definition at line 1188 of file tbbEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesFaceVarying() [2/3]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1254,15 +1254,15 @@ │ │ │ │ fvarChannelface-varying channel │ │ │ │ instancenot used in the cpu evaluator │ │ │ │ deviceContextnot used in the cpu evaluator │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1100 of file tbbEvaluator.h.

│ │ │ │ +

Definition at line 1100 of file tbbEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesFaceVarying() [3/3]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1359,15 +1359,15 @@ │ │ │ │ fvarChannelface-varying channel │ │ │ │ instancenot used in the cpu evaluator │ │ │ │ deviceContextnot used in the cpu evaluator │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 1034 of file tbbEvaluator.h.

│ │ │ │ +

Definition at line 1034 of file tbbEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesVarying() [1/3]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1527,15 +1527,15 @@ │ │ │ │ patchTableCpuPatchTable or equivalent XXX: currently Far::PatchTable can't be used due to interface mismatch │ │ │ │ instancenot used in the cpu evaluator │ │ │ │ deviceContextnot used in the cpu evaluator │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 971 of file tbbEvaluator.h.

│ │ │ │ +

Definition at line 971 of file tbbEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesVarying() [2/3]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1653,15 +1653,15 @@ │ │ │ │ patchTableCpuPatchTable or equivalent XXX: currently Far::PatchTable can't be used due to interface mismatch │ │ │ │ instancenot used in the cpu evaluator │ │ │ │ deviceContextnot used in the cpu evaluator │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 886 of file tbbEvaluator.h.

│ │ │ │ +

Definition at line 886 of file tbbEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalPatchesVarying() [3/3]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1751,15 +1751,15 @@ │ │ │ │ patchTableCpuPatchTable or equivalent XXX: currently Far::PatchTable can't be used due to interface mismatch │ │ │ │ instancenot used in the cpu evaluator │ │ │ │ deviceContextnot used in the cpu evaluator │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 823 of file tbbEvaluator.h.

│ │ │ │ +

Definition at line 823 of file tbbEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalStencils() [1/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2355,15 +2355,15 @@ │ │ │ │ stencilTableFar::StencilTable or equivalent │ │ │ │ instancenot used in the tbb kernel (declared as a typed pointer to prevent undesirable template resolution) │ │ │ │ deviceContextnot used in the tbb kernel │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 303 of file tbbEvaluator.h.

│ │ │ │ +

Definition at line 303 of file tbbEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalStencils() [5/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2467,15 +2467,15 @@ │ │ │ │ stencilTableFar::StencilTable or equivalent │ │ │ │ instancenot used in the tbb kernel (declared as a typed pointer to prevent undesirable template resolution) │ │ │ │ deviceContextnot used in the tbb kernel │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 168 of file tbbEvaluator.h.

│ │ │ │ +

Definition at line 168 of file tbbEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ EvalStencils() [6/6]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2554,15 +2554,15 @@ │ │ │ │ stencilTableFar::StencilTable or equivalent │ │ │ │ instancenot used in the tbb kernel (declared as a typed pointer to prevent undesirable template resolution) │ │ │ │ deviceContextnot used in the tbb kernel │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -

Definition at line 72 of file tbbEvaluator.h.

│ │ │ │ +

Definition at line 72 of file tbbEvaluator.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ SetNumThreads()

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2624,15 +2624,15 @@ │ │ │ │
│ │ │ │

Other methods

│ │ │ │
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │
The documentation for this class was generated from the following file: │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 84 of file bilinearScheme.h.

│ │ │ │ +

Definition at line 84 of file bilinearScheme.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ assignCornerLimitMask() [2/4]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -407,15 +407,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inlineprotected │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 208 of file catmarkScheme.h.

│ │ │ │ +

Definition at line 208 of file catmarkScheme.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ assignCornerLimitMask() [3/4]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -529,15 +529,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inlineprotected │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 118 of file bilinearScheme.h.

│ │ │ │ +

Definition at line 118 of file bilinearScheme.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ assignCornerLimitTangentMasks() [2/4]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -619,15 +619,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inlineprotected │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 301 of file catmarkScheme.h.

│ │ │ │ +

Definition at line 301 of file catmarkScheme.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ assignCornerLimitTangentMasks() [4/4]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -833,15 +833,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inlineprotected │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 221 of file catmarkScheme.h.

│ │ │ │ +

Definition at line 221 of file catmarkScheme.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ assignCreaseLimitMask() [3/4]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -921,15 +921,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inlineprotected │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 97 of file bilinearScheme.h.

│ │ │ │ +

Definition at line 97 of file bilinearScheme.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ assignCreaseLimitTangentMasks() [1/4]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1023,15 +1023,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inlineprotected │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 334 of file catmarkScheme.h.

│ │ │ │ +

Definition at line 334 of file catmarkScheme.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ assignCreaseLimitTangentMasks() [3/4]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1123,15 +1123,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inlineprotected │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 143 of file bilinearScheme.h.

│ │ │ │ +

Definition at line 143 of file bilinearScheme.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ assignCreaseMaskForEdge() [1/2]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1293,15 +1293,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inlineprotected │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 148 of file catmarkScheme.h.

│ │ │ │ +

Definition at line 148 of file catmarkScheme.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ assignCreaseMaskForVertex() [3/3]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1415,15 +1415,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inlineprotected │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 106 of file bilinearScheme.h.

│ │ │ │ +

Definition at line 106 of file bilinearScheme.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ assignSmoothLimitMask() [3/4]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1453,15 +1453,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inlineprotected │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 247 of file catmarkScheme.h.

│ │ │ │ +

Definition at line 247 of file catmarkScheme.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ assignSmoothLimitMask() [4/4]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1581,15 +1581,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inlineprotected │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 152 of file bilinearScheme.h.

│ │ │ │ +

Definition at line 152 of file bilinearScheme.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ assignSmoothLimitTangentMasks() [3/4]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1625,15 +1625,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inlineprotected │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 453 of file catmarkScheme.h.

│ │ │ │ +

Definition at line 453 of file catmarkScheme.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ assignSmoothLimitTangentMasks() [4/4]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1707,15 +1707,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inlineprotected │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 71 of file catmarkScheme.h.

│ │ │ │ +

Definition at line 71 of file catmarkScheme.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ assignSmoothMaskForEdge() [2/3]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1863,15 +1863,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inlineprotected │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 173 of file catmarkScheme.h.

│ │ │ │ +

Definition at line 173 of file catmarkScheme.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ assignSmoothMaskForVertex() [3/3]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -1943,15 +1943,15 @@ │ │ │ │ │ │ │ │ ) │ │ │ │ const │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 62 of file bilinearScheme.h.

│ │ │ │ +

Definition at line 62 of file bilinearScheme.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ ComputeEdgeVertexMask() [2/2]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2166,15 +2166,15 @@ │ │ │ │ │ │ │ │ ) │ │ │ │ const │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 71 of file bilinearScheme.h.

│ │ │ │ +

Definition at line 71 of file bilinearScheme.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ ComputeVertexVertexMask() [2/2]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2241,15 +2241,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 53 of file bilinearScheme.h.

│ │ │ │ +

Definition at line 53 of file bilinearScheme.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetLocalNeighborhoodSize() [2/4]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2268,15 +2268,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 56 of file catmarkScheme.h.

│ │ │ │ +

Definition at line 56 of file catmarkScheme.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetLocalNeighborhoodSize() [3/4]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2378,15 +2378,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 47 of file bilinearScheme.h.

│ │ │ │ +

Definition at line 47 of file bilinearScheme.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetRegularFaceSize() [2/4]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2405,15 +2405,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 50 of file catmarkScheme.h.

│ │ │ │ +

Definition at line 50 of file catmarkScheme.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetRegularFaceSize() [3/4]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2486,15 +2486,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 50 of file bilinearScheme.h.

│ │ │ │ +

Definition at line 50 of file bilinearScheme.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetRegularVertexValence() [2/4]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2513,15 +2513,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 53 of file catmarkScheme.h.

│ │ │ │ +

Definition at line 53 of file catmarkScheme.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetRegularVertexValence() [3/4]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2594,15 +2594,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 44 of file bilinearScheme.h.

│ │ │ │ +

Definition at line 44 of file bilinearScheme.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetTopologicalSplitType() [2/4]

│ │ │ │ │ │ │ │
│ │ │ │ @@ -2621,15 +2621,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ inline │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ -

Definition at line 47 of file catmarkScheme.h.

│ │ │ │ +

Definition at line 47 of file catmarkScheme.h.

│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │

◆ GetTopologicalSplitType() [3/4]

│ │ │ │ │ │ │ │
│ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a01489.html │ │ │ │ @@ -95,15 +95,15 @@ │ │ │ │ Classes | │ │ │ │ Namespaces | │ │ │ │ Typedefs
│ │ │ │
types.h File Reference
│ │ │ │ │ │ │ │
│ │ │ │
#include "../version.h"
│ │ │ │ -#include "../far/patchTable.h"
│ │ │ │ +#include "../far/patchTable.h"
│ │ │ │ #include <algorithm>
│ │ │ │
│ │ │ │

Go to the source code of this file.

│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/a01489_source.html │ │ │ │ @@ -266,18 +266,18 @@ │ │ │ │
143#endif // OPENSUBDIV3_OSD_TYPES_H
│ │ │ │ │ │ │ │
std::vector< PatchParam > PatchParamVector
Definition types.h:133
│ │ │ │
std::vector< PatchArray > PatchArrayVector
Definition types.h:132
│ │ │ │ │ │ │ │
Type GetType() const
Returns the type of the patch.
│ │ │ │ │ │ │ │ -
Handle that can be used as unique patch identifier within PatchTable.
Definition patchTable.h:60
│ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ +
Handle that can be used as unique patch identifier within PatchTable.
Definition patchTable.h:60
│ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │
Coordinates set on a patch table.
Definition types.h:42
│ │ │ │
Far::PatchTable::PatchHandle handle
patch handle
Definition types.h:62
│ │ │ │ │ │ │ │ │ │ │ │
PatchCoord(Far::PatchTable::PatchHandle handleArg, float sArg, float tArg)
Constructor.
Definition types.h:53
│ │ │ │
float t
parametric location on patch
Definition types.h:63
│ │ │ │ │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/dir_2483050b711c1829a6434006d0beb10c.html │ │ │ │ @@ -95,21 +95,21 @@ │ │ │ │ │ │ │ │
│ │ │ │

│ │ │ │ Classes

struct  PatchCoord
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -117,67 +117,67 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

│ │ │ │ Files

 bufferDescriptor.h
 
 clEvaluator.h
 clEvaluator.h
 
 clPatchTable.h
 clPatchTable.h
 
 clVertexBuffer.h
 clVertexBuffer.h
 
 cpuD3D11VertexBuffer.h
 cpuD3D11VertexBuffer.h
 
 cpuEvaluator.h
 
 cpuGLVertexBuffer.h
 
 cpuPatchTable.h
 
 
 cudaEvaluator.h
 
 cudaPatchTable.h
 
 cudaVertexBuffer.h
 
 d3d11ComputeEvaluator.h
 d3d11ComputeEvaluator.h
 
 d3d11LegacyGregoryPatchTable.h
 d3d11LegacyGregoryPatchTable.h
 
 d3d11Mesh.h
 d3d11Mesh.h
 
 d3d11PatchTable.h
 
 d3d11VertexBuffer.h
 
 glComputeEvaluator.h
 glComputeEvaluator.h
 
 glLegacyGregoryPatchTable.h
 glLegacyGregoryPatchTable.h
 
 glMesh.h
 
 glPatchTable.h
 glPatchTable.h
 
 glslPatchShaderSource.h
 
 glVertexBuffer.h
 
 glXFBEvaluator.h
 glXFBEvaluator.h
 
 hlslPatchShaderSource.h
 hlslPatchShaderSource.h
 
 mesh.h
 
 mtlCommon.h
 mtlCommon.h
 
 mtlComputeEvaluator.h
 
 mtlLegacyGregoryPatchTable.h
 
 mtlMesh.h
 
 mtlPatchShaderSource.h
 
 mtlPatchTable.h
 
 mtlVertexBuffer.h
 
 ompEvaluator.h
 ompEvaluator.h
 
 ompKernel.h
 ompKernel.h
 
 opencl.h
 
 opengl.h
 
 tbbEvaluator.h
 tbbEvaluator.h
 
 tbbKernel.h
 tbbKernel.h
 
 types.h
 
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/dir_2483050b711c1829a6434006d0beb10c.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -1,42 +1,42 @@ │ │ │ │ │ var dir_2483050b711c1829a6434006d0beb10c = [ │ │ │ │ │ ["bufferDescriptor.h", "a00899.html", "a00899"], │ │ │ │ │ - ["clEvaluator.h", "a00797.html", "a00797"], │ │ │ │ │ - ["clPatchTable.h", "a00800.html", "a00800"], │ │ │ │ │ - ["clVertexBuffer.h", "a00803.html", "a00803"], │ │ │ │ │ - ["cpuD3D11VertexBuffer.h", "a00848.html", "a00848"], │ │ │ │ │ + ["clEvaluator.h", "a00806.html", "a00806"], │ │ │ │ │ + ["clPatchTable.h", "a00797.html", "a00797"], │ │ │ │ │ + ["clVertexBuffer.h", "a00800.html", "a00800"], │ │ │ │ │ + ["cpuD3D11VertexBuffer.h", "a00845.html", "a00845"], │ │ │ │ │ ["cpuEvaluator.h", "a00896.html", "a00896"], │ │ │ │ │ ["cpuGLVertexBuffer.h", "a00869.html", "a00869"], │ │ │ │ │ ["cpuPatchTable.h", "a00893.html", "a00893"], │ │ │ │ │ ["cpuVertexBuffer.h", "a00890.html", "a00890"], │ │ │ │ │ ["cudaEvaluator.h", "a00791.html", "a00791"], │ │ │ │ │ ["cudaPatchTable.h", "a00788.html", "a00788"], │ │ │ │ │ ["cudaVertexBuffer.h", "a00902.html", "a00902"], │ │ │ │ │ - ["d3d11ComputeEvaluator.h", "a00842.html", "a00842"], │ │ │ │ │ - ["d3d11LegacyGregoryPatchTable.h", "a00839.html", "a00839"], │ │ │ │ │ - ["d3d11Mesh.h", "a00827.html", "a00827"], │ │ │ │ │ + ["d3d11ComputeEvaluator.h", "a00839.html", "a00839"], │ │ │ │ │ + ["d3d11LegacyGregoryPatchTable.h", "a00842.html", "a00842"], │ │ │ │ │ + ["d3d11Mesh.h", "a00830.html", "a00830"], │ │ │ │ │ ["d3d11PatchTable.h", "a00836.html", "a00836"], │ │ │ │ │ ["d3d11VertexBuffer.h", "a00833.html", "a00833"], │ │ │ │ │ - ["glComputeEvaluator.h", "a00845.html", "a00845"], │ │ │ │ │ - ["glLegacyGregoryPatchTable.h", "a00866.html", "a00866"], │ │ │ │ │ + ["glComputeEvaluator.h", "a00851.html", "a00851"], │ │ │ │ │ + ["glLegacyGregoryPatchTable.h", "a00863.html", "a00863"], │ │ │ │ │ ["glMesh.h", "a00857.html", "a00857"], │ │ │ │ │ - ["glPatchTable.h", "a00863.html", "a00863"], │ │ │ │ │ + ["glPatchTable.h", "a00866.html", "a00866"], │ │ │ │ │ ["glslPatchShaderSource.h", "a00854.html", "a00854"], │ │ │ │ │ ["glVertexBuffer.h", "a00860.html", "a00860"], │ │ │ │ │ - ["glXFBEvaluator.h", "a00851.html", "a00851"], │ │ │ │ │ - ["hlslPatchShaderSource.h", "a00830.html", "a00830"], │ │ │ │ │ + ["glXFBEvaluator.h", "a00848.html", "a00848"], │ │ │ │ │ + ["hlslPatchShaderSource.h", "a00827.html", "a00827"], │ │ │ │ │ ["mesh.h", "a00887.html", "a00887"], │ │ │ │ │ - ["mtlCommon.h", "a00806.html", "a00806"], │ │ │ │ │ + ["mtlCommon.h", "a00803.html", "a00803"], │ │ │ │ │ ["mtlComputeEvaluator.h", "a00821.html", "a00821"], │ │ │ │ │ ["mtlLegacyGregoryPatchTable.h", "a00818.html", "a00818"], │ │ │ │ │ ["mtlMesh.h", "a00812.html", "a00812"], │ │ │ │ │ ["mtlPatchShaderSource.h", "a00809.html", "a00809"], │ │ │ │ │ ["mtlPatchTable.h", "a00815.html", "a00815"], │ │ │ │ │ ["mtlVertexBuffer.h", "a00824.html", "a00824"], │ │ │ │ │ - ["ompEvaluator.h", "a00878.html", "a00878"], │ │ │ │ │ - ["ompKernel.h", "a00881.html", "a00881"], │ │ │ │ │ + ["ompEvaluator.h", "a00881.html", "a00881"], │ │ │ │ │ + ["ompKernel.h", "a00878.html", "a00878"], │ │ │ │ │ ["opencl.h", "a00794.html", null], │ │ │ │ │ ["opengl.h", "a00884.html", null], │ │ │ │ │ - ["tbbEvaluator.h", "a00875.html", "a00875"], │ │ │ │ │ - ["tbbKernel.h", "a00872.html", "a00872"], │ │ │ │ │ + ["tbbEvaluator.h", "a00872.html", "a00872"], │ │ │ │ │ + ["tbbKernel.h", "a00875.html", "a00875"], │ │ │ │ │ ["types.h", "a01489.html", "a01489"] │ │ │ │ │ ]; │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/dir_7f420b72a822828cfa8b0561c695a5cc.html │ │ │ │ @@ -101,17 +101,17 @@ │ │ │ │   │ │ │ │  patchDescriptor.h │ │ │ │   │ │ │ │  patchMap.h │ │ │ │   │ │ │ │  patchParam.h │ │ │ │   │ │ │ │ - patchTable.h │ │ │ │ + patchTable.h │ │ │ │   │ │ │ │ - patchTableFactory.h │ │ │ │ + patchTableFactory.h │ │ │ │   │ │ │ │  primvarRefiner.h │ │ │ │   │ │ │ │  ptexIndices.h │ │ │ │   │ │ │ │  stencilTable.h │ │ │ │   │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/dir_7f420b72a822828cfa8b0561c695a5cc.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -1,14 +1,14 @@ │ │ │ │ │ var dir_7f420b72a822828cfa8b0561c695a5cc = [ │ │ │ │ │ ["error.h", "a00743.html", "a00743"], │ │ │ │ │ ["patchDescriptor.h", "a00740.html", "a00740"], │ │ │ │ │ ["patchMap.h", "a00734.html", "a00734"], │ │ │ │ │ ["patchParam.h", "a00737.html", "a00737"], │ │ │ │ │ - ["patchTable.h", "a00731.html", "a00731"], │ │ │ │ │ - ["patchTableFactory.h", "a00728.html", "a00728"], │ │ │ │ │ + ["patchTable.h", "a00728.html", "a00728"], │ │ │ │ │ + ["patchTableFactory.h", "a00731.html", "a00731"], │ │ │ │ │ ["primvarRefiner.h", "a00725.html", "a00725"], │ │ │ │ │ ["ptexIndices.h", "a00722.html", "a00722"], │ │ │ │ │ ["stencilTable.h", "a00719.html", "a00719"], │ │ │ │ │ ["stencilTableFactory.h", "a00716.html", "a00716"], │ │ │ │ │ ["topologyDescriptor.h", "a00713.html", "a00713"], │ │ │ │ │ ["topologyLevel.h", "a00710.html", "a00710"], │ │ │ │ │ ["topologyRefiner.h", "a00707.html", "a00707"], │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/dir_bd5473d7d5841d48919aaa9ad0cb1f9b.html │ │ │ │ @@ -95,17 +95,17 @@ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/dir_bd5473d7d5841d48919aaa9ad0cb1f9b.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -1,11 +1,11 @@ │ │ │ │ │ var dir_bd5473d7d5841d48919aaa9ad0cb1f9b = [ │ │ │ │ │ ["array.h", "a00767.html", "a00767"], │ │ │ │ │ - ["componentInterfaces.h", "a00761.html", null], │ │ │ │ │ - ["fvarLevel.h", "a00764.html", null], │ │ │ │ │ + ["componentInterfaces.h", "a00764.html", null], │ │ │ │ │ + ["fvarLevel.h", "a00761.html", null], │ │ │ │ │ ["fvarRefinement.h", "a00755.html", null], │ │ │ │ │ ["level.h", "a00758.html", null], │ │ │ │ │ ["refinement.h", "a00752.html", null], │ │ │ │ │ ["sparseSelector.h", "a00749.html", null], │ │ │ │ │ ["stackBuffer.h", "a00746.html", null], │ │ │ │ │ ["types.h", "a01495.html", "a01495"] │ │ │ │ │ ]; │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/dir_f61368944c63c2c1f8c69bc232e59c39.html │ │ │ │ @@ -93,17 +93,17 @@ │ │ │ │
│ │ │ │
sdc Directory Reference
│ │ │ │
│ │ │ │
│ │ │ │

│ │ │ │ Files

 array.h
 
 componentInterfaces.h
 componentInterfaces.h
 
 fvarLevel.h
 fvarLevel.h
 
 fvarRefinement.h
 
 level.h
 
 refinement.h
 
│ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/dir_f61368944c63c2c1f8c69bc232e59c39.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -1,9 +1,9 @@ │ │ │ │ │ var dir_f61368944c63c2c1f8c69bc232e59c39 = [ │ │ │ │ │ - ["bilinearScheme.h", "a00782.html", null], │ │ │ │ │ - ["catmarkScheme.h", "a00785.html", null], │ │ │ │ │ + ["bilinearScheme.h", "a00785.html", null], │ │ │ │ │ + ["catmarkScheme.h", "a00782.html", null], │ │ │ │ │ ["crease.h", "a00779.html", "a00779"], │ │ │ │ │ ["loopScheme.h", "a00776.html", null], │ │ │ │ │ ["options.h", "a00773.html", "a00773"], │ │ │ │ │ ["scheme.h", "a00770.html", "a00770"], │ │ │ │ │ ["types.h", "a01492.html", "a01492"] │ │ │ │ │ ]; │ │ │ ├── ./usr/share/doc/opensubdiv/doxy_html/dir_fa5edef2a780a73fbfb6a11f1af88ceb.html │ │ │ │ @@ -101,23 +101,23 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │ - │ │ │ │ + │ │ │ │ │ │ │ │

│ │ │ │ Files

 bilinearScheme.h
 bilinearScheme.h
 
 catmarkScheme.h
 catmarkScheme.h
 
 crease.h
 
 loopScheme.h
 
 options.h
 
 
 parameterization.h
 
 refinerSurfaceFactory.h
 
 surface.h
 
 surfaceFactory.h
 surfaceFactory.h
 
 surfaceFactoryCache.h
 
 surfaceFactoryMeshAdapter.h
 surfaceFactoryMeshAdapter.h
 
 tessellation.h
 tessellation.h
 
 vertexDescriptor.h
 vertexDescriptor.h
 
│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │