Intel® Embree Ray Tracing Kernels
Discussion forum on the open source ray tracing kernels for fast photo-realistic rendering on Intel® CPU(s)

tessellated subd with interpolated limit surface normals

Burr__Adam
Beginner
1,366 Views

Is it possible to interpolate the subd limit surface normals on the tessellated mesh? I know I can provide normals to the subd base mesh verts, but ideally I would like to interpolate the true limit surface normals if possible. Or if there is a better way to achieve this result please let me know, thanks.

0 Kudos
1 Solution
SvenW_Intel
Moderator
1,366 Views

No there is no way of doing this as the tessellated mesh is opaque to the user. Either you can use rtcInterpolate to calculate the smooth subdiv surface normal, or tessellate the subdivmesh yourself (e.g. through OpenSubDiv or using the Embree subdiv mesh and rtcInterpolate function) and then attach vertex normals.

View solution in original post

0 Kudos
3 Replies
Burr__Adam
Beginner
1,365 Views

Maybe I can do this with rtcSetGeometryDisplacementFunction? Ie, setup a vertex attribute buffer for the normals and write the geometric normal into it in the RTCDisplacementFunctionN? But it isn't obvious to me if the RTCDisplacementFunctionN can write anything other than the position.

0 Kudos
SvenW_Intel
Moderator
1,367 Views

No there is no way of doing this as the tessellated mesh is opaque to the user. Either you can use rtcInterpolate to calculate the smooth subdiv surface normal, or tessellate the subdivmesh yourself (e.g. through OpenSubDiv or using the Embree subdiv mesh and rtcInterpolate function) and then attach vertex normals.

0 Kudos
Burr__Adam
Beginner
1,365 Views

Thanks, I found the ENABLE_SMOOTH_NORMALS code in displacement_geometry, I'll try that method. Eventually I plan to switch to openSubdiv but it isn't the highest priority quite yet.

0 Kudos
Reply