If possible I would like to ask for your help in two issues:
(1)(i) While I set watertight option I have used the following bit to create my model, does this make sense? There are examples for C++ prime wrappers but for C-Style, I do wish to confirm:
RTPmodel model; CHK_PRIME(rtpModelCreate(context, &model)); // Watertight option??? const int builderMemoryMode = 0; //If I do not use 0 will it not be watertight? Is using 1 slow? CHK_PRIME(rtpModelSetBuilderParameter(model, RTP_BUILDER_PARAM_USE_CALLER_TRIANGLES,sizeof(int), &builderMemoryMode)); CHK_PRIME(rtpModelSetTriangles(model, indicesDesc, verticesDesc)); CHK_PRIME(rtpModelUpdate(model, 0)); // ... CHK_PRIME(rtpQuerySetCudaStream(query, rtStream)); // ... CHK_PRIME(rtpQueryExecute(query, RTP_QUERY_HINT_WATERTIGHT /* OR other hints */));
(1)(ii)Also if I use “0” instead of “1” in rtpModelSetBuilderParameter, will it still be watertight?
(2) Asking this question in CUDA forum may be more appropriate but this forum is quite more active, so please do forgive me if it is not the correct place to ask
(i) In order to limit my ray and shading buffer usage I am planning to use CUDA graphs (manually), should I call rtpQueryExecute in a host node or is there a better practice?
(ii) I do wish to update a state in host after executing the graph, would you guys recommend using cudaStreamAddCallback using the stream of graph or adding another host node at the end?