1
1

Revert "Fix GPU subdivision: Crash on adding subdivision surface modifier"

The fix does not fix the case of shaders comming from the OpenSubdiv API.

This reverts commit f5191b8760.
This commit is contained in:
2022-04-20 20:56:56 +02:00
parent 8d2da45f98
commit 4a03c5acf9
2 changed files with 9 additions and 9 deletions

View File

@@ -329,10 +329,10 @@ void main()
int current = int(gl_GlobalInvocationID.x);
OsdPatchCoord coord = GetPatchCoord(current);
OsdPatchArray arr = GetPatchArray(coord.arrayIndex);
OsdPatchArray array = GetPatchArray(coord.arrayIndex);
OsdPatchParam param = GetPatchParam(coord.patchIndex);
int patchType = OsdPatchParamIsRegular(param) ? arr.regDesc : arr.desc;
int patchType = OsdPatchParamIsRegular(param) ? array.regDesc : array.desc;
float wP[20], wDu[20], wDv[20], wDuu[20], wDuv[20], wDvv[20];
int nPoints = OsdEvaluatePatchBasis(
@@ -346,7 +346,7 @@ void main()
clear(duv);
clear(dvv);
int indexBase = arr.indexBase + arr.stride * (coord.patchIndex - arr.primitiveIdBase);
int indexBase = array.indexBase + array.stride * (coord.patchIndex - array.primitiveIdBase);
for (int cv = 0; cv < nPoints; ++cv) {
int index = patchIndexBuffer[indexBase + cv];

View File

@@ -248,16 +248,16 @@ OsdPatchCoord GetPatchCoord(int face_index, float u, float v)
void evaluate_patches_limits(int patch_index, float u, float v, inout vec2 dst)
{
OsdPatchCoord coord = GetPatchCoord(patch_index, u, v);
OsdPatchArray arr = GetPatchArray(coord.arrayIndex);
OsdPatchArray array = GetPatchArray(coord.arrayIndex);
OsdPatchParam param = GetPatchParam(coord.patchIndex);
int patchType = OsdPatchParamIsRegular(param) ? arr.regDesc : arr.desc;
int patchType = OsdPatchParamIsRegular(param) ? array.regDesc : array.desc;
float wP[20], wDu[20], wDv[20], wDuu[20], wDuv[20], wDvv[20];
int nPoints = OsdEvaluatePatchBasis(
patchType, param, coord.s, coord.t, wP, wDu, wDv, wDuu, wDuv, wDvv);
int indexBase = arr.indexBase + arr.stride * (coord.patchIndex - arr.primitiveIdBase);
int indexBase = array.indexBase + array.stride * (coord.patchIndex - array.primitiveIdBase);
for (int cv = 0; cv < nPoints; ++cv) {
int index = patchIndexBuffer[indexBase + cv];
@@ -270,16 +270,16 @@ void evaluate_patches_limits(
int patch_index, float u, float v, inout vec3 dst, inout vec3 du, inout vec3 dv)
{
OsdPatchCoord coord = GetPatchCoord(patch_index, u, v);
OsdPatchArray arr = GetPatchArray(coord.arrayIndex);
OsdPatchArray array = GetPatchArray(coord.arrayIndex);
OsdPatchParam param = GetPatchParam(coord.patchIndex);
int patchType = OsdPatchParamIsRegular(param) ? arr.regDesc : arr.desc;
int patchType = OsdPatchParamIsRegular(param) ? array.regDesc : array.desc;
float wP[20], wDu[20], wDv[20], wDuu[20], wDuv[20], wDvv[20];
int nPoints = OsdEvaluatePatchBasis(
patchType, param, coord.s, coord.t, wP, wDu, wDv, wDuu, wDuv, wDvv);
int indexBase = arr.indexBase + arr.stride * (coord.patchIndex - arr.primitiveIdBase);
int indexBase = array.indexBase + array.stride * (coord.patchIndex - array.primitiveIdBase);
for (int cv = 0; cv < nPoints; ++cv) {
int index = patchIndexBuffer[indexBase + cv];