MCPcopy Create free account
hub / github.com/RenderKit/embree / derivHermite

Function derivHermite

tutorials/pathtracer/pathtracer_device.cpp:1022–1066  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1020}
1021
1022inline Vec3fa derivHermite(const ISPCHairSet* mesh, const unsigned int primID, const float u, const float time)
1023{
1024 Vec3fa p0, p1, t0, t1;
1025 const int i = mesh->hairs[primID].vertex;
1026
1027 if (mesh->numTimeSteps == 1)
1028 {
1029 p0 = mesh->positions[0][i+0];
1030 p1 = mesh->positions[0][i+1];
1031 t0 = mesh->tangents[0][i+0];
1032 t1 = mesh->tangents[0][i+1];
1033 }
1034 else
1035 {
1036 float f = mesh->numTimeSteps*time;
1037 int itime = clamp((int)floor(f),0,(int)mesh->numTimeSteps-2);
1038 float time1 = f-itime;
1039 float time0 = 1.0f-time1;
1040 const Vec3fa ap0 = mesh->positions[itime+0][i+0];
1041 const Vec3fa ap1 = mesh->positions[itime+0][i+1];
1042 const Vec3fa at0 = mesh->tangents[itime+0][i+0];
1043 const Vec3fa at1 = mesh->tangents[itime+0][i+1];
1044 const Vec3fa bp0 = mesh->positions[itime+1][i+0];
1045 const Vec3fa bp1 = mesh->positions[itime+1][i+1];
1046 const Vec3fa bt0 = mesh->tangents[itime+1][i+0];
1047 const Vec3fa bt1 = mesh->tangents[itime+1][i+1];
1048 p0 = time0*ap0 + time1*bp0;
1049 p1 = time0*ap1 + time1*bp1;
1050 t0 = time0*at0 + time1*bt0;
1051 t1 = time0*at1 + time1*bt1;
1052 }
1053 const Vec3fa p00 = p0;
1054 const Vec3fa p01 = p0+(1.0f/3.0f)*t0;
1055 const Vec3fa p02 = p1-(1.0f/3.0f)*t1;
1056 const Vec3fa p03 = p1;
1057
1058 const float u0 = 1.0f - u, u1 = u;
1059 const Vec3fa p10 = p00 * u0 + p01 * u1;
1060 const Vec3fa p11 = p01 * u0 + p02 * u1;
1061 const Vec3fa p12 = p02 * u0 + p03 * u1;
1062 const Vec3fa p20 = p10 * u0 + p11 * u1;
1063 const Vec3fa p21 = p11 * u0 + p12 * u1;
1064 //const Vec3fa p30 = p20 * u0 + p21 * u1;
1065 return Vec3fa(3.0f*(p21-p20));
1066}
1067
1068inline Vec3fa derivBSpline(const ISPCHairSet* mesh, const unsigned int primID, const float t, const float time)
1069{

Callers 1

postIntersectGeometryFunction · 0.85

Calls 3

clampFunction · 0.50
floorFunction · 0.50
Vec3faClass · 0.50

Tested by

no test coverage detected