Example #1
0
 unsigned int convertHairSet(ISPCHairSet* hair, RTCScene scene_out)
 {
   /* if more than a single timestep, mark object as dynamic */
   RTCGeometryFlags object_flags = hair->numTimeSteps > 1 ? RTC_GEOMETRY_DYNAMIC : RTC_GEOMETRY_STATIC;
   /* create object */
   unsigned int geomID = 0;
   switch (hair->basis) {
   case BEZIER_BASIS : geomID = rtcNewBezierHairGeometry (scene_out, object_flags, hair->numHairs, hair->numVertices, hair->numTimeSteps); break;
   case BSPLINE_BASIS: geomID = rtcNewBSplineHairGeometry (scene_out, object_flags, hair->numHairs, hair->numVertices, hair->numTimeSteps); break;
   default: assert(false);
   }
   /* generate vertex buffer */
   Vec3fa* vertices = (Vec3fa*) rtcMapBuffer(scene_out,geomID,RTC_VERTEX_BUFFER);
   for (size_t i=0;i<hair->numVertices;i++) vertices[i] = hair->positions[0][i];
   rtcUnmapBuffer(scene_out, geomID, RTC_VERTEX_BUFFER);
   /* set index buffer */
   rtcSetBuffer(scene_out,geomID,RTC_INDEX_BUFFER,hair->hairs,0,sizeof(ISPCHair));
   rtcSetTessellationRate(scene_out,geomID,(float)hair->tessellation_rate);
   return geomID;
 }
Example #2
0
 extern "C" void ispcSetTessellationRate (RTCScene hscene, unsigned geomID, float tessellationRate) {
   rtcSetTessellationRate(hscene,geomID,tessellationRate);
 }