public PrimeEngine(RayFormat rayFormat, RayHitType hitType, RTPBufferType bufferType = RTPBufferType.Host, bool useCPU = false) { _rayFormat = rayFormat; _hitType = hitType; _bufferType = bufferType; _context = new PrimeContext(!useCPU); }
public static unsafe PrimeBuffer Create <T>(PrimeContext ctx, PrimeBufferDesc desc, T[] data) where T : struct { var dataToCopy = new Memory <T>(data); var data2Cpy = dataToCopy.Pin(); var dataLength = Unsafe.SizeOf <T>() * data.Length; var dataPtr = IntPtr.Zero; if (desc.Type == RTPBufferType.CudaLinear) { //CudaDriverApi.CudaCall(CudaDriverApi.cuMemAlloc(ref dataPtr, (uint) dataLength)); CudaRunTimeApi.CudaCall(CudaRunTimeApi.cudaMalloc(ref dataPtr, (uint)dataLength)); CudaRunTimeApi.CudaCall(CudaRunTimeApi.cudaMemcpy(dataPtr.ToPointer(), new IntPtr(data2Cpy.Pointer), (uint)dataLength, CudaMemCpyKind.cudaMemcpyHostToDevice)); // CudaDriverApi.CudaCall(CudaDriverApi.cuMemcpyHtoD(ref dataPtr, data2Cpy.Pointer, (uint) dataLength)); } else { dataPtr = Marshal.AllocHGlobal(dataLength); GC.AddMemoryPressure(dataLength); var span = new Span <T>(data); MemoryHelper.CopyFromManaged(ref span, dataPtr, (uint)data.Length); // Unsafe.Copy(dataPtr.ToPointer(), ref data); } data2Cpy.Dispose(); var buffer = new PrimeBuffer(ctx, desc, dataPtr) { size = dataLength }; return(buffer); }
public static PrimeBuffer Create <T>(PrimeContext ctx, PrimeBufferDesc desc, T[] data) { var h = GCHandle.Alloc(data, GCHandleType.Pinned); var span = new Span <T>(data); //MemoryHelper.CopyFromManaged(ref span, ); throw new NotImplementedException(); }
public PrimeModel(PrimeContext context) : base(context) { CheckError(PrimeApi.rtpModelCreate(context.InternalPtr, out InternalPtr)); }
public PrimeBuffer(PrimeContext context, PrimeBufferDesc fmt, IntPtr data) : base(context) { _dataPointer = data; CheckError(PrimeApi.rtpBufferDescCreate(context.InternalPtr, (RTPbufferformat)fmt.Format, (RTPbuffertype)fmt.Type, data, out InternalPtr)); }
protected OptixPrimeNode(PrimeContext context) { this.mContext = context; }
public PrimeQuery(PrimeContext context, PrimeModel model, QueryType queryType) : base(context) { _queryType = queryType; CheckError(PrimeApi.rtpQueryCreate(model.InternalPtr, (RTPquerytype)queryType, out InternalPtr)); }