25 #ifndef OPENSUBDIV_GL_COMPUTE_EVALUATOR_H_
26 #define OPENSUBDIV_GL_COMPUTE_EVALUATOR_H_
28 #include <opensubdiv/osd/bufferDescriptor.h>
29 #include <opensubdiv/osd/opengl.h>
30 #include <opensubdiv/osd/types.h>
31 #include <opensubdiv/version.h>
34 namespace OPENSUBDIV_VERSION {
36 class LimitStencilTable;
43 namespace opensubdiv {
54 void *deviceContext =
NULL)
60 void *deviceContext =
NULL)
131 OpenSubdiv::Osd::BufferDescriptor
const &dstDesc,
132 OpenSubdiv::Osd::BufferDescriptor
const &duDesc,
133 OpenSubdiv::Osd::BufferDescriptor
const &dvDesc,
134 void *deviceContext =
NULL)
140 OpenSubdiv::Osd::BufferDescriptor(),
141 OpenSubdiv::Osd::BufferDescriptor(),
142 OpenSubdiv::Osd::BufferDescriptor(),
147 OpenSubdiv::Osd::BufferDescriptor
const &dstDesc,
148 OpenSubdiv::Osd::BufferDescriptor
const &duDesc,
149 OpenSubdiv::Osd::BufferDescriptor
const &dvDesc,
150 OpenSubdiv::Osd::BufferDescriptor
const &duuDesc,
151 OpenSubdiv::Osd::BufferDescriptor
const &duvDesc,
152 OpenSubdiv::Osd::BufferDescriptor
const &dvvDesc,
153 void *deviceContext =
NULL)
157 if (
instance->Compile(srcDesc, dstDesc, duDesc, dvDesc, duuDesc, duvDesc, dvvDesc))
202 template<
typename SRC_BUFFER,
typename DST_BUFFER,
typename STENCIL_TABLE>
204 OpenSubdiv::Osd::BufferDescriptor
const &srcDesc,
205 DST_BUFFER *dstBuffer,
206 OpenSubdiv::Osd::BufferDescriptor
const &dstDesc,
207 STENCIL_TABLE
const *stencilTable,
209 void *deviceContext =
NULL)
213 return instance->EvalStencils(srcBuffer, srcDesc, dstBuffer, dstDesc, stencilTable);
220 OpenSubdiv::Osd::BufferDescriptor(),
221 OpenSubdiv::Osd::BufferDescriptor());
223 bool r =
instance->EvalStencils(srcBuffer, srcDesc, dstBuffer, dstDesc, stencilTable);
270 template<
typename SRC_BUFFER,
typename DST_BUFFER,
typename STENCIL_TABLE>
272 OpenSubdiv::Osd::BufferDescriptor
const &srcDesc,
273 DST_BUFFER *dstBuffer,
274 OpenSubdiv::Osd::BufferDescriptor
const &dstDesc,
275 DST_BUFFER *duBuffer,
276 OpenSubdiv::Osd::BufferDescriptor
const &duDesc,
277 DST_BUFFER *dvBuffer,
278 OpenSubdiv::Osd::BufferDescriptor
const &dvDesc,
279 STENCIL_TABLE
const *stencilTable,
281 void *deviceContext =
NULL)
285 return instance->EvalStencils(srcBuffer,
300 bool r =
instance->EvalStencils(srcBuffer,
373 template<
typename SRC_BUFFER,
typename DST_BUFFER,
typename STENCIL_TABLE>
375 OpenSubdiv::Osd::BufferDescriptor
const &srcDesc,
376 DST_BUFFER *dstBuffer,
377 OpenSubdiv::Osd::BufferDescriptor
const &dstDesc,
378 DST_BUFFER *duBuffer,
379 OpenSubdiv::Osd::BufferDescriptor
const &duDesc,
380 DST_BUFFER *dvBuffer,
381 OpenSubdiv::Osd::BufferDescriptor
const &dvDesc,
382 DST_BUFFER *duuBuffer,
383 OpenSubdiv::Osd::BufferDescriptor
const &duuDesc,
384 DST_BUFFER *duvBuffer,
385 OpenSubdiv::Osd::BufferDescriptor
const &duvDesc,
386 DST_BUFFER *dvvBuffer,
387 OpenSubdiv::Osd::BufferDescriptor
const &dvvDesc,
388 STENCIL_TABLE
const *stencilTable,
390 void *deviceContext =
NULL)
394 return instance->EvalStencils(srcBuffer,
413 instance =
Create(srcDesc, dstDesc, duDesc, dvDesc, duuDesc, duvDesc, dvvDesc);
415 bool r =
instance->EvalStencils(srcBuffer,
454 template<
typename SRC_BUFFER,
typename DST_BUFFER,
typename STENCIL_TABLE>
456 OpenSubdiv::Osd::BufferDescriptor
const &srcDesc,
457 DST_BUFFER *dstBuffer,
458 OpenSubdiv::Osd::BufferDescriptor
const &dstDesc,
459 STENCIL_TABLE
const *stencilTable)
const
463 dstBuffer->BindVBO(),
466 OpenSubdiv::Osd::BufferDescriptor(),
468 OpenSubdiv::Osd::BufferDescriptor(),
469 stencilTable->GetSizesBuffer(),
470 stencilTable->GetOffsetsBuffer(),
471 stencilTable->GetIndicesBuffer(),
472 stencilTable->GetWeightsBuffer(),
476 stencilTable->GetNumStencils());
508 template<
typename SRC_BUFFER,
typename DST_BUFFER,
typename STENCIL_TABLE>
510 OpenSubdiv::Osd::BufferDescriptor
const &srcDesc,
511 DST_BUFFER *dstBuffer,
512 OpenSubdiv::Osd::BufferDescriptor
const &dstDesc,
513 DST_BUFFER *duBuffer,
514 OpenSubdiv::Osd::BufferDescriptor
const &duDesc,
515 DST_BUFFER *dvBuffer,
516 OpenSubdiv::Osd::BufferDescriptor
const &dvDesc,
517 STENCIL_TABLE
const *stencilTable)
const
521 dstBuffer->BindVBO(),
527 stencilTable->GetSizesBuffer(),
528 stencilTable->GetOffsetsBuffer(),
529 stencilTable->GetIndicesBuffer(),
530 stencilTable->GetWeightsBuffer(),
531 stencilTable->GetDuWeightsBuffer(),
532 stencilTable->GetDvWeightsBuffer(),
534 stencilTable->GetNumStencils());
584 template<
typename SRC_BUFFER,
typename DST_BUFFER,
typename STENCIL_TABLE>
586 OpenSubdiv::Osd::BufferDescriptor
const &srcDesc,
587 DST_BUFFER *dstBuffer,
588 OpenSubdiv::Osd::BufferDescriptor
const &dstDesc,
589 DST_BUFFER *duBuffer,
590 OpenSubdiv::Osd::BufferDescriptor
const &duDesc,
591 DST_BUFFER *dvBuffer,
592 OpenSubdiv::Osd::BufferDescriptor
const &dvDesc,
593 DST_BUFFER *duuBuffer,
594 OpenSubdiv::Osd::BufferDescriptor
const &duuDesc,
595 DST_BUFFER *duvBuffer,
596 OpenSubdiv::Osd::BufferDescriptor
const &duvDesc,
597 DST_BUFFER *dvvBuffer,
598 OpenSubdiv::Osd::BufferDescriptor
const &dvvDesc,
599 STENCIL_TABLE
const *stencilTable)
const
603 dstBuffer->BindVBO(),
609 duuBuffer->BindVBO(),
611 duvBuffer->BindVBO(),
613 dvvBuffer->BindVBO(),
615 stencilTable->GetSizesBuffer(),
616 stencilTable->GetOffsetsBuffer(),
617 stencilTable->GetIndicesBuffer(),
618 stencilTable->GetWeightsBuffer(),
619 stencilTable->GetDuWeightsBuffer(),
620 stencilTable->GetDvWeightsBuffer(),
621 stencilTable->GetDuuWeightsBuffer(),
622 stencilTable->GetDuvWeightsBuffer(),
623 stencilTable->GetDvvWeightsBuffer(),
625 stencilTable->GetNumStencils());
664 OpenSubdiv::Osd::BufferDescriptor
const &srcDesc,
666 OpenSubdiv::Osd::BufferDescriptor
const &dstDesc,
668 OpenSubdiv::Osd::BufferDescriptor
const &duDesc,
670 OpenSubdiv::Osd::BufferDescriptor
const &dvDesc,
672 GLuint offsetsBuffer,
673 GLuint indicesBuffer,
674 GLuint weightsBuffer,
675 GLuint duWeightsBuffer,
676 GLuint dvWeightsBuffer,
734 OpenSubdiv::Osd::BufferDescriptor
const &srcDesc,
736 OpenSubdiv::Osd::BufferDescriptor
const &dstDesc,
738 OpenSubdiv::Osd::BufferDescriptor
const &duDesc,
740 OpenSubdiv::Osd::BufferDescriptor
const &dvDesc,
742 OpenSubdiv::Osd::BufferDescriptor
const &duuDesc,
744 OpenSubdiv::Osd::BufferDescriptor
const &duvDesc,
746 OpenSubdiv::Osd::BufferDescriptor
const &dvvDesc,
748 GLuint offsetsBuffer,
749 GLuint indicesBuffer,
750 GLuint weightsBuffer,
751 GLuint duWeightsBuffer,
752 GLuint dvWeightsBuffer,
753 GLuint duuWeightsBuffer,
754 GLuint duvWeightsBuffer,
755 GLuint dvvWeightsBuffer,
797 template<
typename SRC_BUFFER,
799 typename PATCHCOORD_BUFFER,
800 typename PATCH_TABLE>
802 OpenSubdiv::Osd::BufferDescriptor
const &srcDesc,
803 DST_BUFFER *dstBuffer,
804 OpenSubdiv::Osd::BufferDescriptor
const &dstDesc,
806 PATCHCOORD_BUFFER *patchCoords,
807 PATCH_TABLE *patchTable,
809 void *deviceContext =
NULL)
814 srcBuffer, srcDesc, dstBuffer, dstDesc, numPatchCoords, patchCoords, patchTable);
821 OpenSubdiv::Osd::BufferDescriptor(),
822 OpenSubdiv::Osd::BufferDescriptor());
825 srcBuffer, srcDesc, dstBuffer, dstDesc, numPatchCoords, patchCoords, patchTable);
877 template<
typename SRC_BUFFER,
879 typename PATCHCOORD_BUFFER,
880 typename PATCH_TABLE>
882 OpenSubdiv::Osd::BufferDescriptor
const &srcDesc,
883 DST_BUFFER *dstBuffer,
884 OpenSubdiv::Osd::BufferDescriptor
const &dstDesc,
885 DST_BUFFER *duBuffer,
886 OpenSubdiv::Osd::BufferDescriptor
const &duDesc,
887 DST_BUFFER *dvBuffer,
888 OpenSubdiv::Osd::BufferDescriptor
const &dvDesc,
890 PATCHCOORD_BUFFER *patchCoords,
891 PATCH_TABLE *patchTable,
893 void *deviceContext =
NULL)
897 return instance->EvalPatches(srcBuffer,
914 bool r =
instance->EvalPatches(srcBuffer,
994 template<
typename SRC_BUFFER,
996 typename PATCHCOORD_BUFFER,
997 typename PATCH_TABLE>
999 OpenSubdiv::Osd::BufferDescriptor
const &srcDesc,
1000 DST_BUFFER *dstBuffer,
1001 OpenSubdiv::Osd::BufferDescriptor
const &dstDesc,
1002 DST_BUFFER *duBuffer,
1003 OpenSubdiv::Osd::BufferDescriptor
const &duDesc,
1004 DST_BUFFER *dvBuffer,
1005 OpenSubdiv::Osd::BufferDescriptor
const &dvDesc,
1006 DST_BUFFER *duuBuffer,
1007 OpenSubdiv::Osd::BufferDescriptor
const &duuDesc,
1008 DST_BUFFER *duvBuffer,
1009 OpenSubdiv::Osd::BufferDescriptor
const &duvDesc,
1010 DST_BUFFER *dvvBuffer,
1011 OpenSubdiv::Osd::BufferDescriptor
const &dvvDesc,
1013 PATCHCOORD_BUFFER *patchCoords,
1014 PATCH_TABLE *patchTable,
1016 void *deviceContext =
NULL)
1020 return instance->EvalPatches(srcBuffer,
1040 (
void)deviceContext;
1041 instance =
Create(srcDesc, dstDesc, duDesc, dvDesc, duuDesc, duvDesc, dvvDesc);
1043 bool r =
instance->EvalPatches(srcBuffer,
1091 template<
typename SRC_BUFFER,
1092 typename DST_BUFFER,
1093 typename PATCHCOORD_BUFFER,
1094 typename PATCH_TABLE>
1096 OpenSubdiv::Osd::BufferDescriptor
const &srcDesc,
1097 DST_BUFFER *dstBuffer,
1098 OpenSubdiv::Osd::BufferDescriptor
const &dstDesc,
1100 PATCHCOORD_BUFFER *patchCoords,
1101 PATCH_TABLE *patchTable)
const
1106 dstBuffer->BindVBO(),
1109 OpenSubdiv::Osd::BufferDescriptor(),
1111 OpenSubdiv::Osd::BufferDescriptor(),
1113 patchCoords->BindVBO(),
1114 patchTable->GetPatchArrays(),
1115 patchTable->GetPatchIndexBuffer(),
1116 patchTable->GetPatchParamBuffer());
1153 template<
typename SRC_BUFFER,
1154 typename DST_BUFFER,
1155 typename PATCHCOORD_BUFFER,
1156 typename PATCH_TABLE>
1158 OpenSubdiv::Osd::BufferDescriptor
const &srcDesc,
1159 DST_BUFFER *dstBuffer,
1160 OpenSubdiv::Osd::BufferDescriptor
const &dstDesc,
1161 DST_BUFFER *duBuffer,
1162 OpenSubdiv::Osd::BufferDescriptor
const &duDesc,
1163 DST_BUFFER *dvBuffer,
1164 OpenSubdiv::Osd::BufferDescriptor
const &dvDesc,
1166 PATCHCOORD_BUFFER *patchCoords,
1167 PATCH_TABLE *patchTable)
const
1172 dstBuffer->BindVBO(),
1174 duBuffer->BindVBO(),
1176 dvBuffer->BindVBO(),
1179 patchCoords->BindVBO(),
1180 patchTable->GetPatchArrays(),
1181 patchTable->GetPatchIndexBuffer(),
1182 patchTable->GetPatchParamBuffer());
1237 template<
typename SRC_BUFFER,
1238 typename DST_BUFFER,
1239 typename PATCHCOORD_BUFFER,
1240 typename PATCH_TABLE>
1242 OpenSubdiv::Osd::BufferDescriptor
const &srcDesc,
1243 DST_BUFFER *dstBuffer,
1244 OpenSubdiv::Osd::BufferDescriptor
const &dstDesc,
1245 DST_BUFFER *duBuffer,
1246 OpenSubdiv::Osd::BufferDescriptor
const &duDesc,
1247 DST_BUFFER *dvBuffer,
1248 OpenSubdiv::Osd::BufferDescriptor
const &dvDesc,
1249 DST_BUFFER *duuBuffer,
1250 OpenSubdiv::Osd::BufferDescriptor
const &duuDesc,
1251 DST_BUFFER *duvBuffer,
1252 OpenSubdiv::Osd::BufferDescriptor
const &duvDesc,
1253 DST_BUFFER *dvvBuffer,
1254 OpenSubdiv::Osd::BufferDescriptor
const &dvvDesc,
1256 PATCHCOORD_BUFFER *patchCoords,
1257 PATCH_TABLE *patchTable)
const
1262 dstBuffer->BindVBO(),
1264 duBuffer->BindVBO(),
1266 dvBuffer->BindVBO(),
1268 duuBuffer->BindVBO(),
1270 duvBuffer->BindVBO(),
1272 dvvBuffer->BindVBO(),
1275 patchCoords->BindVBO(),
1276 patchTable->GetPatchArrays(),
1277 patchTable->GetPatchIndexBuffer(),
1278 patchTable->GetPatchParamBuffer());
1282 OpenSubdiv::Osd::BufferDescriptor
const &srcDesc,
1284 OpenSubdiv::Osd::BufferDescriptor
const &dstDesc,
1286 OpenSubdiv::Osd::BufferDescriptor
const &duDesc,
1288 OpenSubdiv::Osd::BufferDescriptor
const &dvDesc,
1290 GLuint patchCoordsBuffer,
1291 const OpenSubdiv::Osd::PatchArrayVector &patchArrays,
1292 GLuint patchIndexBuffer,
1293 GLuint patchParamsBuffer)
const;
1296 OpenSubdiv::Osd::BufferDescriptor
const &srcDesc,
1298 OpenSubdiv::Osd::BufferDescriptor
const &dstDesc,
1300 OpenSubdiv::Osd::BufferDescriptor
const &duDesc,
1302 OpenSubdiv::Osd::BufferDescriptor
const &dvDesc,
1304 OpenSubdiv::Osd::BufferDescriptor
const &duuDesc,
1306 OpenSubdiv::Osd::BufferDescriptor
const &duvDesc,
1308 OpenSubdiv::Osd::BufferDescriptor
const &dvvDesc,
1310 GLuint patchCoordsBuffer,
1311 const OpenSubdiv::Osd::PatchArrayVector &patchArrays,
1312 GLuint patchIndexBuffer,
1313 GLuint patchParamsBuffer)
const;
1347 template<
typename SRC_BUFFER,
1348 typename DST_BUFFER,
1349 typename PATCHCOORD_BUFFER,
1350 typename PATCH_TABLE>
1352 OpenSubdiv::Osd::BufferDescriptor
const &srcDesc,
1353 DST_BUFFER *dstBuffer,
1354 OpenSubdiv::Osd::BufferDescriptor
const &dstDesc,
1356 PATCHCOORD_BUFFER *patchCoords,
1357 PATCH_TABLE *patchTable,
1359 void *deviceContext =
NULL)
1363 return instance->EvalPatchesVarying(
1364 srcBuffer, srcDesc, dstBuffer, dstDesc, numPatchCoords, patchCoords, patchTable);
1368 (
void)deviceContext;
1371 OpenSubdiv::Osd::BufferDescriptor(),
1372 OpenSubdiv::Osd::BufferDescriptor());
1375 srcBuffer, srcDesc, dstBuffer, dstDesc, numPatchCoords, patchCoords, patchTable);
1407 template<
typename SRC_BUFFER,
1408 typename DST_BUFFER,
1409 typename PATCHCOORD_BUFFER,
1410 typename PATCH_TABLE>
1412 OpenSubdiv::Osd::BufferDescriptor
const &srcDesc,
1413 DST_BUFFER *dstBuffer,
1414 OpenSubdiv::Osd::BufferDescriptor
const &dstDesc,
1416 PATCHCOORD_BUFFER *patchCoords,
1417 PATCH_TABLE *patchTable)
const
1422 dstBuffer->BindVBO(),
1425 OpenSubdiv::Osd::BufferDescriptor(),
1427 OpenSubdiv::Osd::BufferDescriptor(),
1429 patchCoords->BindVBO(),
1430 patchTable->GetVaryingPatchArrays(),
1431 patchTable->GetVaryingPatchIndexBuffer(),
1432 patchTable->GetPatchParamBuffer());
1479 template<
typename SRC_BUFFER,
1480 typename DST_BUFFER,
1481 typename PATCHCOORD_BUFFER,
1482 typename PATCH_TABLE>
1484 OpenSubdiv::Osd::BufferDescriptor
const &srcDesc,
1485 DST_BUFFER *dstBuffer,
1486 OpenSubdiv::Osd::BufferDescriptor
const &dstDesc,
1487 DST_BUFFER *duBuffer,
1488 OpenSubdiv::Osd::BufferDescriptor
const &duDesc,
1489 DST_BUFFER *dvBuffer,
1490 OpenSubdiv::Osd::BufferDescriptor
const &dvDesc,
1492 PATCHCOORD_BUFFER *patchCoords,
1493 PATCH_TABLE *patchTable,
1495 void *deviceContext =
NULL)
1499 return instance->EvalPatchesVarying(srcBuffer,
1513 (
void)deviceContext;
1516 bool r =
instance->EvalPatchesVarying(srcBuffer,
1570 template<
typename SRC_BUFFER,
1571 typename DST_BUFFER,
1572 typename PATCHCOORD_BUFFER,
1573 typename PATCH_TABLE>
1575 OpenSubdiv::Osd::BufferDescriptor
const &srcDesc,
1576 DST_BUFFER *dstBuffer,
1577 OpenSubdiv::Osd::BufferDescriptor
const &dstDesc,
1578 DST_BUFFER *duBuffer,
1579 OpenSubdiv::Osd::BufferDescriptor
const &duDesc,
1580 DST_BUFFER *dvBuffer,
1581 OpenSubdiv::Osd::BufferDescriptor
const &dvDesc,
1583 PATCHCOORD_BUFFER *patchCoords,
1584 PATCH_TABLE *patchTable)
const
1589 dstBuffer->BindVBO(),
1591 duBuffer->BindVBO(),
1593 dvBuffer->BindVBO(),
1596 patchCoords->BindVBO(),
1597 patchTable->GetVaryingPatchArrays(),
1598 patchTable->GetVaryingPatchIndexBuffer(),
1599 patchTable->GetPatchParamBuffer());
1664 template<
typename SRC_BUFFER,
1665 typename DST_BUFFER,
1666 typename PATCHCOORD_BUFFER,
1667 typename PATCH_TABLE>
1669 OpenSubdiv::Osd::BufferDescriptor
const &srcDesc,
1670 DST_BUFFER *dstBuffer,
1671 OpenSubdiv::Osd::BufferDescriptor
const &dstDesc,
1672 DST_BUFFER *duBuffer,
1673 OpenSubdiv::Osd::BufferDescriptor
const &duDesc,
1674 DST_BUFFER *dvBuffer,
1675 OpenSubdiv::Osd::BufferDescriptor
const &dvDesc,
1676 DST_BUFFER *duuBuffer,
1677 OpenSubdiv::Osd::BufferDescriptor
const &duuDesc,
1678 DST_BUFFER *duvBuffer,
1679 OpenSubdiv::Osd::BufferDescriptor
const &duvDesc,
1680 DST_BUFFER *dvvBuffer,
1681 OpenSubdiv::Osd::BufferDescriptor
const &dvvDesc,
1683 PATCHCOORD_BUFFER *patchCoords,
1684 PATCH_TABLE *patchTable,
1686 void *deviceContext =
NULL)
1690 return instance->EvalPatchesVarying(srcBuffer,
1710 (
void)deviceContext;
1711 instance =
Create(srcDesc, dstDesc, duDesc, dvDesc, duuDesc, duvDesc, dvvDesc);
1713 bool r =
instance->EvalPatchesVarying(srcBuffer,
1791 template<
typename SRC_BUFFER,
1792 typename DST_BUFFER,
1793 typename PATCHCOORD_BUFFER,
1794 typename PATCH_TABLE>
1796 OpenSubdiv::Osd::BufferDescriptor
const &srcDesc,
1797 DST_BUFFER *dstBuffer,
1798 OpenSubdiv::Osd::BufferDescriptor
const &dstDesc,
1799 DST_BUFFER *duBuffer,
1800 OpenSubdiv::Osd::BufferDescriptor
const &duDesc,
1801 DST_BUFFER *dvBuffer,
1802 OpenSubdiv::Osd::BufferDescriptor
const &dvDesc,
1803 DST_BUFFER *duuBuffer,
1804 OpenSubdiv::Osd::BufferDescriptor
const &duuDesc,
1805 DST_BUFFER *duvBuffer,
1806 OpenSubdiv::Osd::BufferDescriptor
const &duvDesc,
1807 DST_BUFFER *dvvBuffer,
1808 OpenSubdiv::Osd::BufferDescriptor
const &dvvDesc,
1810 PATCHCOORD_BUFFER *patchCoords,
1811 PATCH_TABLE *patchTable)
const
1816 dstBuffer->BindVBO(),
1818 duBuffer->BindVBO(),
1820 dvBuffer->BindVBO(),
1822 duuBuffer->BindVBO(),
1824 duvBuffer->BindVBO(),
1826 dvvBuffer->BindVBO(),
1829 patchCoords->BindVBO(),
1830 patchTable->GetVaryingPatchArrays(),
1831 patchTable->GetVaryingPatchIndexBuffer(),
1832 patchTable->GetPatchParamBuffer());
1869 template<
typename SRC_BUFFER,
1870 typename DST_BUFFER,
1871 typename PATCHCOORD_BUFFER,
1872 typename PATCH_TABLE>
1874 OpenSubdiv::Osd::BufferDescriptor
const &srcDesc,
1875 DST_BUFFER *dstBuffer,
1876 OpenSubdiv::Osd::BufferDescriptor
const &dstDesc,
1878 PATCHCOORD_BUFFER *patchCoords,
1879 PATCH_TABLE *patchTable,
1882 void *deviceContext =
NULL)
1886 return instance->EvalPatchesFaceVarying(srcBuffer,
1897 (
void)deviceContext;
1900 OpenSubdiv::Osd::BufferDescriptor(),
1901 OpenSubdiv::Osd::BufferDescriptor());
1903 bool r =
instance->EvalPatchesFaceVarying(srcBuffer,
1944 template<
typename SRC_BUFFER,
1945 typename DST_BUFFER,
1946 typename PATCHCOORD_BUFFER,
1947 typename PATCH_TABLE>
1949 OpenSubdiv::Osd::BufferDescriptor
const &srcDesc,
1950 DST_BUFFER *dstBuffer,
1951 OpenSubdiv::Osd::BufferDescriptor
const &dstDesc,
1953 PATCHCOORD_BUFFER *patchCoords,
1954 PATCH_TABLE *patchTable,
1955 int fvarChannel = 0)
const
1960 dstBuffer->BindVBO(),
1963 OpenSubdiv::Osd::BufferDescriptor(),
1965 OpenSubdiv::Osd::BufferDescriptor(),
1967 patchCoords->BindVBO(),
1968 patchTable->GetFVarPatchArrays(fvarChannel),
1969 patchTable->GetFVarPatchIndexBuffer(fvarChannel),
1970 patchTable->GetFVarPatchParamBuffer(fvarChannel));
2019 template<
typename SRC_BUFFER,
2020 typename DST_BUFFER,
2021 typename PATCHCOORD_BUFFER,
2022 typename PATCH_TABLE>
2024 OpenSubdiv::Osd::BufferDescriptor
const &srcDesc,
2025 DST_BUFFER *dstBuffer,
2026 OpenSubdiv::Osd::BufferDescriptor
const &dstDesc,
2027 DST_BUFFER *duBuffer,
2028 OpenSubdiv::Osd::BufferDescriptor
const &duDesc,
2029 DST_BUFFER *dvBuffer,
2030 OpenSubdiv::Osd::BufferDescriptor
const &dvDesc,
2032 PATCHCOORD_BUFFER *patchCoords,
2033 PATCH_TABLE *patchTable,
2036 void *deviceContext =
NULL)
2040 return instance->EvalPatchesFaceVarying(srcBuffer,
2055 (
void)deviceContext;
2058 bool r =
instance->EvalPatchesFaceVarying(srcBuffer,
2115 template<
typename SRC_BUFFER,
2116 typename DST_BUFFER,
2117 typename PATCHCOORD_BUFFER,
2118 typename PATCH_TABLE>
2120 OpenSubdiv::Osd::BufferDescriptor
const &srcDesc,
2121 DST_BUFFER *dstBuffer,
2122 OpenSubdiv::Osd::BufferDescriptor
const &dstDesc,
2123 DST_BUFFER *duBuffer,
2124 OpenSubdiv::Osd::BufferDescriptor
const &duDesc,
2125 DST_BUFFER *dvBuffer,
2126 OpenSubdiv::Osd::BufferDescriptor
const &dvDesc,
2128 PATCHCOORD_BUFFER *patchCoords,
2129 PATCH_TABLE *patchTable,
2130 int fvarChannel = 0)
const
2135 dstBuffer->BindVBO(),
2137 duBuffer->BindVBO(),
2139 dvBuffer->BindVBO(),
2142 patchCoords->BindVBO(),
2143 patchTable->GetFVarPatchArrays(fvarChannel),
2144 patchTable->GetFVarPatchIndexBuffer(fvarChannel),
2145 patchTable->GetFVarPatchParamBuffer(fvarChannel));
2212 template<
typename SRC_BUFFER,
2213 typename DST_BUFFER,
2214 typename PATCHCOORD_BUFFER,
2215 typename PATCH_TABLE>
2217 OpenSubdiv::Osd::BufferDescriptor
const &srcDesc,
2218 DST_BUFFER *dstBuffer,
2219 OpenSubdiv::Osd::BufferDescriptor
const &dstDesc,
2220 DST_BUFFER *duBuffer,
2221 OpenSubdiv::Osd::BufferDescriptor
const &duDesc,
2222 DST_BUFFER *dvBuffer,
2223 OpenSubdiv::Osd::BufferDescriptor
const &dvDesc,
2224 DST_BUFFER *duuBuffer,
2225 OpenSubdiv::Osd::BufferDescriptor
const &duuDesc,
2226 DST_BUFFER *duvBuffer,
2227 OpenSubdiv::Osd::BufferDescriptor
const &duvDesc,
2228 DST_BUFFER *dvvBuffer,
2229 OpenSubdiv::Osd::BufferDescriptor
const &dvvDesc,
2231 PATCHCOORD_BUFFER *patchCoords,
2232 PATCH_TABLE *patchTable,
2235 void *deviceContext =
NULL)
2239 return instance->EvalPatchesFaceVarying(srcBuffer,
2260 (
void)deviceContext;
2261 instance =
Create(srcDesc, dstDesc, duDesc, dvDesc, duuDesc, duvDesc, dvvDesc);
2263 bool r =
instance->EvalPatchesFaceVarying(srcBuffer,
2344 template<
typename SRC_BUFFER,
2345 typename DST_BUFFER,
2346 typename PATCHCOORD_BUFFER,
2347 typename PATCH_TABLE>
2349 OpenSubdiv::Osd::BufferDescriptor
const &srcDesc,
2350 DST_BUFFER *dstBuffer,
2351 OpenSubdiv::Osd::BufferDescriptor
const &dstDesc,
2352 DST_BUFFER *duBuffer,
2353 OpenSubdiv::Osd::BufferDescriptor
const &duDesc,
2354 DST_BUFFER *dvBuffer,
2355 OpenSubdiv::Osd::BufferDescriptor
const &dvDesc,
2356 DST_BUFFER *duuBuffer,
2357 OpenSubdiv::Osd::BufferDescriptor
const &duuDesc,
2358 DST_BUFFER *duvBuffer,
2359 OpenSubdiv::Osd::BufferDescriptor
const &duvDesc,
2360 DST_BUFFER *dvvBuffer,
2361 OpenSubdiv::Osd::BufferDescriptor
const &dvvDesc,
2363 PATCHCOORD_BUFFER *patchCoords,
2364 PATCH_TABLE *patchTable,
2365 int fvarChannel = 0)
const
2370 dstBuffer->BindVBO(),
2372 duBuffer->BindVBO(),
2374 dvBuffer->BindVBO(),
2376 duuBuffer->BindVBO(),
2378 duvBuffer->BindVBO(),
2380 dvvBuffer->BindVBO(),
2383 patchCoords->BindVBO(),
2384 patchTable->GetFVarPatchArrays(fvarChannel),
2385 patchTable->GetFVarPatchIndexBuffer(fvarChannel),
2386 patchTable->GetFVarPatchParamBuffer(fvarChannel));
2398 OpenSubdiv::Osd::BufferDescriptor
const &srcDesc,
2399 OpenSubdiv::Osd::BufferDescriptor
const &dstDesc,
2400 OpenSubdiv::Osd::BufferDescriptor
const &duDesc = OpenSubdiv::Osd::BufferDescriptor(),
2401 OpenSubdiv::Osd::BufferDescriptor
const &dvDesc = OpenSubdiv::Osd::BufferDescriptor(),
2402 OpenSubdiv::Osd::BufferDescriptor
const &duuDesc = OpenSubdiv::Osd::BufferDescriptor(),
2403 OpenSubdiv::Osd::BufferDescriptor
const &duvDesc = OpenSubdiv::Osd::BufferDescriptor(),
2404 OpenSubdiv::Osd::BufferDescriptor
const &dvvDesc = OpenSubdiv::Osd::BufferDescriptor());
2410 struct _StencilKernel {
2413 bool Compile(OpenSubdiv::Osd::BufferDescriptor
const &srcDesc,
2414 OpenSubdiv::Osd::BufferDescriptor
const &dstDesc,
2415 OpenSubdiv::Osd::BufferDescriptor
const &duDesc,
2416 OpenSubdiv::Osd::BufferDescriptor
const &dvDesc,
2417 OpenSubdiv::Osd::BufferDescriptor
const &duuDesc,
2418 OpenSubdiv::Osd::BufferDescriptor
const &duvDesc,
2419 OpenSubdiv::Osd::BufferDescriptor
const &dvvDesc,
2422 GLuint uniformStart;
2424 GLuint uniformSrcOffset;
2425 GLuint uniformDstOffset;
2426 GLuint uniformDuDesc;
2427 GLuint uniformDvDesc;
2428 GLuint uniformDuuDesc;
2429 GLuint uniformDuvDesc;
2430 GLuint uniformDvvDesc;
2433 struct _PatchKernel {
2436 bool Compile(OpenSubdiv::Osd::BufferDescriptor
const &srcDesc,
2437 OpenSubdiv::Osd::BufferDescriptor
const &dstDesc,
2438 OpenSubdiv::Osd::BufferDescriptor
const &duDesc,
2439 OpenSubdiv::Osd::BufferDescriptor
const &dvDesc,
2440 OpenSubdiv::Osd::BufferDescriptor
const &duuDesc,
2441 OpenSubdiv::Osd::BufferDescriptor
const &duvDesc,
2442 OpenSubdiv::Osd::BufferDescriptor
const &dvvDesc,
2445 GLuint uniformSrcOffset;
2446 GLuint uniformDstOffset;
2447 GLuint uniformPatchArray;
2448 GLuint uniformDuDesc;
2449 GLuint uniformDvDesc;
2450 GLuint uniformDuuDesc;
2451 GLuint uniformDuvDesc;
2452 GLuint uniformDvvDesc;
2456 GLuint _patchArraysSSBO;
2458 int GetDispatchSize(
int count)
const;
2460 void DispatchCompute(
int totalDispatchSize)
const;
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble GLdouble r _GL_VOID_RET _GL_VOID GLfloat GLfloat r _GL_VOID_RET _GL_VOID GLint GLint r _GL_VOID_RET _GL_VOID GLshort GLshort r _GL_VOID_RET _GL_VOID GLdouble GLdouble r
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object instance
bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, OpenSubdiv::Osd::BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, OpenSubdiv::Osd::BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, OpenSubdiv::Osd::BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, OpenSubdiv::Osd::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, OpenSubdiv::Osd::BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, OpenSubdiv::Osd::BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, OpenSubdiv::Osd::BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, OpenSubdiv::Osd::BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, OpenSubdiv::Osd::BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, OpenSubdiv::Osd::BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, OpenSubdiv::Osd::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 EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, OpenSubdiv::Osd::BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, OpenSubdiv::Osd::BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, OpenSubdiv::Osd::BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, OpenSubdiv::Osd::BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, OpenSubdiv::Osd::BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, OpenSubdiv::Osd::BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, OpenSubdiv::Osd::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 EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, OpenSubdiv::Osd::BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, OpenSubdiv::Osd::BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, OpenSubdiv::Osd::BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, OpenSubdiv::Osd::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 EvalPatchesVarying(SRC_BUFFER *srcBuffer, OpenSubdiv::Osd::BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, OpenSubdiv::Osd::BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, OpenSubdiv::Osd::BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, OpenSubdiv::Osd::BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, OpenSubdiv::Osd::BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, OpenSubdiv::Osd::BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, OpenSubdiv::Osd::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 EvalPatchesVarying(SRC_BUFFER *srcBuffer, OpenSubdiv::Osd::BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, OpenSubdiv::Osd::BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, OpenSubdiv::Osd::BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, OpenSubdiv::Osd::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 GLComputeEvaluator * Create(OpenSubdiv::Osd::BufferDescriptor const &srcDesc, OpenSubdiv::Osd::BufferDescriptor const &dstDesc, OpenSubdiv::Osd::BufferDescriptor const &duDesc, OpenSubdiv::Osd::BufferDescriptor const &dvDesc, void *deviceContext=NULL)
bool EvalPatches(GLuint srcBuffer, OpenSubdiv::Osd::BufferDescriptor const &srcDesc, GLuint dstBuffer, OpenSubdiv::Osd::BufferDescriptor const &dstDesc, GLuint duBuffer, OpenSubdiv::Osd::BufferDescriptor const &duDesc, GLuint dvBuffer, OpenSubdiv::Osd::BufferDescriptor const &dvDesc, GLuint duuBuffer, OpenSubdiv::Osd::BufferDescriptor const &duuDesc, GLuint duvBuffer, OpenSubdiv::Osd::BufferDescriptor const &duvDesc, GLuint dvvBuffer, OpenSubdiv::Osd::BufferDescriptor const &dvvDesc, int numPatchCoords, GLuint patchCoordsBuffer, const OpenSubdiv::Osd::PatchArrayVector &patchArrays, GLuint patchIndexBuffer, GLuint patchParamsBuffer) const
bool EvalPatches(SRC_BUFFER *srcBuffer, OpenSubdiv::Osd::BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, OpenSubdiv::Osd::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 Compile(OpenSubdiv::Osd::BufferDescriptor const &srcDesc, OpenSubdiv::Osd::BufferDescriptor const &dstDesc, OpenSubdiv::Osd::BufferDescriptor const &duDesc=OpenSubdiv::Osd::BufferDescriptor(), OpenSubdiv::Osd::BufferDescriptor const &dvDesc=OpenSubdiv::Osd::BufferDescriptor(), OpenSubdiv::Osd::BufferDescriptor const &duuDesc=OpenSubdiv::Osd::BufferDescriptor(), OpenSubdiv::Osd::BufferDescriptor const &duvDesc=OpenSubdiv::Osd::BufferDescriptor(), OpenSubdiv::Osd::BufferDescriptor const &dvvDesc=OpenSubdiv::Osd::BufferDescriptor())
static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, OpenSubdiv::Osd::BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, OpenSubdiv::Osd::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 EvalStencils(SRC_BUFFER *srcBuffer, OpenSubdiv::Osd::BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, OpenSubdiv::Osd::BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, OpenSubdiv::Osd::BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, OpenSubdiv::Osd::BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, OpenSubdiv::Osd::BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, OpenSubdiv::Osd::BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, OpenSubdiv::Osd::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...
bool EvalPatches(GLuint srcBuffer, OpenSubdiv::Osd::BufferDescriptor const &srcDesc, GLuint dstBuffer, OpenSubdiv::Osd::BufferDescriptor const &dstDesc, GLuint duBuffer, OpenSubdiv::Osd::BufferDescriptor const &duDesc, GLuint dvBuffer, OpenSubdiv::Osd::BufferDescriptor const &dvDesc, int numPatchCoords, GLuint patchCoordsBuffer, const OpenSubdiv::Osd::PatchArrayVector &patchArrays, GLuint patchIndexBuffer, GLuint patchParamsBuffer) const
static GLComputeEvaluator * Create(OpenSubdiv::Osd::BufferDescriptor const &srcDesc, OpenSubdiv::Osd::BufferDescriptor const &dstDesc, OpenSubdiv::Osd::BufferDescriptor const &duDesc, OpenSubdiv::Osd::BufferDescriptor const &dvDesc, OpenSubdiv::Osd::BufferDescriptor const &duuDesc, OpenSubdiv::Osd::BufferDescriptor const &duvDesc, OpenSubdiv::Osd::BufferDescriptor const &dvvDesc, void *deviceContext=NULL)
bool EvalStencils(GLuint srcBuffer, OpenSubdiv::Osd::BufferDescriptor const &srcDesc, GLuint dstBuffer, OpenSubdiv::Osd::BufferDescriptor const &dstDesc, GLuint duBuffer, OpenSubdiv::Osd::BufferDescriptor const &duDesc, GLuint dvBuffer, OpenSubdiv::Osd::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...
bool EvalStencils(SRC_BUFFER *srcBuffer, OpenSubdiv::Osd::BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, OpenSubdiv::Osd::BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, OpenSubdiv::Osd::BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, OpenSubdiv::Osd::BufferDescriptor const &dvDesc, STENCIL_TABLE const *stencilTable) const
Generic stencil function.
static bool EvalPatches(SRC_BUFFER *srcBuffer, OpenSubdiv::Osd::BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, OpenSubdiv::Osd::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 EvalPatches(SRC_BUFFER *srcBuffer, OpenSubdiv::Osd::BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, OpenSubdiv::Osd::BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, OpenSubdiv::Osd::BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, OpenSubdiv::Osd::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 EvalStencils(SRC_BUFFER *srcBuffer, OpenSubdiv::Osd::BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, OpenSubdiv::Osd::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...
bool EvalStencils(SRC_BUFFER *srcBuffer, OpenSubdiv::Osd::BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, OpenSubdiv::Osd::BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, OpenSubdiv::Osd::BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, OpenSubdiv::Osd::BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, OpenSubdiv::Osd::BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, OpenSubdiv::Osd::BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, OpenSubdiv::Osd::BufferDescriptor const &dvvDesc, STENCIL_TABLE const *stencilTable) const
Generic stencil function.
static bool EvalStencils(SRC_BUFFER *srcBuffer, OpenSubdiv::Osd::BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, OpenSubdiv::Osd::BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, OpenSubdiv::Osd::BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, OpenSubdiv::Osd::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(SRC_BUFFER *srcBuffer, OpenSubdiv::Osd::BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, OpenSubdiv::Osd::BufferDescriptor const &dstDesc, STENCIL_TABLE const *stencilTable) const
Generic stencil function.
bool EvalPatches(SRC_BUFFER *srcBuffer, OpenSubdiv::Osd::BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, OpenSubdiv::Osd::BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, OpenSubdiv::Osd::BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, OpenSubdiv::Osd::BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, OpenSubdiv::Osd::BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, OpenSubdiv::Osd::BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, OpenSubdiv::Osd::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 void Synchronize(void *deviceContext)
Wait the dispatched kernel finishes.
static bool EvalPatches(SRC_BUFFER *srcBuffer, OpenSubdiv::Osd::BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, OpenSubdiv::Osd::BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, OpenSubdiv::Osd::BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, OpenSubdiv::Osd::BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, OpenSubdiv::Osd::BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, OpenSubdiv::Osd::BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, OpenSubdiv::Osd::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 ...
bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, OpenSubdiv::Osd::BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, OpenSubdiv::Osd::BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, OpenSubdiv::Osd::BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, OpenSubdiv::Osd::BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, OpenSubdiv::Osd::BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, OpenSubdiv::Osd::BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, OpenSubdiv::Osd::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 EvalStencils(GLuint srcBuffer, OpenSubdiv::Osd::BufferDescriptor const &srcDesc, GLuint dstBuffer, OpenSubdiv::Osd::BufferDescriptor const &dstDesc, GLuint duBuffer, OpenSubdiv::Osd::BufferDescriptor const &duDesc, GLuint dvBuffer, OpenSubdiv::Osd::BufferDescriptor const &dvDesc, GLuint duuBuffer, OpenSubdiv::Osd::BufferDescriptor const &duuDesc, GLuint duvBuffer, OpenSubdiv::Osd::BufferDescriptor const &duvDesc, GLuint dvvBuffer, OpenSubdiv::Osd::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 EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, OpenSubdiv::Osd::BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, OpenSubdiv::Osd::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 ...
static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, OpenSubdiv::Osd::BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, OpenSubdiv::Osd::BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, OpenSubdiv::Osd::BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, OpenSubdiv::Osd::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 ...
~GLComputeEvaluator()
Destructor. note that the GL context must be made current.
bool EvalPatches(SRC_BUFFER *srcBuffer, OpenSubdiv::Osd::BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, OpenSubdiv::Osd::BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, OpenSubdiv::Osd::BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, OpenSubdiv::Osd::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...
GLComputeEvaluator()
Constructor.
bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, OpenSubdiv::Osd::BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, OpenSubdiv::Osd::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 EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, OpenSubdiv::Osd::BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, OpenSubdiv::Osd::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 ...
GL stencil table (Shader Storage buffer)
static GLStencilTableSSBO * Create(OpenSubdiv::Far::StencilTable const *stencilTable, void *deviceContext=NULL)
GLuint GetIndicesBuffer() const
int GetNumStencils() const
GLuint GetDuvWeightsBuffer() const
GLuint GetDvvWeightsBuffer() const
GLStencilTableSSBO(OpenSubdiv::Far::LimitStencilTable const *limitStencilTable)
GLuint GetDuuWeightsBuffer() const
GLStencilTableSSBO(OpenSubdiv::Far::StencilTable const *stencilTable)
GLuint GetWeightsBuffer() const
GLuint GetDuWeightsBuffer() const
GLuint GetDvWeightsBuffer() const
GLuint GetOffsetsBuffer() const
GLuint GetSizesBuffer() const
static GLStencilTableSSBO * Create(OpenSubdiv::Far::LimitStencilTable const *limitStencilTable, void *deviceContext=NULL)
SyclQueue void void size_t num_bytes void